Skip site navigation (1)Skip section navigation (2)
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 disabled
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?012301c48e25$14924180$84cba8c0>