in pci_fixup_parent_subordinate_busnr() we will only reassign bus numbers
if pcibios_assign_all_busses() returns 1.
If we got to pci_fixup_parent_subordinate_busnr() and
pcibios_assign_all_busses() returns 0, should we not print out some
warning since we most likely got here because the bios didn't init things
properly?
I came across this on an embedded system in which we had a cardbus
controller behind a P2P bridge. The bios did not reserve any bus numbers
for the cardbus controller like linux does. So I ended up with:
03:04.0 CardBus bridge: Texas Instruments PCI4510 PC card Cardbus Controller (rev 03)
Flags: bus master, medium devsel, latency 0, IRQ 18
Memory at 00000000bb100000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=03, secondary=04, subordinate=07, sec-latency=176
Memory window 0: b9000000-bafff000
Memory window 1: 9dc00000-9efff000 (prefetchable)
I/O window 1: 00000000-00000003
16-bit legacy interface ports at 0001
and the P2P bridge:
00:11.0 PCI bridge: Pericom Semiconductor PCI to PCI Bridge (rev 02) (prog-if 00 [Normal decode])
Flags: bus master, 66Mhz, medium devsel, latency 0
Bus: primary=00, secondary=03, subordinate=04, sec-latency=0
I/O behind bridge: 00efe000-00ffdfff
Memory behind bridge: b6000000-bb7fffff
Prefetchable memory behind bridge: 000000008fc00000-000000009db00000
Capabilities: [dc] Power Management version 1
Capabilities: [b0] Slot ID: 0 slots, First-, chassis 00
Seems like a case we should warn about or not update the cardbus
controller's subordinate number if pcibios_assign_all_busses() returns 0.
- kumar
On Wed, Dec 14, 2005 at 01:45:30PM -0600, Kumar Gala wrote:
> in pci_fixup_parent_subordinate_busnr() we will only reassign bus numbers
> if pcibios_assign_all_busses() returns 1.
>
> If we got to pci_fixup_parent_subordinate_busnr() and
> pcibios_assign_all_busses() returns 0, should we not print out some
> warning since we most likely got here because the bios didn't init things
> properly?
>
> I came across this on an embedded system in which we had a cardbus
> controller behind a P2P bridge. The bios did not reserve any bus numbers
> for the cardbus controller like linux does. So I ended up with:
Ick. Perhaps the pcmcia developers would know better what they want to
have done here? Try asking on their list :)
thanks,
greg k-h
Hi,
On Wed, Dec 28, 2005 at 11:17:56PM -0800, Greg KH wrote:
> On Wed, Dec 14, 2005 at 01:45:30PM -0600, Kumar Gala wrote:
> > in pci_fixup_parent_subordinate_busnr() we will only reassign bus numbers
> > if pcibios_assign_all_busses() returns 1.
> >
> > If we got to pci_fixup_parent_subordinate_busnr() and
> > pcibios_assign_all_busses() returns 0, should we not print out some
> > warning since we most likely got here because the bios didn't init things
> > properly?
> >
> > I came across this on an embedded system in which we had a cardbus
> > controller behind a P2P bridge. The bios did not reserve any bus numbers
> > for the cardbus controller like linux does. So I ended up with:
>
> Ick. Perhaps the pcmcia developers would know better what they want to
> have done here? Try asking on their list :)
Well, there is such a patch in your PCI queue already -- see
http://bugzilla.kernel.org/show_bug.cgi?id=5557 for details.
Dominik