From owner-freebsd-bugs Thu Oct 5 9:10:14 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 3475537B66D for ; Thu, 5 Oct 2000 09:10:01 -0700 (PDT) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id JAA37671; Thu, 5 Oct 2000 09:10:01 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from aslan.scsiguy.com (aslan.scsiguy.com [63.229.232.106]) by hub.freebsd.org (Postfix) with ESMTP id 9146E37B503 for ; Thu, 5 Oct 2000 09:04:45 -0700 (PDT) Received: (from gibbs@localhost) by aslan.scsiguy.com (8.11.0/8.9.3) id e9445CB00427; Wed, 4 Oct 2000 04:05:12 GMT (envelope-from gibbs) Message-Id: <200010040405.e9445CB00427@aslan.scsiguy.com> Date: Wed, 4 Oct 2000 04:05:12 GMT From: "Justin T. Gibbs" Reply-To: gibbs@aslan.scsiguy.com To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.2 Subject: i386/21772: Incorrect IRQ routing for multi-function PCI devices on PR440FX Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 21772 >Category: i386 >Synopsis: No interrupts for 39160 PCI adapter in PR440FX under SMP kernel >Confidential: no >Severity: critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Oct 05 09:10:00 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Justin T. Gibbs >Release: FreeBSD 5.0-CURRENT i386 >Organization: >Environment: mptable -dmesg -verbose output: =============================================================================== MPTable, version 2.0.15 looking for EBDA pointer @ 0x040e, found, searching EBDA @ 0x0009fc00 searching CMOS 'top of mem' @ 0x0009f800 (638K) searching default 'top of mem' @ 0x0009fc00 (639K) searching BIOS @ 0x000f0000 MP FPS found in BIOS @ physical addr: 0x000f7ef0 ------------------------------------------------------------------------------- MP Floating Pointer Structure: location: BIOS physical address: 0x000f7ef0 signature: '_MP_' length: 16 bytes version: 1.4 checksum: 0x12 mode: Virtual Wire ------------------------------------------------------------------------------- MP Config Table Header: physical address: 0x000f7f00 signature: 'PCMP' base table length: 228 version: 1.4 checksum: 0x38 OEM ID: 'INTEL ' Product ID: 'PR440FX ' OEM table pointer: 0x00000000 OEM table size: 0 entry count: 20 local APIC address: 0xfec08000 extended table length: 120 extended table checksum: 15 ------------------------------------------------------------------------------- MP Config Base Table Entries: -- Processors: APIC ID Version State Family Model Step Flags 0 0x11 BSP, usable 6 1 9 0xfbff 12 0x11 AP, usable 6 1 9 0xfbff -- Bus: Bus ID Type 0 PCI 18 ISA -- I/O APICs: APIC ID Version State Address 13 0x11 usable 0xfec00000 -- I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# ExtINT active-hi edge 18 0 13 0 INT active-hi edge 18 1 13 1 INT active-hi edge 18 3 13 3 INT active-hi edge 18 4 13 4 INT active-hi edge 18 5 13 5 INT active-hi edge 18 6 13 6 INT active-hi edge 18 7 13 7 INT active-hi edge 18 8 13 8 INT active-hi edge 18 12 13 12 INT active-hi edge 18 14 13 14 INT active-hi edge 18 15 13 15 INT active-lo level 0 17:A 13 18 INT active-lo level 0 11:A 13 16 INT active-lo level 0 9:A 13 17 INT active-lo level 0 6:A 13 18 -- Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# ------------------------------------------------------------------------------- MP Config Extended Table Entries: -- System Address Space bus ID: 0 address type: memory address address base: 0xd4000 address range: 0x4000 -- System Address Space bus ID: 0 address type: memory address address base: 0xd8000 address range: 0x4000 -- System Address Space bus ID: 0 address type: memory address address base: 0xdc000 address range: 0x4000 -- System Address Space bus ID: 0 address type: memory address address base: 0xa0000 address range: 0x20000 -- System Address Space bus ID: 0 address type: memory address address base: 0x4000000 address range: 0xfc000000 -- System Address Space bus ID: 0 address type: I/O address address base: 0x0 address range: 0x10000 ------------------------------------------------------------------------------- # SMP kernel config file options: # Required: options SMP # Symmetric MultiProcessor Kernel options APIC_IO # Symmetric (APIC) I/O # Optional (built-in defaults will work in most cases): #options NCPU=2 # number of CPUs #options NBUS=2 # number of busses #options NAPIC=1 # number of IO APICs #options NINTR=24 # number of INTs ------------------------------------------------------------------------------- dmesg output: Copyright (c) 1992-2000 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 5.0-CURRENT #7: Wed Oct 4 00:08:13 GMT 2000 gibbs@aslan.scsiguy.com:/usr/src/sys/compile/ASLAN Timecounter "i8254" frequency 1193182 Hz CPU: Pentium Pro (198.67-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x619 Stepping = 9 Features=0xfbff real memory = 67108864 (65536K bytes) config> di zp0 No such device: zp0 Invalid command or syntax. Type `?' for help. config> di ze0 No such device: ze0 Invalid command or syntax. Type `?' for help. config> di lnc0 No such device: lnc0 Invalid command or syntax. Type `?' for help. config> di le0 No such device: le0 Invalid command or syntax. Type `?' for help. config> di ie0 No such device: ie0 Invalid command or syntax. Type `?' for help. config> di fe0 No such device: fe0 Invalid command or syntax. Type `?' for help. config> di ex0 No such device: ex0 Invalid command or syntax. Type `?' for help. config> di ep0 No such device: ep0 Invalid command or syntax. Type `?' for help. config> di ed0 No such device: ed0 Invalid command or syntax. Type `?' for help. config> di cs0 No such device: cs0 Invalid command or syntax. Type `?' for help. config> di wt0 No such device: wt0 Invalid command or syntax. Type `?' for help. config> di wdc1 No such device: wdc1 Invalid command or syntax. Type `?' for help. config> di wdc0 No such device: wdc0 Invalid command or syntax. Type `?' for help. config> di scd0 No such device: scd0 Invalid command or syntax. Type `?' for help. config> di mcd0 No such device: mcd0 Invalid command or syntax. Type `?' for help. config> di matcdc0 No such device: matcdc0 Invalid command or syntax. Type `?' for help. config> di bt0 No such device: bt0 Invalid command or syntax. Type `?' for help. config> di aic0 No such device: aic0 Invalid command or syntax. Type `?' for help. config> di aha0 No such device: aha0 Invalid command or syntax. Type `?' for help. config> en adv0 No such device: adv0 Invalid command or syntax. Type `?' for help. config> f adv0 0 No such device: adv0 Invalid command or syntax. Type `?' for help. config> q avail memory = 61919232 (60468K bytes) Preloaded elf kernel "kernel" at 0xc0318000. Preloaded userconfig_script "/boot/kernel.conf" at 0xc031809c. Pentium Pro MTRR support enabled npx0: on motherboard npx0: INT 16 interface pcib0: at pcibus 0 on motherboard pci0: on pcib0 fxp0: port 0xff40-0xff5f mem 0xff800000-0xff8fffff,0xffbdb000-0xffbdbfff irq 9 at device 6.0 on pci0 fxp0: Ethernet address 00:a0:c9:49:b9:fb isab0: at device 7.0 on pci0 isa0: on isab0 pci0: at 7.1 ahc0: port 0xf400-0xf4ff mem 0xffbdd000-0xffbddfff irq 11 at device 9.0 on pci0 aic7880: Wide Channel A, SCSI Id=7, 16/255 SCBs pci0: at 11.0 irq 11 ahc1: port 0xf800-0xf8ff mem 0xffbde000-0xffbdefff irq 9 at device 17.0 on pci0 aic7899: Wide Channel A, SCSI Id=7, 32/255 SCBs ahc2: port 0xfc00-0xfcff mem 0xffbdf000-0xffbdffff irq 10 at device 17.1 on pci0 aic7899: Wide Channel B, SCSI Id=7, 32/255 SCBs isa0: unexpected small tag 14 fdc0: at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: at port 0x60,0x64 on isa0 atkbd0: flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 psm0: irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0 vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: at port 0x378-0x37f irq 7 on isa0 ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode lpt0: on ppbus0 lpt0: Interrupt-driven port ppi0: on ppbus0 plip0: on ppbus0 unknown: can't assign resources unknown: can't assign resources unknown: can't assign resources unknown: can't assign resources unknown: can't assign resources unknown: can't assign resources Waiting 2 seconds for SCSI devices to settle Mounting root from ufs:/dev/da0s1a da2 at ahc1 bus 0 target 2 lun 0 da2: Fixed Direct Access SCSI-3 device da2: 160.000MB/s transfers (80.000MHz, offset 31, 16bit) da2: 8761MB (17942584 512 byte sectors: 255H 63S/T 1116C) da0 at ahc0 bus 0 target 0 lun 0 da0: Fixed Direct Access SCSI-2 device da0: 40.000MB/s transfers (20.000MHz, offset 8, 16bit) da0: 2061MB (4222640 512 byte sectors: 64H 32S/T 2061C) da1 at ahc0 bus 0 target 1 lun 0 da1: Fixed Direct Access SCSI-2 device da1: 40.000MB/s transfers (20.000MHz, offset 8, 16bit) da1: 2061MB (4222640 512 byte sectors: 64H 32S/T 2061C) =============================================================================== >Description: When booting this system with an SMP kernel all disk activity on the 39160 PCI HBA results in a timeout. After instrumenting the aic7xxx driver, it is plain that interrupts are not being delivered. In the SMP boot case, ahc0 is given irq 17, ahc1 is given irq 18, and ahc2 is given irq 10. A UP kernel from the same sources boots correctly. >How-To-Repeat: Boot a PR440FX with a multi-function PCI device. >Fix: My guess is that we're missing another workaround for a broken mptable, but I don't know enough about the MP spec to determine exactly what is wrong nor how to correct it. >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message