>Synopsis: panic on boot during probe of wdc0 at isa0 >Category: kernel >Environment: System : OpenBSD 6.2 Details : OpenBSD 6.2-beta (GENERIC) #132: Fri Sep 15 22:31:00 MDT 2017 dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Architecture: OpenBSD.i386 Machine : i386 >Description: It seems that this commit broke wdc(4), or at least wdc0 at isa0: ======== CVSROOT: /cvs Module name: src Changes by: mi...@cvs.openbsd.org 2017/07/12 07:40:59 Modified files: sys/dev/ic : wdc.c wdcvar.h sys/dev/pci : pciide.c Log message: Introduce two quirks to prevent attaching ATA and ATAPI devices [...] ======== The kernel panics when trying to probe wdc: >> OpenBSD/i386 BOOT 3.31 boot> hd0a:/bsd.62 cannot open hd0a:/etc/random.seed: No such file or directory booting hd0a:/bsd.62: 8157496+2278404+161312+0+1093632 [672972+82+489424+501185]=0xcbe478 entry point at 0x2000d4 [ using 1664120 bytes of bsd ELF symbol table ] Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 6.2-beta (GENERIC) #132: Fri Sep 15 22:31:00 MDT 2017 dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC cpu0: Intel 486DX (486-class) real mem = 16138240 (15MB) avail mem = 1863680 (1MB) warning: no entropy supplied by boot loader mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: date 03/31/93 pcibios at bios0 function 0x1a not configured bios0: ROM list: 0xc8000/0x1000 0xc9000/0x1000 0xca000/0x2000 cpu0 at mainbus0: (uniprocessor) isa0 at mainbus0 isadma0 at isa0 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo com0: console pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 vga0 at isa0 port 0x3b0/48 iomem 0xa0000/131072 wsdisplay0 at vga0 mux 1: console (80x25, vt100 emulation), using wskbd0 wsdisplay0: screen 1-5 added (80x25, vt100 emulation) uvm_fault(0xd0d06da4, 0x0, 0, 1) -> e kernel: page fault trap, code=0 Stopped at wdcprobe+0x110: movzwl 0x40(%eax),%eax ddb> trace wdcprobe(d0ec1348) at wdcprobe+0x110 wdc_isa_probe(d0fd2000,d0fd3800,d0ec1b18) at wdc_isa_probe+0x95 isascan(d0fd2000,d0fd3800) at isascan+0x266 config_scan(d0855a10,d0fd2000) at config_scan+0x86 isaattach(d0fd10c0,d0fd2000,d0ec1eb8) at isaattach+0xcc config_attach(d0fd10c0,d0c11554,d0ec1eb8,d034af50) at config_attach+0x184 config_found_sm(d0fd10c0,d0ec1eb8,d034af50,0) at config_found_sm+0x29 mainbus_attach(0,d0fd10c0,0) at mainbus_attach+0x339 config_attach(0,d0c0faf4,0,0) at config_attach+0x184 config_rootfound(d0a13a74,0) at config_rootfound+0xc0 cpu_configure(0,ebf000,ece000,0,d02004ce) at cpu_configure+0x29 main(0,0,0,0,0) at main+0x478 ddb> ps PID TID PPID UID S FLAGS WAIT COMMAND * 0 0 -1 0 7 0x10200 swapper ddb> ======== >How-To-Repeat: Boot latest snapshot on hardware with an ISA-bus IDE controller, or with pciide disabled in UKC >Fix: Workaround: reverting sys/dev/ic/wdc.c to r1.131 restores operation: boot> hd0a:/bsd62.rd.test cannot open hd0a:/etc/random.seed: No such file or directory booting hd0a:/bsd62.rd.test: 3271740+1344512+3346032+0+454656 [370634+82+283040+276713]=0x8eb470 entry point at 0x2000d4 Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 6.2-beta (RAMDISK_CD) #2: Tue Sep 19 17:14:33 CDT 2017 and...@obsd-i386.vpr.int:/usr/src/sys/arch/i386/compile/RAMDISK_CD cpu0: Intel 486DX (486-class) real mem = 16183296 (15MB) avail mem = 6762496 (6MB) mainbus0 at root bios0 at mainbus0: date 03/31/93 pcibios at bios0 function 0x1a not configured bios0: ROM list: 0xc8000/0x1000 0xc9000/0x1000 0xca000/0x2000 cpu0 at mainbus0: (uniprocessor) isa0 at mainbus0 isadma0 at isa0 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo com0: console pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard vga0 at isa0 port 0x3b0/48 iomem 0xa0000/131072 wsdisplay0 at vga0 mux 1: console (80x25, vt100 emulation), using wskbd0 wdc0 at isa0 port 0x1f0/8 irq 14 wd0 at wdc0 channel 0 drive 0: <IBM-DARA-206000> wd0: 16-sector PIO, LBA, 5729MB, 11733120 sectors wd0(wdc0:0:0): using BIOS timings npx0 at isa0 port 0xf0/16 irq 13 pcic0 at isa0 port 0x3e0/2 iomem 0xd0000/16384 pcic0 controller 0: <Intel 82365SL rev 1> has sockets A and B pcic0 controller 1: <Intel 82365SL rev 1> has sockets A and B pcmcia0 at pcic0 controller 0 socket 0 pcmcia1 at pcic0 controller 0 socket 1 pcmcia2 at pcic0 controller 1 socket 0 ep1 at pcmcia2 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A" port 0x340/32, irq 3: address 00:10:4b:5f:20:c0 tqphy0 at ep1 phy 0: 78Q2120 10/100 PHY, rev. 3 pcmcia3 at pcic0 controller 1 socket 1 ep2 at pcmcia3 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A" port 0x300/32, irq 9: address 00:60:08:93:80:48 tqphy1 at ep2 phy 0: 78Q2120 10/100 PHY, rev. 3 pcic0: irq 5, polling enabled softraid0 at root scsibus0 at softraid0: 256 targets root on rd0a swap on rd0b dump on rd0b fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec erase ^?, werase ^W, kill ^U, intr ^C, status ^T Welcome to the OpenBSD/i386 6.2 installation program. (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? ======== You don't need ISA hardware to reproduce this -- if you have onboard pciide(4), disabling it with UKC will let wdc(4) take over: >> OpenBSD/i386 CDBOOT 3.28 boot> boot /6.2/i386/bsd -c cannot open cd0a:/etc/random.seed: No such file or directory booting cd0a:/6.2/i386/bsd: 8228740+2282500+164096+0+1093632 [675840+82+491200+502901]=0xcd2d50 entry point at 0x2000d4 [ using 1670480 bytes of bsd ELF symbol table ] Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 6.2-beta (GENERIC.MP) #138: Sat Sep 16 23:41:33 MDT 2017 dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC.MP cpu0: VIA C3 Ezra ("CentaurHauls" 686-class) 1 GHz cpu0: FPU,DE,TSC,MSR,MTRR,PGE,MMX,3DNOW real mem = 502747136 (479MB) avail mem = 479006720 (456MB) User Kernel Config UKC> disable pciide 110 pciide* disabled 111 pciide* disabled UKC> quit Continuing... mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: date 05/19/04, BIOS32 rev. 0 @ 0xfb210, SMBIOS rev. 2.2 @ 0xf0800 (26 entries) bios0: vendor Award Software International, Inc. version "6.00 PG" date 05/19/2004 bios0: VIA Technologies, Inc. VT8623-8235 acpi0 at bios0: rev 0 acpi0: sleep states S0 S1 S3 S4 S5 acpi0: tables DSDT FACP acpi0: wakeup devices PCI0(S5) USB0(S5) USB1(S5) USB2(S5) USB3(S3) USB4(S3) USB5(S3) USB6(S3) LAN0(S5) AC97(S5) MC97(S5) UAR1(S5) acpitimer0 at acpi0: 3579545 Hz, 24 bits acpiprt0 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0: !C3(@900 io@0x415), !C2(@90 io@0x414), C1(@1 halt!) acpibtn0 at acpi0: PWRB "PNP0700" at acpi0 not configured "PNP0400" at acpi0 not configured bios0: ROM list: 0xc0000/0xec00 0xd0000/0x8000! cpu0 at mainbus0: (uniprocessor) mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges pci0 at mainbus0 bus 0: configuration mode 1 (bios) pchb0 at pci0 dev 0 function 0 "VIA VT8623 PCI" rev 0x00 viaagp0 at pchb0: v2 agp0 at viaagp0: aperture at 0xd0000000, size 0x10000000 ppb0 at pci0 dev 1 function 0 "VIA VT8633 AGP" rev 0x00 pci1 at ppb0 bus 1 vga1 at pci1 dev 0 function 0 "VIA CLE266" rev 0x03 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) "VIA VT6306 FireWire" rev 0x80 at pci0 dev 13 function 0 not configured uhci0 at pci0 dev 16 function 0 "VIA VT83C572 USB" rev 0x80: irq 11 uhci1 at pci0 dev 16 function 1 "VIA VT83C572 USB" rev 0x80: irq 12 uhci2 at pci0 dev 16 function 2 "VIA VT83C572 USB" rev 0x80: irq 10 ehci0 at pci0 dev 16 function 3 "VIA VT6202 USB" rev 0x82: irq 5 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "VIA EHCI root hub" rev 2.00/1.00 addr 1 viapm0 at pci0 dev 17 function 0 "VIA VT8235 ISA" rev 0x00: SMI iic0 at viapm0 spdmem0 at iic0 addr 0x50: 512MB DDR SDRAM non-parity PC2100CL2.5 "VIA VT82C571 IDE" rev 0x06 at pci0 dev 17 function 1 not configured auvia0 at pci0 dev 17 function 5 "VIA VT8233 AC97" rev 0x50: irq 10 ac97: codec id 0x49434552 (ICEnsemble VIA VT1616i) ac97: codec features headphone, 18 bit DAC, 18 bit ADC, KS Waves 3D audio0 at auvia0 vr0 at pci0 dev 18 function 0 "VIA RhineII-2" rev 0x74: irq 11, address 00:40:63:c5:ee:69 ukphy0 at vr0 phy 1: Generic IEEE 802.3u media interface, rev. 5: OUI 0x004063, model 0x0032 usb1 at uhci0: USB revision 1.0 uhub1 at usb1 configuration 1 interface 0 "VIA UHCI root hub" rev 1.00/1.00 addr 1 usb2 at uhci1: USB revision 1.0 uhub2 at usb2 configuration 1 interface 0 "VIA UHCI root hub" rev 1.00/1.00 addr 1 usb3 at uhci2: USB revision 1.0 uhub3 at usb3 configuration 1 interface 0 "VIA UHCI root hub" rev 1.00/1.00 addr 1 isa0 at mainbus0 isadma0 at isa0 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com0: console com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbc0: unable to establish interrupt for irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard, using wsdisplay0 uvm_fault(0xd0c7e2a4, 0x0, 0, 1) -> e kernel: page fault trap, code=0 Stopped at wdcprobe+0x110: movzwl 0x40(%eax),%eax ddb{0}> trace wdcprobe(d0ed5348) at wdcprobe+0x110 wdc_isa_probe(d220e100,d2222000,d0ed5b18) at wdc_isa_probe+0x95 isascan(d220e100,d2222000) at isascan+0x266 config_scan(d05a64c0,d220e100) at config_scan+0x86 isaattach(d21c0100,d220e100,d0ed5eb8) at isaattach+0xcc config_attach(d21c0100,d0c0ef1c,d0ed5eb8,d09af960) at config_attach+0x194 config_found_sm(d21c0100,d0ed5eb8,d09af960,0) at config_found_sm+0x29 mainbus_attach(0,d21c0100,0) at mainbus_attach+0x33e config_attach(0,d0c0d4bc,0,0) at config_attach+0x194 config_rootfound(d0b39437,0) at config_rootfound+0xc0 cpu_configure(aa8aabc4,ed3000,ee2000,0,d02004ce) at cpu_configure+0x51 main(0,0,0,0,0) at main+0x4a7 ddb{0}> ======== Also reproducible on amd64, if you both enable wdc and disable pciide: ======== boot> hd0a:/bsd.62.amd64 -c booting hd0a:/bsd.62.amd64: 8450428+2544648+243008+0+671744 [658996+82+699360+482912]=0xd1fb90 entry point at 0x1000158 [ using 1842064 bytes of bsd ELF symbol table ] Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 6.2-beta (GENERIC) #103: Mon Sep 18 23:27:20 MDT 2017 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC real mem = 1056899072 (1007MB) avail mem = 1017982976 (970MB) User Kernel Config UKC> enable wdc 234 wdc* already enabled 252 wdc0 enabled 253 wdc1 enabled UKC> disable pciide 109 pciide* disabled 110 pciide* disabled UKC> quit Continuing... mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.5 @ 0xe1000 (10 entries) bios0: vendor innotek GmbH version "VirtualBox" date 12/01/2006 bios0: innotek GmbH VirtualBox acpi0 at bios0: rev 2 acpi0: sleep states S0 S5 acpi0: tables DSDT FACP APIC HPET MCFG SSDT acpi0: wakeup devices acpitimer0 at acpi0: 3579545 Hz, 32 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz, 4008.52 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,RDRAND,NXE,RDTSCP,LONG,LAHF,ABM,3DNOWP,ITSC,RDSEED,CLFLUSHOPT cpu0: 256KB 64b/line 8-way L2 cache cpu0: TSC frequency 4008518750 Hz cpu0: smt 0, core 0, package 0 mtrr: CPU supports MTRRs but not enabled by BIOS cpu0: apic clock running at 999MHz cpu at mainbus0: not configured ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins , remapped to apid 2 acpihpet0 at acpi0: 14318179 Hz acpimcfg0 at acpi0 addr 0xdc000000, bus 0-63 acpiprt0 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0: C1(@1 halt!) "PNP0F03" at acpi0 not configured acpiac0 at acpi0: AC unit online acpivideo0 at acpi0: GFX0 pci0 at mainbus0 bus 0 vga1 at pci0 dev 2 function 0 "InnoTek VirtualBox Graphics Adapter" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) virtio0 at pci0 dev 3 function 0 "Qumranet Virtio Network" rev 0x00 vio0 at virtio0: address 08:00:27:ba:11:77 virtio0: apic 2 int 19 "InnoTek VirtualBox Guest Service" rev 0x00 at pci0 dev 4 function 0 not configured auich0 at pci0 dev 5 function 0 "Intel 82801AA AC97" rev 0x01: apic 2 int 21, ICH ac97: codec id 0x83847600 (SigmaTel STAC9700) audio0 at auich0 piixpm0 at pci0 dev 7 function 0 "Intel 82371AB Power" rev 0x08: apic 2 int 23 iic0 at piixpm0 ppb0 at pci0 dev 24 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xf2 pci1 at ppb0 bus 1 ppb1 at pci0 dev 25 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xf2 pci2 at ppb1 bus 2 pcib0 at pci0 dev 31 function 0 "Intel 82801GBM LPC" rev 0x02 "Intel 82371AB IDE" rev 0x01 at pci0 dev 31 function 1 not configured ohci0 at pci0 dev 31 function 4 "Apple Intrepid USB" rev 0x00: apic 2 int 23, version 1.0 ehci0 at pci0 dev 31 function 5 "Intel 82801FB USB" rev 0x00: apic 2 int 23 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 isa0 at pcib0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com0: console pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 uvm_fault(0xffffffff81b16038, 0x60, 0, 1) -> e kernel: page fault trap, code=0 Stopped at wdcprobe+0x13e: movzwl 0x60(%rax),%eax ddb> trace wdcprobe(ffffffff81a85530,0,ffffffff81d268a0,0,10,ffffffff81d25fe0) at wdcprobe+0x13e wdc_isa_probe(ffffffff81a85530,ffff8000000fe800,ffff8000000fb400,ee487fc7fc5a75c,0,0) at wdc_isa_probe+0xb0 isascan(ffff8000000fb400,ffffffff813a6400,ffffffff81a81960,ffffffff81aa2201,ffffffff81a85530,ee487fc7fc5a75c) at isascan+0x288 config_scan(ffff800000080b80,ffffffff81d26ca0,ffff8000000fb424,ffffffff81aa22a8,ffff8000000fb400,ffff8000000fb448) at config_scan+0xb1 config_attach(ffff80000001a3e0,ffff800000014e00,ffff800000014e24,ffffffff81b36da0,ffff80000001a3a0,ffffffff811edea0) at config_attach+0x1d8 pcib_callback(ee487fc7fc5a75c,0,ffffffff81ab7420,ffffffff81957678,ffffffff81957548,ffffffff8191db81) at pcib_callback+0x4e config_process_deferred_children(ffff80000001b100,ffffffff81d26d88,ffffffff81a914c0,ffff800000014e00,ffffffff81535122,ffffffff81d26d00) at config_process_deferred_children+0x72 config_attach(0,ffff80000001b100,ffff80000001b124,ffffffff81a8eca8,ffffffff81d26d88,ffffffff810c7da0) at config_attach+0x1e0 mainbus_attach(0,ffff80000001b100,ee487fc7fc5a75c,0,0,0) at mainbus_attach+0x247 config_attach(ffffffff81d26e78,0,b28,ffffffff818338a0,ffffffff81a87c9a,0) at config_attach+0x1d8 config_rootfound(0,0,0,0,ffffffff81d20008,ee487fc7fc5a75c) at config_rootfound+0xe1 cpu_configure(0,ffffffff81d20008,ffffffff814c575a,ffffffff81d26ef0,0,0) at cpu_configure+0x1a main(0,ffffffff81d20008,0,0,ffffffff810c4e72,ffffffff81d26f20) at main+0x472 end trace frame: 0x0, count: -13 ddb> ======== Reverting wdc.c makes wdc0 at isa0 function properly in these "disable pciide" test cases as well.