Fix ich9 bios to correctly configure pci bridge1 and pci bridge2
Gustau Pérez i Querol
gperez at entel.upc.edu
Thu Sep 6 21:35:08 UTC 2012
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
More information about the freebsd-emulation
mailing list