Problem adding more than 8 network adapters
Andriy Gapon
avg at FreeBSD.org
Wed Aug 29 13:30:13 UTC 2012
on 29/08/2012 15:13 John Baldwin said the following:
> On Wednesday, August 29, 2012 6:12:02 am Peter Jeremy wrote:
>> [Moving to -stable and adding jhb@ for his input]
>>
>> On 2012-Aug-29 11:32:44 +0200, Gustau Pérez i Querol <gperez at entel.upc.edu> wrote:
[snip]
>> Ah.. lspci shows the 9th LANCE at 02:00.0. The verbose boot shows
>> FreeBSD finds pcib2 (at pci0 device 25.0) but doesn't see anything
>> on that bus. ISTR jhb@ will recognize that problem.
>
> Silly firmware, VM, whatever it is. :) It's buggy.
>
>>> pcib1: <PCI-PCI bridge> at device 24.0 on pci0
>>> pcib1: domain 0
>>> pcib1: secondary bus 1
>>> pcib1: subordinate bus 2
>>> pcib1: no prefetched decode
>>> pcib1: Subtractively decoded bridge.
>>> pci1: <PCI bus> on pcib1
>>> pci1: domain=0, physical bus=1
>>> pcib2: <PCI-PCI bridge> at device 25.0 on pci0
>>> pcib2: domain 0
>>> pcib2: secondary bus 2
>>> pcib2: subordinate bus 3
>>> pcib2: no prefetched decode
>>> pcib2: Subtractively decoded bridge.
>>> pci2: <PCI bus> on pcib2
>>> pci2: domain=0, physical bus=2
>
> This is indeed the problem. PCI bus 2 is "claimed" by both pcib1 and pcib2
> since the VM author programmed the bridges incorrectly. In this case, the
> subordinate bus should be "1" and "2", not "2" and "3". You could add a hack
> to pci_pci.c to fix the subordinate bus on these bridges which should probably
> fix this.
>
>>> 00:18.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2) (prog-if 01 [Subtractive decode])
>>> Flags: bus master, 66MHz, fast devsel, latency 64
>>> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>>>
>>> 00:19.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2) (prog-if 01 [Subtractive decode])
>>> Flags: bus master, 66MHz, fast devsel, latency 64
>>> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
>>> I/O behind bridge: 00001000-00001fff
>>> Memory behind bridge: 40000000-400fffff
>
> Note here in this output (presumably from lspci under Linux?), the
> subordinate bus register == secondary bus register for each bridge.
>
I wonder where the discrepancy could come from.
Why would VirtualBox emulate the bridge differently for different OSes?
And I do not see any quirks related to bus numbers for this PCI ID in either
Linux, FreeBSD or lspci code...
I think that output of lspci on FreeBSD could be interesting too (it's available
via sysutils/pciutils port).
--
Andriy Gapon
More information about the freebsd-stable
mailing list