Fix ich9 bios to correctly configure pci bridge1 and pci bridge2
Bernhard Fröhlich
decke at FreeBSD.org
Tue Sep 11 12:32:27 UTC 2012
On Thu, Sep 6, 2012 at 11:33 PM, Gustau Pérez i Querol
<gperez at entel.upc.edu> wrote:
> On 03/09/2012 13:10, Gustau Pérez i Querol wrote:
>>
>>
>> The upcoming 4.2.0 release of virtualbox allows to plug more than 8
>> network adapter to a guest.
>>
>> When testing that kind of setup I noticed FreeBSD (stable or head, it
>> doesn't matter) is unable to map more than 8 cards. It appears that the
>> ninth (and so on) get connected to the pci bus 1.
>>
>> The output of a guest FreeBSD machine shows this:
>>
>> *************
>> 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
>> pcib0: allocated type 4 (0xe000-0xefff) for rid 1c of pcib2
>> pcib0: allocated type 3 (0xf0a00000-0xf0afffff) for rid 20 of pcib2
>> pcib2: domain 0
>> pcib2: secondary bus 2
>> pcib2: subordinate bus 3
>> pcib2: I/O decode 0xe000-0xefff
>> pcib2: memory decode 0xf0a00000-0xf0afffff
>> pcib2: no prefetched decode
>> pcib2: Subtractively decoded bridge.
>> pci2: <PCI bus> on pcib2
>> pci2: domain=0, physical bus=2
>> *********************
>>
>> The topology the developers of vbox try to build is this:
>>
>>
>> ----------------------------------------------------------- pci bus 0
>> | |
>> ___ |______ _____|____
>> | | | |
>> | Bridge1 | | Bridge2 |
>> |_________| |_________|
>> | |
>> ----------- pci bus 1 ------------ pci bus 2
>>
>>
>>
>> The problem is that the pci bridge1 connects the bus0 to the bus1 and
>> thus the primary bus would 0; the secondary would the 1 because the bus 1
>> doesn't
>> connect any other bus through any other bridge then its subordinate must
>> be also 1. The pci bridge1 connects the pci bus 0 with the pci bus 2; the
>> primary must be 0 and the secondary and subordinate must be 2:
>>
>> The vbox programmers set the subordinate bus of bridge1 to 2 and the
>> subordinate of bridge2 to 3 (which is incorrect). At pci_pci.c we can add
>> quirks to circumvent this (we can't change real hardware) but in this case
>> we can change the hardware.
>>
>> I'm attaching the patch that changes the behavior of vbox. The output
>> of FreeBSD virtual machine with the modified 'hardware' is this:
>>
>> *************
>> pcib1: <PCI-PCI bridge> at device 24.0 on pci0
>> pcib1: domain 0
>> pcib1: secondary bus 1
>> pcib1: subordinate bus 1
>> 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
>> pcib0: allocated type 4 (0xe000-0xefff) for rid 1c of pcib2
>> pcib0: allocated type 3 (0xf0a00000-0xf0afffff) for rid 20 of pcib2
>> pcib2: domain 0
>> pcib2: secondary bus 2
>> pcib2: subordinate bus 2
>> pcib2: I/O decode 0xe000-0xefff
>> pcib2: memory decode 0xf0a00000-0xf0afffff
>> pcib2: no prefetched decode
>> pcib2: Subtractively decoded bridge.
>> pci2: <PCI bus> on pcib2
>> pci2: domain=0, physical bus=2
>> *********************
>>
>> Which is what should be according to the simple topology of the buses
>> and bridges. It works as it should. I hope I did not say anything wrong.
>
>
> Looks like the mailing list ate the attachment. I can be downloaded here:
>
> http://www-entel.upc.edu/gus/patch-src-VBox-Devices-Bus-DevPciIch9.cpp
>
> Best,
>
> Gustau
>
> --
> ---------------------------------------------------------------------------
> Prou top-posting : http://ca.wikipedia.org/wiki/Top-posting
> Stop top-posting : http://en.wikipedia.org/wiki/Posting_style
>
> O O O Gustau Pérez i Querol
> O O O Departament d'Enginyeria Telemàtica
> O O O Universitat Politècnica de Catalunya
> Edifici C3 - Despatx S101-B
> UPC Campus Nord UPC
> C/ Jordi Girona, 1-3
> 08034 - Barcelona
>
> _______________________________________________
> freebsd-emulation at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-emulation
> To unsubscribe, send any mail to "freebsd-emulation-unsubscribe at freebsd.org"
Thanks to avg@ who got my attention on that report. I just committed
the patch to
our devel repository and will see what upstream thinks about that.
http://redports.org/changeset/6948
--
Bernhard Froehlich
http://www.bluelife.at/
More information about the freebsd-emulation
mailing list