Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Oct 2000 04:05:12 GMT
From:      "Justin T. Gibbs" <gibbs@aslan.scsiguy.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   i386/21772: Incorrect IRQ routing for multi-function PCI devices on PR440FX
Message-ID:  <200010040405.e9445CB00427@aslan.scsiguy.com>

next in thread | raw e-mail | index | archive | help

>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<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV>
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: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> at pcibus 0 on motherboard
pci0: <PCI bus> on pcib0
fxp0: <Intel Pro 10/100B/100+ Ethernet> 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: <Intel 82371SB PCI to ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
pci0: <Intel PIIX3 ATA controller> at 7.1
ahc0: <Adaptec aic7880 Ultra SCSI adapter> 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: <Trident model 9660 VGA-compatible display device> at 11.0 irq 11
ahc1: <Adaptec 3960D Ultra160 SCSI adapter> 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: <Adaptec 3960D Ultra160 SCSI adapter> 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: <NEC 72065B or clone> 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: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> 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: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
plip0: <PLIP network interface> on ppbus0
unknown: <PNP0303> can't assign resources
unknown: <PNP0f13> can't assign resources
unknown: <PNP0700> can't assign resources
unknown: <PNP0400> can't assign resources
unknown: <PNP0501> can't assign resources
unknown: <PNP0501> 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: <QUANTUM ATLAS IV 9 WLS 9712> 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: <SEAGATE ST32171W 0338> 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: <SEAGATE ST32171W 0338> 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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010040405.e9445CB00427>