Pci driver can not handle multiple root complex system
Udo Steinberg
udo at ...121...
Thu Aug 1 21:20:58 CEST 2013
On Tue, 18 Jun 2013 20:33:17 +0200 Christian Helmuth (CH) wrote:
CH> On Tue, Jun 18, 2013 at 05:14:31PM +0000, Jilong Kuang - SISA wrote:
CH> > I guess the reason why current code doesn't cover all devices is
CH> > that it assumes all devices can be scanned through recursive
CH> > function call starting from bus 0 (a single tree structure).
CH> > However, when there are multiple root complexes, there are more than
CH> > one tree. So one has to explicitly jump to the next root node and
CH> > search its tree.
CH>
CH> Is there any documentation or best practice how to discover "root
CH> nodes"? Do we need ACPI or other platform information for that?
CH> Scanning through all possible PCI nodes sounds not desirable as it
CH> takes its time.
Jilong sent the DSDT of his machine, which lists the different PCI root
complexes as follows:
Device (PCI0)
{
Method (^BN00, 0, NotSerialized)
{
Return (Zero)
}
Method (_BBN, 0, NotSerialized) // _BBN: BIOS Bus Number
{
Return (BN00 ())
}
}
Device (PCI1)
{
Method (^BN40, 0, NotSerialized)
{
Return (0x40)
}
Method (_BBN, 0, NotSerialized) // _BBN: BIOS Bus Number
{
Return (BN40 ())
}
}
Device (PCI2)
{
Method (^BN80, 0, NotSerialized)
{
Return (0x80)
}
Method (_BBN, 0, NotSerialized) // _BBN: BIOS Bus Number
{
Return (BN80 ())
}
}
Device (PCI3)
{
Method (^BNC0, 0, NotSerialized)
{
Return (0xC0)
}
Method (_BBN, 0, NotSerialized) // _BBN: BIOS Bus Number
{
Return (BNC0 ())
}
}
There are 4 root complexes, starting at bus numbers 0, 0x40, 0x80, 0xc0
respectively and Genode would have to scan each of them. You can use the
_BBN methods in the DSDT to enumerate them.
Cheers,
Udo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.genode.org/pipermail/users/attachments/20130801/37887df6/attachment.sig>
More information about the users
mailing list