Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: =?ISO-8859-1?Q?Gustau_P=E9rez_i_Querol?= <gperez <at> entel.upc.edu>
Subject: Fix ich9 bios to correctly configure pci bridge1 and pci bridge2
Newsgroups: gmane.os.freebsd.devel.emulation
Date: Monday 3rd September 2012 11:10:40 UTC (over 5 years ago)
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:  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:  on pcib1
pci1: domain=0, physical bus=1
pcib2:  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:  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:  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:  on pcib1
pci1: domain=0, physical bus=1
pcib2:  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:  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.

    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
 
CD: 3ms