From owner-freebsd-current@FreeBSD.ORG Mon Aug 30 00:05:46 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3B31516A4CE for ; Mon, 30 Aug 2004 00:05:46 +0000 (GMT) Received: from shub-internet.kew.com (h00062574bf3c.ne.client2.attbi.com [66.30.223.61]) by mx1.FreeBSD.org (Postfix) with ESMTP id E85EF43D31 for ; Mon, 30 Aug 2004 00:05:44 +0000 (GMT) (envelope-from ahd@kew.com) Received: by shub-internet.kew.com (Postfix, from userid 1015) id 5095712352; Sun, 29 Aug 2004 20:05:44 -0400 (EDT) Received: from kendra (kendra.hh.kew.com [192.168.203.132]) by shub-internet.kew.com (Postfix) with ESMTP id 51580122A7 for ; Sun, 29 Aug 2004 20:05:41 -0400 (EDT) From: "Andrew H. Derbyshire" To: Date: Sun, 29 Aug 2004 20:05:38 -0400 Organization: Kendra Electronic Wonderworks, Stoneham, MA (http://www.kew.com) Message-ID: <012301c48e25$14924180$84cba8c0@hh.kew.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0124_01C48E03.8D80A180" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Importance: Normal X-Mailman-Approved-At: Mon, 30 Aug 2004 11:38:41 +0000 Subject: PCI SIO devices hog interrupts, cause lock order problems X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Aug 2004 00:05:46 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0124_01C48E03.8D80A180 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable 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. =20 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. ------=_NextPart_000_0124_01C48E03.8D80A180 Content-Type: application/octet-stream; name="generic.log" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="generic.log" 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 =3D "GenuineIntel" Id =3D 0x683 Stepping =3D 3 Features=3D0x383fbff real memory =3D 1073340416 (1023 MB) avail memory =3D 1040789504 (992 MB) ACPI APIC Table: FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs cpu0 (BSP): APIC ID: 0 cpu1 (AP): APIC ID: 1 ioapic0: Changing APIC ID to 2 ioapic0 irqs 0-23 on motherboard npx0: [FAST] npx0: on motherboard npx0: INT 16 interface acpi0: 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: on acpi0 cpu1: on acpi0 pcib0: port 0xcf8-0xcff on acpi0 pci0: on pcib0 agp0: mem 0xf0000000-0xf3ffffff at = device 0.0 on pci0 pcib1: at device 1.0 on pci0 pci1: on pcib1 pci1: at device 0.0 (no driver attached) pcib2: at device 30.0 on pci0 pci2: 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: port 0xe800-0xe8ff mem = 0xf8fff000-0xf8ffffff irq 19 at device 10.0 on pci2 ahc0: [GIANT-LOCKED] aic7892: Ultra160 Wide Channel A, SCSI Id=3D7, 32/253 SCBs pcib3: at device 11.0 on pci2 pci3: on pcib3 ohci0: mem 0xfafff000-0xfaffffff irq 16 at = device 8.0 on pci3 ohci0: [GIANT-LOCKED] usb0: OHCI version 1.0 usb0: 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: mem 0xfaffe000-0xfaffefff irq 17 at = device 8.1 on pci3 ohci1: [GIANT-LOCKED] usb1: OHCI version 1.0 usb1: 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: at device 8.2 (no driver attached) fwohci0: mem = 0xfaff8000-0xfaffbfff,0xfaffd000-0xfaffd7ff irq 16 at device 12.0 on = pci3 fwohci0: [GIANT-LOCKED] fwohci0: OHCI version 1.10 (ROM=3D1) 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: on fwohci0 fwe0: on firewire0 if_fwe0: Fake Ethernet address: 02:50:42:0c:f7:9d fwe0: Ethernet address: 02:50:42:0c:f7:9d sbp0: on firewire0 fwohci0: Initiate bus reset fwohci0: node_id=3D0xc800ffc0, gen=3D1, CYCLEMASTER mode firewire0: 1 nodes, maxhop <=3D 0, cable IRM =3D 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: at device 31.0 on pci0 isa0: on isab0 atapci0: 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: port 0xff80-0xff9f irq 19 at = device 31.2 on pci0 uhci0: [GIANT-LOCKED] usb2: 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: at device 31.3 (no driver attached) pci0: at device 31.5 (no driver attached) fdc0: 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: port 0x64,0x60 irq 1 on acpi0 atkbd0: flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: 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: at iomem = 0xcf800-0xcffff,0xc9000-0xcf7ff,0xc0000-0xc8fff on isa0 pmtimer0 on isa0 ppc0: parallel port not found. sc0: at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=3D0x300> vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on = isa0 Timecounters tick every 10.000 msec ATAPI_RESET time =3D 30us acd0: DVDROM at ata0-master UDMA66 Waiting 15 seconds for SCSI devices to settle da0 at ahc0 bus 0 target 0 lun 0 da0: 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: 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 ------=_NextPart_000_0124_01C48E03.8D80A180 Content-Type: application/octet-stream; name="generic_puc.log" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="generic_puc.log" ahd@xena.hh.kew.com:/scratch/xena/obj/scratch/current/src/sys/GENERIC_PUC= =0DWARNING: WITNESS option enabled, expect reduced = performance.=0DTimecounter "i8254" frequency 1193182 Hz quality 0=0DCPU: = Intel Pentium III (728.44-MHz 686-class CPU)=0DOrigin =3D "GenuineIntel" = Id =3D 0x683 Stepping =3D = 3=0DFeatures=3D0x383fbff=0Dreal memory =3D 1073340416 = (1023 MB)=0Davail memory =3D 1040789504 (992 MB)=0DACPI APIC Table: = =0DFreeBSD/SMP: Multiprocessor System Detected: 2 = CPUs=0Dcpu0 (BSP): APIC ID: 0=0Dcpu1 (AP): APIC ID: 1=0Dioapic0: = Changing APIC ID to 2=0Dioapic0 irqs 0-23 on = motherboard=0Dnpx0: [FAST]=0Dnpx0: on = motherboard=0Dnpx0: INT 16 interface=0Dacpi0: on = motherboard=0Dacpi0: Power Button (fixed)=0DTimecounter "ACPI-fast" = frequency 3579545 Hz quality 1000=0Dacpi_timer0: <24-bit timer at = 3.579545MHz> port 0x808-0x80b on acpi0=0Dcpu0: on = acpi0=0Dcpu1: on acpi0=0Dpcib0: port = 0xcf8-0xcff on acpi0=0Dpci0: on pcib0=0Dagp0: mem 0xf0000000-0xf3ffffff at device 0.0 on = pci0=0Dpcib1: at device 1.0 on pci0=0Dpci1: = on pcib1=0Dpci1: at device 0.0 (no driver = attached)=0Dpcib2: at device 30.0 on pci0=0Dpci2: = on pcib2=0Dpuc0: port 0xecf8-0xecff irq 18 at device 9.0 on pci2=0Dsio4: on puc0=0Dsio4: type = 16550A=0Dsio4: unable to activate interrupt in fast mode - using normal = mode=0Dahc0: port 0xe800-0xe8ff = mem 0xf8fff000-0xf8ffffff irq 19 at device 10.0 on pci2=0Dahc0: = [GIANT-LOCKED]=0Daic7892: Ultra160 Wide Channel A, SCSI Id=3D7, 32/253 = SCBs=0Dpcib3: at device 11.0 on pci2=0Dpci3: = on pcib3=0Dohci0: mem = 0xfafff000-0xfaffffff irq 16 at device 8.0 on pci3=0Dohci0: = [GIANT-LOCKED]=0Dusb0: OHCI version 1.0=0Dusb0: on ohci0=0Dusb0: USB revision 1.0=0Duhub0: NEC OHCI root = hub, class 9/0, rev 1.00/1.00, addr 1=0Duhub0: 3 ports with 3 removable, = self powered=0Dohci1: mem = 0xfaffe000-0xfaffefff irq 17 at device 8.1 on pci3=0Dohci1: = [GIANT-LOCKED]=0Dusb1: OHCI version 1.0=0Dusb1: on ohci1=0Dusb1: USB revision 1.0=0Duhub1: NEC OHCI root = hub, class 9/0, rev 1.00/1.00, addr 1=0Duhub1: 2 ports with 2 removable, = self powered=0Dpci3: at device 8.2 (no driver = attached)=0Dfwohci0: mem = 0xfaff8000-0xfaffbfff,0xfaffd000-0xfaffd7ff irq 16 at device 12.0 on = pci3=0Dfwohci0: [GIANT-LOCKED]=0Dfwohci0: OHCI version 1.10 = (ROM=3D1)=0Dfwohci0: No. of Isochronous channels is 4.=0Dfwohci0: EUI64 = 00:50:42:b5:c0:0c:f7:9d=0Dfwohci0: Phy 1394a available S400, 3 = ports.=0Dfwohci0: Link S400, max_rec 2048 bytes.=0Dfirewire0: = on fwohci0=0Dfwe0: on = firewire0=0Dif_fwe0: Fake Ethernet address: 02:50:42:0c:f7:9d=0Dfwe0: = Ethernet address: 02:50:42:0c:f7:9d=0Dsbp0: = on firewire0=0Dfwohci0: Initiate bus reset=0Dfwohci0: = node_id=3D0xc800ffc0, gen=3D1, CYCLEMASTER mode=0Dfirewire0: 1 nodes, = maxhop <=3D 0, cable IRM =3D 0 (me)=0Dfirewire0: bus manager 0 = (me)=0Dxl0: <3Com 3c905C-TX Fast Etherlink XL> port 0xec00-0xec7f mem = 0xf8ffec00-0xf8ffec7f irq 18 at device 12.0 on pci2=0Dmiibus0: = on xl0=0Dxlphy0: <3c905C 10/100 internal PHY> on miibus0=0Dxlphy0: = 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto=0Dxl0: Ethernet = address: 00:b0:d0:2b:93:1e=0Dxl0: [GIANT-LOCKED]=0Disab0: at device 31.0 on pci0=0Disa0: on isab0=0Datapci0: = port = 0xffa0-0xffaf,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 31.1 on = pci0=0Data0: channel #0 on atapci0=0Data1: channel #1 on = atapci0=0Duhci0: port 0xff80-0xff9f = irq 19 at device 31.2 on pci0=0Duhci0: [GIANT-LOCKED]=0Dusb2: on uhci0=0Dusb2: USB revision 1.0=0Duhub2: = Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1=0Duhub2: 2 ports = with 2 removable, self powered=0Dpci0: at device = 31.3 (no driver attached)=0Dpci0: at device 31.5 (no = driver attached)=0Dfdc0: port = 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on acpi0=0Dfdc0: FIFO enabled, 8 bytes = threshold=0Dfd0: <1440-KB 3.5" drive> on fdc0 drive 0=0Datkbdc0: = port 0x64,0x60 irq 1 on acpi0=0Datkbd0: = flags 0x1 irq 1 on atkbdc0=0Dkbd0 at atkbd0=0Datkbd0: = [GIANT-LOCKED]=0Dpsm0: irq 12 on atkbdc0=0Dpsm0: = [GIANT-LOCKED]=0Dpsm0: model IntelliMouse, device ID 3=0Dsio0 port = 0x3f8-0x3ff irq 4 on acpi0=0Dsio0: type 16550A=0Dsio1 port 0x2f8-0x2ff = irq 3 on acpi0=0Dsio1: type 16550A=0Dorm0: at iomem = 0xcf800-0xcffff,0xc9000-0xcf7ff,0xc0000-0xc8fff on isa0=0Dpmtimer0 on = isa0=0Dda0 at ahc0 bus 0 target 0 lun 0=0Dipfw2 initialized, divert = disabled, rule-based forwarding disabled, default to deny, logging = disabled=0D ------=_NextPart_000_0124_01C48E03.8D80A180--