if (!pcibios_assign_all_busses()) in parent fixup
Pete Zaitcev
zaitcev at redhat.com
Fri Apr 13 21:57:28 EDT 2007
Hi, Dominik:
Hope you're the right person to ask. I am wondering if this check is
really necessary:
static void __devinit pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
{
struct pci_bus *parent = child->parent;
/* Attempts to fix that up are really dangerous unless
we're going to re-assign all bus numbers. */
if (!pcibios_assign_all_busses())
return;
......
The problem is, Jay (on cc:) apparently has a laptop where a fixup is
necessary, and he would like to run it without pci=assign_buses
(have I got it right?).
This is what happens normally (actually, a current backport from
mainline to our 2.6.9 codebase, but same logic):
[root at postoak]# lspci -v | grep sub
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Bus: primary=00, secondary=0a, subordinate=0a, sec-latency=32
Bus: primary=0a, secondary=0b, subordinate=0e, sec-latency=176
Obviously the second subordinate 0x0a is too small. With the check
removed, Cardbus works:
[root at pinoak]# lspci -v |grep sub
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Bus: primary=00, secondary=0a, subordinate=0e, sec-latency=32
Bus: primary=0a, secondary=0b, subordinate=0e, sec-latency=176
I thought about this, and perhaps Jay is right. If we see such a blatant
problem, there's no other way but force the subordinate number, right?
-- Pete
P.S. I'm adding Kristen because apparently she was poking at bus
numbers last.
More information about the linux-pcmcia
mailing list