Date: Sun, 29 Aug 2004 20:05:38 -0400 From: "Andrew H. Derbyshire" <ahd@kew.com> To: <freebsd-current@freebsd.org> Subject: PCI SIO devices hog interrupts, cause lock order problems Message-ID: <012301c48e25$14924180$84cba8c0@hh.kew.com>
index | next in thread | raw e-mail
[-- Attachment #1 --] Attached are two boot logs with sources as of today (Sunday 8/28/2004) with both the standard GENERIC kernel configuration and the generic kernel modified to include a single additional device, the PUC device. The system is a Dell GX300 Dual PIII/733 with PCI 3COM Ethernet, a 3COM internal modem, and 29160 SCSI. Basically, any PCI SIO device hogs its interrupt if the PUC device is not also in the kernel, and this causes real problems for any environment like mine where pulling the modem is not trivial. Does the distributed GENERIC kernel have room for the PUC device? Are there side effects that PUC should be excluded from GENERIC? As a bonus, there appears to be a bug with kernel locking exposed by the problem. With the stock generic kernel, the XL device reports it couldn't map the interrupt, and then a lock order reversal is reported. (See the attached log for the gory details). Suggestions? The machine is pure test mode now. I can test either CVS updated source or private patches. [-- Attachment #2 --] ahd@xena.hh.kew.com:/scratch/xena/obj/scratch/current/src/sys/GENERIC WARNING: WITNESS option enabled, expect reduced performance. Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel Pentium III (728.44-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x683 Stepping = 3 Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE> real memory = 1073340416 (1023 MB) avail memory = 1040789504 (992 MB) ACPI APIC Table: <DELL GX300 > FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs cpu0 (BSP): APIC ID: 0 cpu1 (AP): APIC ID: 1 ioapic0: Changing APIC ID to 2 ioapic0 <Version 2.0> irqs 0-23 on motherboard npx0: [FAST] npx0: <math processor> on motherboard npx0: INT 16 interface acpi0: <DELL GX300 > on motherboard acpi0: Power Button (fixed) Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0 cpu0: <ACPI CPU> on acpi0 cpu1: <ACPI CPU> on acpi0 pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0 pci0: <ACPI PCI bus> on pcib0 agp0: <Intel 82820 host to AGP bridge> mem 0xf0000000-0xf3ffffff at device 0.0 on pci0 pcib1: <PCI-PCI bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <display, VGA> at device 0.0 (no driver attached) pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0 pci2: <ACPI PCI bus> on pcib2 sio0: configured irq 18 not in bitmap of probed irqs 0x80 sio0: port may not be enabled sio0: <3COM PCI FaxModem> port 0xecf8-0xecff irq 18 at device 9.0 on pci2 sio0: moving to sio4 sio4: type 16550A ahc0: <Adaptec 29160N Ultra160 SCSI adapter> port 0xe800-0xe8ff mem 0xf8fff000-0xf8ffffff irq 19 at device 10.0 on pci2 ahc0: [GIANT-LOCKED] aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs pcib3: <PCI-PCI bridge> at device 11.0 on pci2 pci3: <PCI bus> on pcib3 ohci0: <NEC uPD 9210 USB controller> mem 0xfafff000-0xfaffffff irq 16 at device 8.0 on pci3 ohci0: [GIANT-LOCKED] usb0: OHCI version 1.0 usb0: <NEC uPD 9210 USB controller> on ohci0 usb0: USB revision 1.0 uhub0: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 3 ports with 3 removable, self powered ohci1: <NEC uPD 9210 USB controller> mem 0xfaffe000-0xfaffefff irq 17 at device 8.1 on pci3 ohci1: [GIANT-LOCKED] usb1: OHCI version 1.0 usb1: <NEC uPD 9210 USB controller> on ohci1 usb1: USB revision 1.0 uhub1: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub1: 2 ports with 2 removable, self powered pci3: <serial bus, USB> at device 8.2 (no driver attached) fwohci0: <Texas Instruments TSB43AB23> mem 0xfaff8000-0xfaffbfff,0xfaffd000-0xfaffd7ff irq 16 at device 12.0 on pci3 fwohci0: [GIANT-LOCKED] fwohci0: OHCI version 1.10 (ROM=1) fwohci0: No. of Isochronous channels is 4. fwohci0: EUI64 00:50:42:b5:c0:0c:f7:9d fwohci0: Phy 1394a available S400, 3 ports. fwohci0: Link S400, max_rec 2048 bytes. firewire0: <IEEE1394(FireWire) bus> on fwohci0 fwe0: <Ethernet over FireWire> on firewire0 if_fwe0: Fake Ethernet address: 02:50:42:0c:f7:9d fwe0: Ethernet address: 02:50:42:0c:f7:9d sbp0: <SBP-2/SCSI over FireWire> on firewire0 fwohci0: Initiate bus reset fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) firewire0: bus manager 0 (me) xl0: <3Com 3c905C-TX Fast Etherlink XL> port 0xec00-0xec7f mem 0xf8ffec00-0xf8ffec7f irq 18 at device 12.0 on pci2 xl0: couldn't map interrupt lock order reversal 1st 0xc24aa2dc xl0 (network driver) @ /scratch/current/src/sys/pci/if_xl.c:1695 2nd 0xc0ae0060 ACPI root bus (ACPI root bus) @ /scratch/current/src/sys/modules/acpi/acpi/../../../dev/acpica/acpi.c:841 KDB: stack backtrace: kdb_backtrace(c08b54f3,c0ae0060,c0ada063,c0ada063,c0ada468) at kdb_backtrace+0x2e witness_checkorder(c0ae0060,9,c0ada468,349,0) at witness_checkorder+0x6a6 _sx_xlock(c0ae0060,c0ada468,349,c0c217b8,c068f5c0) at _sx_xlock+0x7e acpi_release_resource(c22ee600,c23a2000,3,14,c23abe00) at acpi_release_resource+0x23 bus_generic_release_resource(c2293b80,c23a2000,3,14,c23abe00) at bus_generic_release_resource+0x82 resource_list_release(c23a3204,c23a3080,c23a2000,3,14) at resource_list_release+0x84 bus_generic_rl_release_resource(c23a3080,c23a2000,3,14,c23abe00) at bus_generic_rl_release_resource+0x86 bus_generic_release_resource(c23a2a80,c23a2000,3,14,c23abe00) at bus_generic_release_resource+0x82 resource_list_release(c23a3204,c23a2100,c23a2000,3,14) at resource_list_release+0x13b bus_generic_rl_release_resource(c23a2100,c23a2000,3,14,c23abe00) at bus_generic_rl_release_resource+0x86 bus_release_resource(c23a2000,3,14,c23abe00,3) at bus_release_resource+0x7f xl_detach(c23a2000,c08c55bc,c0c2198c,0,ffffffff) at xl_detach+0x189 xl_attach(c23a2000,c2339050,c08dd0d0,c23a2000,c23a2000) at xl_attach+0xfa1 device_attach(c23a2000,c23a2000,6,c22686c0,c23a2000) at device_attach+0x6a device_probe_and_attach(c23a2000,c23a2a80,c0c21a3c,c0ac8e6c,c23a2100) at device_probe_and_attach+0xe1 bus_generic_attach(c23a2100,6,c22686c0,1,c0ac8bf4) at bus_generic_attach+0x28 acpi_pci_attach(c23a2100,c23a2100,c233adc0,c23a2100,c23a2100) at acpi_pci_attach+0xec device_attach(c23a2100,c23a2100,2e697063,2e696370,c23a2100) at device_attach+0x6a device_probe_and_attach(c23a2100,c23a3080,c0c21ac0,c0ac8fc2,c23a2a80) at device_probe_and_attach+0xe1 bus_generic_attach(c23a2a80,c23a2a80,c23a7570,2,c0ac8839) at bus_generic_attach+0x28 acpi_pcib_attach(c23a2a80,c23a7570,2,c23a2a80,c22686c0) at acpi_pcib_attach+0x14e acpi_pcib_pci_attach(c23a2a80,c2370850,c08dd0d0,c23a2a80,c23a2a80) at acpi_pcib_pci_attach+0x88 device_attach(c23a2a80,c23a2a80,6,c2268800,c23a2a80) at device_attach+0x6a device_probe_and_attach(c23a2a80,c2293b80,c0c21b74,c0ac8e6c,c23a3080) at device_probe_and_attach+0xe1 bus_generic_attach(c23a3080,6,c2268800,1,c0ac8bf4) at bus_generic_attach+0x28 acpi_pci_attach(c23a3080,c2372050,c08dd0d0,c23a3080,c23a3080) at acpi_pci_attach+0xec device_attach(c23a3080,c23a3080,2e697063,2e696370,c23a3080) at device_attach+0x6a device_probe_and_attach(c23a3080,c22ee600,c0c21bf8,c0ac8fc2,c2293b80) at device_probe_and_attach+0xe1 bus_generic_attach(c2293b80,c2293b80,c22d5014,0,c0ac539d) at bus_generic_attach+0x28 acpi_pcib_attach(c2293b80,c22d5014,0,c08dd0d0,c2293b80) at acpi_pcib_attach+0x14e acpi_pcib_acpi_attach(c2293b80,c2371050,c08dd0d0,c2293b80,c2293b80) at acpi_pcib_acpi_attach+0x20a device_attach(c2293b80,c2293b80,c08dd0c0,c0adf5a8,c2293b80) at device_attach+0x6a device_probe_and_attach(c2293b80,4,c0c21c98,c0ac60eb,c22ee600) at device_probe_and_attach+0xe1 bus_generic_attach(c22ee600,c22ee600,c22782c0,1,c22ee580) at bus_generic_attach+0x28 acpi_probe_children(c22ee600,1013749,c22ee600,c22ee600,0) at acpi_probe_children+0x63 acpi_attach(c22ee600,c2375850,c08dd0d0,c22ee600,c22ee600) at acpi_attach+0x523 device_attach(c22ee600,c22ee600,c2332bf0,c0c21d08,c22ee600) at device_attach+0x6a device_probe_and_attach(c22ee600,c22ee780,c0c21d18,c083dc6a,c22ee780) at device_probe_and_attach+0xe1 bus_generic_attach(c22ee780,c22ee780,c0c21d38,c067e8fa,c22ee780) at bus_generic_attach+0x28 nexus_attach(c22ee780,c2354850,c08dd0d0,c22ee780,c22ee780) at nexus_attach+0x1a device_attach(c22ee780,c22ee780,c226aa84,c0947bd0,c22ee780) at device_attach+0x6a device_probe_and_attach(c22ee780,c226aa84,c0c21d80,c082ace9,c227c780) at device_probe_and_attach+0xe1 root_bus_configure(c227c780,c08d0cfc,0,c0c21d98,c0638e35) at root_bus_configure+0x28 configure(0,c1e000,c1ec00,c1e000,0) at configure+0x29 mi_startup() at mi_startup+0xb5 begin() at begin+0x2c device_attach: xl0 attach returned 6 isab0: <PCI-ISA bridge> at device 31.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <Intel ICH UDMA66 controller> port 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 31.1 on pci0 ata0: channel #0 on atapci0 ata1: channel #1 on atapci0 uhci0: <Intel 82801AA (ICH) USB controller> port 0xff80-0xff9f irq 19 at device 31.2 on pci0 uhci0: [GIANT-LOCKED] usb2: <Intel 82801AA (ICH) USB controller> on uhci0 usb2: USB revision 1.0 uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub2: 2 ports with 2 removable, self powered pci0: <serial bus, SMBus> at device 31.3 (no driver attached) pci0: <multimedia, audio> at device 31.5 (no driver attached) fdc0: <floppy drive controller> port 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on acpi0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model IntelliMouse, device ID 3 can't re-use a leaf (%desc)! can't re-use a leaf (%driver)! can't re-use a leaf (%location)! can't re-use a leaf (%pnpinfo)! can't re-use a leaf (%parent)! sio0 port 0x3f8-0x3ff irq 4 on acpi0 sio0: type 16550A sio1 port 0x2f8-0x2ff irq 3 on acpi0 sio1: type 16550A orm0: <ISA Option ROMs> at iomem 0xcf800-0xcffff,0xc9000-0xcf7ff,0xc0000-0xc8fff on isa0 pmtimer0 on isa0 ppc0: parallel port not found. sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 Timecounters tick every 10.000 msec ATAPI_RESET time = 30us acd0: DVDROM <ATAPI DVD-ROM 16X/422M> at ata0-master UDMA66 Waiting 15 seconds for SCSI devices to settle da0 at ahc0 bus 0 target 0 lun 0 da0: <SEAGATE ST336706LW 010A> Fixed Direct Access SCSI-3 device da0: 160.000MB/s transfers (80.000MHz, offset 63, 16bit), Tagged Queueing Enabled da0: 35003MB (71687370 512 byte sectors: 255H 63S/T 4462C) da1 at ahc0 bus 0 target 2 lun 0 da1: <QUANTUM ATLAS 10K 18WLS UCHQ> Fixed Direct Access SCSI-3 device da1: 160.000MB/s transfers (80.000MHz, offset 31, 16bit), Tagged Queueing Enabled da1: 17366MB (35566499 512 byte sectors: 255H 63S/T 2213C) SMP: AP CPU #1 Launched! Mounting root from ufs:/dev/da0s2a [-- Attachment #3 --] ahd@xena.hh.kew.com:/scratch/xena/obj/scratch/current/src/sys/GENERIC_PUC WARNING: WITNESS option enabled, expect reduced performance. Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel Pentium III (728.44-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x683 Stepping = 3 Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE> real memory = 1073340416 (1023 MB) avail memory = 1040789504 (992 MB) ACPI APIC Table: <DELL GX300 > FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs cpu0 (BSP): APIC ID: 0 cpu1 (AP): APIC ID: 1 ioapic0: Changing APIC ID to 2 ioapic0 <Version 2.0> irqs 0-23 on motherboard npx0: [FAST] npx0: <math processor> on motherboard npx0: INT 16 interface acpi0: <DELL GX300 > on motherboard acpi0: Power Button (fixed) Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0 cpu0: <ACPI CPU> on acpi0 cpu1: <ACPI CPU> on acpi0 pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0 pci0: <ACPI PCI bus> on pcib0 agp0: <Intel 82820 host to AGP bridge> mem 0xf0000000-0xf3ffffff at device 0.0 on pci0 pcib1: <PCI-PCI bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <display, VGA> at device 0.0 (no driver attached) pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0 pci2: <ACPI PCI bus> on pcib2 puc0: <US Robotics (3Com) 3CP5609 PCI 16550 Modem> port 0xecf8-0xecff irq 18 at device 9.0 on pci2 sio4: <US Robotics (3Com) 3CP5609 PCI 16550 Modem> on puc0 sio4: type 16550A sio4: unable to activate interrupt in fast mode - using normal mode ahc0: <Adaptec 29160N Ultra160 SCSI adapter> port 0xe800-0xe8ff mem 0xf8fff000-0xf8ffffff irq 19 at device 10.0 on pci2 ahc0: [GIANT-LOCKED] aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs pcib3: <PCI-PCI bridge> at device 11.0 on pci2 pci3: <PCI bus> on pcib3 ohci0: <NEC uPD 9210 USB controller> mem 0xfafff000-0xfaffffff irq 16 at device 8.0 on pci3 ohci0: [GIANT-LOCKED] usb0: OHCI version 1.0 usb0: <NEC uPD 9210 USB controller> on ohci0 usb0: USB revision 1.0 uhub0: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 3 ports with 3 removable, self powered ohci1: <NEC uPD 9210 USB controller> mem 0xfaffe000-0xfaffefff irq 17 at device 8.1 on pci3 ohci1: [GIANT-LOCKED] usb1: OHCI version 1.0 usb1: <NEC uPD 9210 USB controller> on ohci1 usb1: USB revision 1.0 uhub1: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub1: 2 ports with 2 removable, self powered pci3: <serial bus, USB> at device 8.2 (no driver attached) fwohci0: <Texas Instruments TSB43AB23> mem 0xfaff8000-0xfaffbfff,0xfaffd000-0xfaffd7ff irq 16 at device 12.0 on pci3 fwohci0: [GIANT-LOCKED] fwohci0: OHCI version 1.10 (ROM=1) fwohci0: No. of Isochronous channels is 4. fwohci0: EUI64 00:50:42:b5:c0:0c:f7:9d fwohci0: Phy 1394a available S400, 3 ports. fwohci0: Link S400, max_rec 2048 bytes. firewire0: <IEEE1394(FireWire) bus> on fwohci0 fwe0: <Ethernet over FireWire> on firewire0 if_fwe0: Fake Ethernet address: 02:50:42:0c:f7:9d fwe0: Ethernet address: 02:50:42:0c:f7:9d sbp0: <SBP-2/SCSI over FireWire> on firewire0 fwohci0: Initiate bus reset fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) firewire0: bus manager 0 (me) xl0: <3Com 3c905C-TX Fast Etherlink XL> port 0xec00-0xec7f mem 0xf8ffec00-0xf8ffec7f irq 18 at device 12.0 on pci2 miibus0: <MII bus> on xl0 xlphy0: <3c905C 10/100 internal PHY> on miibus0 xlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto xl0: Ethernet address: 00:b0:d0:2b:93:1e xl0: [GIANT-LOCKED] isab0: <PCI-ISA bridge> at device 31.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <Intel ICH UDMA66 controller> port 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 31.1 on pci0 ata0: channel #0 on atapci0 ata1: channel #1 on atapci0 uhci0: <Intel 82801AA (ICH) USB controller> port 0xff80-0xff9f irq 19 at device 31.2 on pci0 uhci0: [GIANT-LOCKED] usb2: <Intel 82801AA (ICH) USB controller> on uhci0 usb2: USB revision 1.0 uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub2: 2 ports with 2 removable, self powered pci0: <serial bus, SMBus> at device 31.3 (no driver attached) pci0: <multimedia, audio> at device 31.5 (no driver attached) fdc0: <floppy drive controller> port 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on acpi0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model IntelliMouse, device ID 3 sio0 port 0x3f8-0x3ff irq 4 on acpi0 sio0: type 16550A sio1 port 0x2f8-0x2ff irq 3 on acpi0 sio1: type 16550A orm0: <ISA Option ROMs> at iomem 0xcf800-0xcffff,0xc9000-0xcf7ff,0xc0000-0xc8fff on isa0 pmtimer0 on isa0 da0 at ahc0 bus 0 target 0 lun 0 ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabledhelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?012301c48e25$14924180$84cba8c0>
