Date: Thu, 06 Sep 2012 23:33:57 +0200 From: =?ISO-8859-1?Q?Gustau_P=E9rez_i_Querol?= <gperez@entel.upc.edu> To: emulation@freebsd.org Subject: Re: Fix ich9 bios to correctly configure pci bridge1 and pci bridge2 Message-ID: <504916C5.7070302@entel.upc.edu> In-Reply-To: <50449030.1010206@entel.upc.edu> References: <50449030.1010206@entel.upc.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?504916C5.7070302>