Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2012 14:23:51 +0200
From:      =?ISO-8859-1?Q?Bernhard_Fr=F6hlich?= <decke@FreeBSD.org>
To:        =?ISO-8859-1?Q?Gustau_P=E9rez_i_Querol?= <gperez@entel.upc.edu>
Cc:        emulation@freebsd.org
Subject:   Re: Fix ich9 bios to correctly configure pci bridge1 and pci bridge2
Message-ID:  <CAE-m3X3ib5%2B2iXsuJ_kyJbbyTJvWs0QYp4jf5zWHPEqvYFfo=w@mail.gmail.com>
In-Reply-To: <504916C5.7070302@entel.upc.edu>
References:  <50449030.1010206@entel.upc.edu> <504916C5.7070302@entel.upc.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Sep 6, 2012 at 11:33 PM, Gustau P=E9rez i Querol
<gperez@entel.upc.edu> wrote:
> On 03/09/2012 13:10, Gustau P=E9rez 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=3D0, physical bus=3D1
>> 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=3D0, physical bus=3D2
>> *********************
>>
>>    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; th=
e
>> primary must be 0 and the secondary and subordinate must be 2:
>>
>>      The vbox programmers set the subordinate bus of bridge1 to 2 and th=
e
>> subordinate of bridge2 to 3 (which is incorrect). At pci_pci.c we can ad=
d
>> quirks to circumvent this (we can't change real hardware) but in this ca=
se
>> we can change the hardware.
>>
>>     I'm attaching the patch that changes the behavior of vbox. The outpu=
t
>> 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=3D0, physical bus=3D1
>> 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=3D0, physical bus=3D2
>> *********************
>>
>>    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 he=
re:
>
> 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=E9rez i Querol
> O O O Departament d'Enginyeria Telem=E0tica
> O O O Universitat Polit=E8cnica de Catalunya
>       Edifici C3 - Despatx S101-B
>  UPC  Campus Nord UPC
>       C/ Jordi Girona, 1-3
>       08034 - Barcelona
>
> _______________________________________________
> freebsd-emulation@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-emulation
> To unsubscribe, send any mail to "freebsd-emulation-unsubscribe@freebsd.o=
rg"

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

--=20
Bernhard Froehlich
http://www.bluelife.at/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAE-m3X3ib5%2B2iXsuJ_kyJbbyTJvWs0QYp4jf5zWHPEqvYFfo=w>