The transparent PCI-Express bridge problem

Kumar Gala galak at kernel.crashing.org
Sat Mar 10 09:22:01 EST 2007


On Mar 9, 2007, at 2:18 PM, Jon Loeliger wrote:

> Kumar,
>
> Here is a lspci -xv from the 8544 DS board.  This is
> the same board as the 8641 HPCN board, so they both have
> the same "root complex is really a transparent bridge"
> problem that needs to be resolved.
>
> Please let me know if you need further or different info here.
>
> HTH,
> jdl
>
>
>
>
> # lspci -xv
> 00:00.0 Power PC: Unknown device 1957:0030 (rev 10)
>         !!! Invalid class 0b20 for header type 01
>         Flags: bus master, fast devsel, latency 0
>         Bus: primary=00, secondary=01, subordinate=02, sec-latency=0
>         I/O behind bridge: 00000000-00000fff
>         Memory behind bridge: 00000000-000fffff
>         Prefetchable memory behind bridge:  
> 0000000000000000-0000000000000000
>         Capabilities: [44] Power Management version 2
>         Capabilities: [4c] #10 [0041]
> 00: 57 19 30 00 06 01 10 00 10 00 20 0b 00 00 01 00
> 10: 00 00 00 00 00 00 00 00 00 01 02 00 00 00 00 20
> 20: 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00
> 30: 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00

(Mainly responding for anyone else reading this)

After some discussion, and reading of the PCI-Express specs the issue  
is that the class information is not being set properly.  Try a quirk  
like the following to fixup and see what happens.

static void __devinit early_fsl_pcie(struct pci_dev *dev)
{
         dev->class &= 0xff;
         dev->class |= (PCI_CLASS_BRIDGE_PCI << 8)
}

DECLARE_PCI_FIXUP_EARLY(0x1957, 0x0030, early_fsl_pcie);

I think this may resolve the following issues:
* Do not skip PCI Express to PCI bridge when scanning OF node
* All the driver/pci/probe.c changes

- k



More information about the Linuxppc-dev mailing list