Opened 12 years ago

Last modified 12 years ago

#55 new defect

Non-ISA PCI-PCI bridge behind a ISA PCI-PCI bridge can't allocate I/O window

Reported by: john Owned by:
Priority: major Component: kernel
Version: Keywords: PCI
Cc: Blocked By:
Blocking: Parent Tickets:
P4 Branch: GIT Branch:
FreeBSD PR: Due Date:

Description

Will bad hardware never cease?

Change History (2)

comment:1 Changed 12 years ago by john

From e-mail:

pcib1: <ACPI PCI-PCI bridge> at device 4.0 on pci0
pcib1: allocating non-ISA range 0x9000-0x90ff
pcib0: allocated type 4 (0x9000-0x90ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0x9400-0x94ff
pcib0: allocated type 4 (0x9400-0x94ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0x9800-0x98ff
pcib0: allocated type 4 (0x9800-0x98ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0x9c00-0x9cff
pcib0: allocated type 4 (0x9c00-0x9cff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xa000-0xa0ff
pcib0: allocated type 4 (0xa000-0xa0ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xa400-0xa4ff
pcib0: allocated type 4 (0xa400-0xa4ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xa800-0xa8ff
pcib0: allocated type 4 (0xa800-0xa8ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xac00-0xacff
pcib0: allocated type 4 (0xac00-0xacff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xb000-0xb0ff
pcib0: allocated type 4 (0xb000-0xb0ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xb400-0xb4ff
pcib0: allocated type 4 (0xb400-0xb4ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xb800-0xb8ff
pcib0: allocated type 4 (0xb800-0xb8ff) for rid 1c of pcib1
pcib1: allocating non-ISA range 0xbc00-0xbcff
pcib0: allocated type 4 (0xbc00-0xbcff) for rid 1c of pcib1
pcib1: domain 0
pcib1: secondary bus 2
pcib1: subordinate bus 4
pcib1: I/O decode 0x9000-0xbfff
pcib1: memory decode 0xfda00000-0xfeafffff
pcib1: prefetched decode 0xfab00000-0xfb5fffff
pcib1: special decode ISA
pcib1: could not get PCI interrupt routing table for \134_SB_.PCI0.P0P2 - AE_NOT_FOUND
pci2: <ACPI PCI bus> on pcib1
pci2: domain=0, physical bus=2
...
pcib2: <ACPI PCI-PCI bridge> at device 29.0 on pci2
pcib1: I/O range 0xb000-0xbfff overlaps with an ISA alias
pcib2: failed to allocate initial I/O port window: 0xb000-0xbfff
pcib1: allocated memory range (0xfe100000-0xfe5fffff) for rid 20 of pcib2
pcib1: allocated prefetch range (0xfb000000-0xfb4fffff) for rid 24 of pcib2
pcib2: domain 0
pcib2: secondary bus 4
pcib2: subordinate bus 4
pcib2: memory decode 0xfe100000-0xfe5fffff
pcib2: prefetched decode 0xfb000000-0xfb4fffff
pci4: <ACPI PCI bus> on pcib2
pci4: domain=0, physical bus=4
found-> vendor=0x8086, dev=0x1010, revid=0x01

domain=0, bus=4, slot=2, func=0
class=02-00-00, hdrtype=0x00, mfdev=1
cmdreg=0x0007, statreg=0x0230, cachelnsz=16 (dwords)
lattimer=0x40 (1920 ns), mingnt=0xff (63750 ns), maxlat=0x00 (0 ns)
intpin=a, irq=10
powerspec 2 supports D0 D3 current D0
MSI supports 1 message, 64 bit
map[10]: type Memory, range 64, base 0xfe500000, size 17, enabled

pcib2: allocated memory range (0xfe500000-0xfe51ffff) for rid 10 of pci0:4:2:0

map[20]: type I/O Port, range 32, base 0xbc00, size 6, enabled

pcib1: I/O range 0xb000-0xbfff overlaps with an ISA alias
pcib2: failed to allocate initial I/O port window (0xbc00-0xbc3f,0x40)
pci4: pci0:4:2:0 bar 0x20 failed to allocate
pcib2: matched entry for 4.2.INTA
pcib2: slot 2 INTA hardwired to IRQ 48
found-> vendor=0x8086, dev=0x1010, revid=0x01

domain=0, bus=4, slot=2, func=1
class=02-00-00, hdrtype=0x00, mfdev=1
cmdreg=0x0007, statreg=0x0230, cachelnsz=16 (dwords)
lattimer=0x40 (1920 ns), mingnt=0xff (63750 ns), maxlat=0x00 (0 ns)
intpin=b, irq=10
powerspec 2 supports D0 D3 current D0
MSI supports 1 message, 64 bit
map[10]: type Memory, range 64, base 0xfe400000, size 17, enabled

pcib2: allocated memory range (0xfe400000-0xfe41ffff) for rid 10 of pci0:4:2:1

map[20]: type I/O Port, range 32, base 0xb800, size 6, enabled

pcib1: I/O range 0xb000-0xbfff overlaps with an ISA alias
pcib2: failed to allocate initial I/O port window (0xb800-0xb83f,0x40)
pci4: pci0:4:2:1 bar 0x20 failed to allocate
pcib2: matched entry for 4.2.INTB
pcib2: slot 2 INTB hardwired to IRQ 49
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.0.6> mem 0xfe500000-0xfe51ffff irq 48 at device 2.0 on pci4
pcib2: failed to allocate initial I/O port window (0-0xffff,0x40)
em0: 0x40 bytes of rid 0x20 res 4 failed (0, 0xffffffff).
em0: Unable to allocate bus resource: ioport
em0: Allocation of PCI resources failed
device_attach: em0 attach returned 6
...

comment:2 Changed 12 years ago by john

Reading the spec, I think it makes the most sense to propagate the ISA enable bit down the tree. Specifically, you would want devices behind pcib2 to forward requests for ISA aliases up to pcib1's parent, not to handle them internally.

Note: See TracTickets for help on using tickets.