>Synopsis:      recent RAMDISK_CD kernels fail to boot on some systems
>Category:      kernel
>Environment:
        System      : OpenBSD 5.6
        Details     : OpenBSD 5.6-current (GENERIC) #317: Wed Sep 10 17:49:59 
MDT 2014
                         
[email protected]:/usr/src/sys/arch/i386/compile/GENERIC

        Architecture: OpenBSD.i386
        Machine     : i386
>Description:
        -current RAMDISK_CD kernels have been failing to boot on a compaq
        pressario. the kernel never even reaches a point where it can panic.
        5.5-release works fine, and -current works on another system. i found
        a snapshot from 26 Jul that has the problem behaviour. the first dmesg
        below shows that -current GENERIC works on the problem system. later
        dmesgs show the problem & 'solution'.
>How-To-Repeat:
        just boot -current bsd.rd (on the right hardware)
>Fix:
        i found a partial (ugly) solution (patch at end, for what its worth)

more details are in the various dmesgs below.

dmesg (working system):
OpenBSD 5.6-current (GENERIC) #317: Wed Sep 10 17:49:59 MDT 2014
    [email protected]:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Intel(R) Celeron(R) CPU 2.80GHz ("GenuineIntel" 686-class) 2.81 GHz
cpu0: 
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,CNXT-ID,xTPR,PERF
real mem  = 527921152 (503MB)
avail mem = 506892288 (483MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 02/25/04, BIOS32 rev. 0 @ 0xfb940, SMBIOS 
rev. 2.3 @ 0xf0000 (40 entries)
bios0: vendor Phoenix Technologies, LTD version "3.08" date 02/25/2004
bios0: Compaq Presario 061 DW263A-ABA S7300CL NA510
acpi at bios0 function 0x0 not configured
mpbios0 at bios0: Intel MP Specification 1.4
cpu0 at mainbus0: apid 0 (boot processor)
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 100MHz
mpbios0: bus 0 is type PCI   
mpbios0: bus 1 is type PCI   
mpbios0: bus 2 is type ISA   
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
pcibios0 at bios0: rev 2.1 @ 0xf0000/0xdbb4
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfdae0/192 (10 entries)
pcibios0: PCI Exclusive IRQs: 3 5 9 10 11
pcibios0: PCI Interrupt Router at 000:31:0 ("Intel 82371SB ISA" rev 0x00)
pcibios0: PCI bus #1 is the last bus
bios0: ROM list: 0xc0000/0xb400 0xcc000/0x8000!
pci0 at mainbus0 bus 0: configuration mode 1 (bios)
pchb0 at pci0 dev 0 function 0 "Intel 82845G Host" rev 0x03
vga1 at pci0 dev 2 function 0 "Intel 82845G Video" rev 0x03
intagp0 at vga1
agp0 at intagp0: aperture at 0xd0000000, size 0x8000000
inteldrm0 at vga1
drm0 at inteldrm0
drm: applying pipe a force quirk
error: [drm:pid0:drm_edid_block_valid] *ERROR* EDID checksum is invalid, 
remainder is 130
Raw EDID:

00 ff ff ff ff ff ff 00  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
error: [drm:pid0:drm_edid_block_valid] *ERROR* EDID checksum is invalid, 
remainder is 130
Raw EDID:

00 ff ff ff ff ff ff 00  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
error: [drm:pid0:drm_edid_block_valid] *ERROR* EDID checksum is invalid, 
remainder is 130
Raw EDID:

00 ff ff ff ff ff ff 00  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
error: [drm:pid0:drm_edid_block_valid] *ERROR* EDID checksum is invalid, 
remainder is 130
Raw EDID:

00 ff ff ff ff ff ff 00  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff 
VGA-1: EDID block 0 invalid.
inteldrm0: 1024x768
wsdisplay0 at vga1 mux 1: console (std, vt100 emulation)
wsdisplay0: screen 1-5 added (std, vt100 emulation)
uhci0 at pci0 dev 29 function 0 "Intel 82801DB USB" rev 0x02: apic 2 int 16
uhci1 at pci0 dev 29 function 1 "Intel 82801DB USB" rev 0x02: apic 2 int 19
uhci2 at pci0 dev 29 function 2 "Intel 82801DB USB" rev 0x02: apic 2 int 18
ehci0 at pci0 dev 29 function 7 "Intel 82801DB USB" rev 0x02: apic 2 int 23
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
ppb0 at pci0 dev 30 function 0 "Intel 82801BA Hub-to-PCI" rev 0x82
pci_intr_map: bus 0 dev 30 func 0 pin 1; line 5
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 2; line 3
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 3; line 9
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 4; line 11
pci_intr_map: no MP mapping found
pci1 at ppb0 bus 1
fxp0 at pci1 dev 9 function 0 "Intel 8255x" rev 0x05, i82558: apic 2 int 21, 
address 00:90:27:1a:2b:80
inphy0 at fxp0 phy 1: i82555 10/100 PHY, rev. 0
rl0 at pci1 dev 12 function 0 "Realtek 8139" rev 0x10: apic 2 int 23, address 
00:0c:76:e0:e9:bd
rlphy0 at rl0 phy 0: RTL internal PHY
ichpcib0 at pci0 dev 31 function 0 "Intel 82801DB LPC" rev 0x02: 24-bit timer 
at 3579545Hz
pciide0 at pci0 dev 31 function 1 "Intel 82801DB IDE" rev 0x02: DMA, channel 0 
configured to compatibility, channel 1 configured to compatibility
wd0 at pciide0 channel 0 drive 0: 
wd0: 16-sector PIO, LBA48, 
wd1 at pciide0 channel 0 drive 1: 
wd1: 16-sector PIO, LBA, 
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5
wd1(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 5
wd2 at pciide0 channel 1 drive 0: 
wd2: 16-sector PIO, LBA, 
atapiscsi0 at pciide0 channel 1 drive 1
scsibus1 at atapiscsi0: 2 targets
cd0 at scsibus1 targ 0 lun 0: <HP, DVD Writer 630c, AH26> ATAPI 5/cdrom 
removable
wd2(pciide0:1:0): using PIO mode 0, DMA mode 1
cd0(pciide0:1:1): using PIO mode 4, Ultra-DMA mode 2
ichiic0 at pci0 dev 31 function 3 "Intel 82801DB SMBus" rev 0x02: apic 2 int 17
iic0 at ichiic0
iic0: addr 0x2f 00=01 01=07 02=01 03=00 04=07 05=00 06=08 07=00 14=14 15=62 
16=03 17=02 words 00=01ff 01=07ff 02=01ff 03=00ff 04=07ff 05=00ff 06=08ff 
07=00ff
spdmem0 at iic0 addr 0x50: 512MB DDR SDRAM non-parity PC2700CL2.5
auich0 at pci0 dev 31 function 5 "Intel 82801DB AC97" rev 0x02: apic 2 int 17, 
ICH4 AC97
ac97: codec id 0x414c4780 (Avance Logic ALC658 rev 0)
ac97: codec features 20 bit DAC, 18 bit ADC, No 3D Stereo
audio0 at auich0
usb1 at uhci0: USB revision 1.0
uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb2 at uhci1: USB revision 1.0
uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb3 at uhci2: USB revision 1.0
uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
isa0 at ichpcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
lpt0 at isa0 port 0x378/4 irq 7
wbsio0 at isa0 port 0x2e/2: W83627THF rev 0x83
lm1 at wbsio0 port 0x290/8: W83627THF
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 2.88MB 80 cyl, 2 head, 36 sec
vscsi0 at root
scsibus3 at vscsi0: 256 targets
softraid0 at root
scsibus4 at softraid0: 256 targets
sd1 at scsibus4 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed
sd1: 38161MB, 512 bytes/sector, 78155633 sectors
root on sd1a (516e5d9810b12925.a) swap on sd1b dump on sd1b

usbdevs:
Controller /dev/usb0:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), 
Intel(0x8086), rev 1.00
 port 1 powered
 port 2 powered
 port 3 powered
 port 4 powered
 port 5 powered
 port 6 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x8086), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x8086), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb3:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), 
Intel(0x8086), rev 1.00
 port 1 powered
 port 2 powered


dmesg (problem kernel):
OpenBSD 5.6-beta (RAMDISK_CD) #239: Fri Jul 25 11:56:02 MDT 2014
    [email protected]:/usr/src/sys/arch/i386/compile/RAMDISK_CD
cpu0: Intel(R) Celeron(R) CPU 2.80GHz ("GenuineIntel" 686-class) 2.81 GHz
cpu0: 
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,CNXT-ID,xTPR,PERF
real mem  = 527953920 (503MB)
avail mem = 511660032 (487MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 02/25/04, BIOS32 rev. 0 @ 0xfb940, SMBIOS 
rev. 2.3 @ 0xf0000 (40 entries)
bios0: vendor Phoenix Technologies, LTD version "3.08" date 02/25/2004
bios0: Compaq Presario 061 DW263A-ABA S7300CL NA510
acpi at bios0 function 0x0 not configured
mpbios0 at bios0: Intel MP Specification 1.4
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: apic clock running at 100MHz
mpbios0: bus 0 is type PCI   
mpbios0: bus 1 is type PCI   
mpbios0: bus 2 is type ISA   
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
panic: bus_space_map: bad bus space tag

The operating system has halted.
Please press any key to reboot.


well, i tried to track it down, and found it was in sys/arch/i386/pci. i placed
some printf()s before every bus_space_map() and rebuilt, and found the error
was occuring in a call to piix_init(). more tracing led to pci_intr_fixup.c,
where i placed some more printf()s. strangely, one of them solved the problem
(see string 'DEBUG' in dmesg below).


dmesg of a working RAMDISK_CD kernel, with a printf("DEBUG ..."):
OpenBSD 5.6-current (RAMDISK_CD) #2: Fri Sep 26 08:59:33 EDT 2014
    root@node02:/usr/src/sys/arch/i386/compile/RAMDISK_CD
cpu0: Intel(R) Celeron(R) CPU 2.80GHz ("GenuineIntel" 686-class) 2.81 GHz
cpu0: 
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,CNXT-ID,xTPR,PERF
real mem  = 527953920 (503MB)
avail mem = 511668224 (487MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 02/25/04, BIOS32 rev. 0 @ 0xfb940, SMBIOS 
rev. 2.3 @ 0xf0000 (40 entries)
bios0: vendor Phoenix Technologies, LTD version "3.08" date 02/25/2004
bios0: Compaq Presario 061 DW263A-ABA S7300CL NA510
acpi at bios0 function 0x0 not configured
mpbios0 at bios0: Intel MP Specification 1.4
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: apic clock running at 100MHz
mpbios0: bus 0 is type PCI   
mpbios0: bus 1 is type PCI   
mpbios0: bus 2 is type ISA   
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
pcibios0 at bios0: rev 2.1 @ 0xf0000/0xdbb4
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfdae0/192 (10 entries)
pcibios0: PCI Exclusive IRQs: 3 5 9 10 11
pcibios0: PCI Interrupt Router at 000:31:0 ("Intel 82371SB ISA" rev 0x00)
DEBUG pci_intr_fixup() - init pci icu (pre)
pcibios0: PCI bus #1 is the last bus
bios0: ROM list: 0xc0000/0xb400 0xcc000/0x8000!
pci0 at mainbus0 bus 0: configuration mode 1 (bios)
pchb0 at pci0 dev 0 function 0 "Intel 82845G Host" rev 0x03
vga1 at pci0 dev 2 function 0 "Intel 82845G Video" rev 0x03
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
uhci0 at pci0 dev 29 function 0 "Intel 82801DB USB" rev 0x02: apic 2 int 16
uhci1 at pci0 dev 29 function 1 "Intel 82801DB USB" rev 0x02: apic 2 int 19
uhci2 at pci0 dev 29 function 2 "Intel 82801DB USB" rev 0x02: apic 2 int 18
ehci0 at pci0 dev 29 function 7 "Intel 82801DB USB" rev 0x02: apic 2 int 23
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
ppb0 at pci0 dev 30 function 0 "Intel 82801BA Hub-to-PCI" rev 0x82
pci_intr_map: bus 0 dev 30 func 0 pin 1; line 5
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 2; line 3
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 3; line 9
pci_intr_map: no MP mapping found
pci_intr_map: bus 0 dev 30 func 0 pin 4; line 11
pci_intr_map: no MP mapping found
pci1 at ppb0 bus 1
fxp0 at pci1 dev 9 function 0 "Intel 8255x" rev 0x05, i82558: apic 2 int 21, 
address 00:90:27:1a:2b:80
inphy0 at fxp0 phy 1: i82555 10/100 PHY, rev. 0
rl0 at pci1 dev 12 function 0 "Realtek 8139" rev 0x10: apic 2 int 23, address 
00:0c:76:e0:e9:bd
rlphy0 at rl0 phy 0: RTL internal PHY
pcib0 at pci0 dev 31 function 0 "Intel 82801DB LPC" rev 0x02
pciide0 at pci0 dev 31 function 1 "Intel 82801DB IDE" rev 0x02: DMA, channel 0 
configured to compatibility, channel 1 configured to compatibility
wd0 at pciide0 channel 0 drive 0: 
wd0: 16-sector PIO, LBA48, 
wd1 at pciide0 channel 0 drive 1: 
wd1: 16-sector PIO, LBA, 
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5
wd1(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 5
wd2 at pciide0 channel 1 drive 0: 
wd2: 16-sector PIO, LBA, 
atapiscsi0 at pciide0 channel 1 drive 1
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <HP, DVD Writer 630c, AH26> ATAPI 5/cdrom 
removable
wd2(pciide0:1:0): using PIO mode 0, DMA mode 1
cd0(pciide0:1:1): using PIO mode 4, Ultra-DMA mode 2
"Intel 82801DB SMBus" rev 0x02 at pci0 dev 31 function 3 not configured
"Intel 82801DB AC97" rev 0x02 at pci0 dev 31 function 5 not configured
usb1 at uhci0: USB revision 1.0
uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb2 at uhci1: USB revision 1.0
uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb3 at uhci2: USB revision 1.0
uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 2.88MB 80 cyl, 2 head, 36 sec
softraid0 at root
scsibus2 at softraid0: 256 targets
root on rd0a swap on rd0b dump on rd0b
syncing disks... done
rebooting...

i rebuilt multiple times, with and without. this one statement seems to be
the particular one to affect it. i deleted the other printf()s, just one
mattered (the one right before the piix_init() call).

patch for /usr/src/sys/arch/i386/pci/pci_intr_fixup.c

--- pci_intr_fixup.c.orig       Sun Dec  7 09:33:26 2008
+++ pci_intr_fixup.c    Fri Sep 26 08:47:22 2014
@@ -860,6 +860,10 @@ pci_intr_fixup(struct pcibios_softc *sc, pci_chipset_t
        /*
         * Initialize the PCI ICU.
         */
+
+       /* TEST */
+       printf("DEBUG pci_intr_fixup() - init pci icu (pre)\n");
+
        if ((*piit->piit_init)(pc, iot, icutag, &pciintr_icu_tag,
            &pciintr_icu_handle) != 0)
                return (-1);            /* non-fatal */


just this one statement. one before it and one after it had no effect.

i think i am out of my depth now. there is something more internal going on
(why should printf() fix it?)

Reply via email to