Index: /trunk/src/VBox/Main/BusAssignmentManager.cpp
===================================================================
--- /trunk/src/VBox/Main/BusAssignmentManager.cpp	(revision 33906)
+++ /trunk/src/VBox/Main/BusAssignmentManager.cpp	(revision 33907)
@@ -69,5 +69,4 @@
     /* ACPI controller */
     {"acpi",          0,  7,  0, 0},
-
 
     /* Network controllers */
@@ -127,6 +126,75 @@
     {"ich9pcibridge", 0, 24, 0,  10},
     {"ich9pcibridge", 0, 25, 0,  10},
-    {"ich9pcibridge", 1, 24, 0,   5},
-    {"ich9pcibridge", 1, 25, 0,   5},
+    {"ich9pcibridge", 1, 24, 0,   9},
+    {"ich9pcibridge", 1, 25, 0,   9},
+    {"ich9pcibridge", 2, 24, 0,   8},
+    {"ich9pcibridge", 2, 25, 0,   8},
+    {"ich9pcibridge", 3, 24, 0,   7},
+    {"ich9pcibridge", 3, 25, 0,   7},
+    {"ich9pcibridge", 4, 24, 0,   6},
+    {"ich9pcibridge", 4, 25, 0,   6},
+    {"ich9pcibridge", 5, 24, 0,   5},
+    {"ich9pcibridge", 5, 25, 0,   5},
+
+    /* Storage controllers */
+    {"ahci",          1,  0, 0,   0},
+    {"ahci",          1,  1, 0,   0},
+    {"ahci",          1,  2, 0,   0},
+    {"ahci",          1,  3, 0,   0},
+    {"ahci",          1,  4, 0,   0},
+    {"ahci",          1,  5, 0,   0},
+    {"ahci",          1,  6, 0,   0},
+    {"lsilogic",      1,  7, 0,   0},
+    {"lsilogic",      1,  8, 0,   0},
+    {"lsilogic",      1,  9, 0,   0},
+    {"lsilogic",      1, 10, 0,   0},
+    {"lsilogic",      1, 11, 0,   0},
+    {"lsilogic",      1, 12, 0,   0},
+    {"lsilogic",      1, 13, 0,   0},
+    {"buslogic",      1, 14, 0,   0},
+    {"buslogic",      1, 15, 0,   0},
+    {"buslogic",      1, 16, 0,   0},
+    {"buslogic",      1, 17, 0,   0},
+    {"buslogic",      1, 18, 0,   0},
+    {"buslogic",      1, 19, 0,   0},
+    {"buslogic",      1, 20, 0,   0},
+    {"lsilogicsas",   1, 21, 0,   0},
+    {"lsilogicsas",   1, 26, 0,   0},
+    {"lsilogicsas",   1, 27, 0,   0},
+    {"lsilogicsas",   1, 28, 0,   0},
+    {"lsilogicsas",   1, 29, 0,   0},
+    {"lsilogicsas",   1, 30, 0,   0},
+    {"lsilogicsas",   1, 31, 0,   0},
+
+    /* NICs */
+    {"nic",           2,  0, 0,   0},
+    {"nic",           2,  1, 0,   0},
+    {"nic",           2,  2, 0,   0},
+    {"nic",           2,  3, 0,   0},
+    {"nic",           2,  4, 0,   0},
+    {"nic",           2,  5, 0,   0},
+    {"nic",           2,  6, 0,   0},
+    {"nic",           2,  7, 0,   0},
+    {"nic",           2,  8, 0,   0},
+    {"nic",           2,  9, 0,   0},
+    {"nic",           2, 10, 0,   0},
+    {"nic",           2, 11, 0,   0},
+    {"nic",           2, 12, 0,   0},
+    {"nic",           2, 13, 0,   0},
+    {"nic",           2, 14, 0,   0},
+    {"nic",           2, 15, 0,   0},
+    {"nic",           2, 16, 0,   0},
+    {"nic",           2, 17, 0,   0},
+    {"nic",           2, 18, 0,   0},
+    {"nic",           2, 19, 0,   0},
+    {"nic",           2, 20, 0,   0},
+    {"nic",           2, 21, 0,   0},
+    {"nic",           2, 26, 0,   0},
+    {"nic",           2, 27, 0,   0},
+    {"nic",           2, 28, 0,   0},
+    {"nic",           2, 29, 0,   0},
+    {"nic",           2, 30, 0,   0},
+    {"nic",           2, 31, 0,   0},
+
     { NULL,          -1, -1, -1,  0}
 };
@@ -135,7 +203,11 @@
 static const DeviceAliasRule aDeviceAliases[] =
 {
-    {"e1000",      "nic"},
-    {"pcnet",      "nic"},
-    {"virtio-net", "nic"}
+    {"e1000",       "nic"},
+    {"pcnet",       "nic"},
+    {"virtio-net",  "nic"},
+    {"ahci",        "storage"},
+    {"lsilogic",    "storage"},
+    {"buslogic",    "storage"},
+    {"lsilogicsas", "storage"}
 };
 
@@ -165,5 +237,4 @@
     typedef std::vector<PciBusAddress>                PciAddrList;
     typedef std::vector<const DeviceAssignmentRule*>  PciRulesList;
-
     typedef std::map <PciDeviceRecord,PciAddrList >   ReversePciMap;
 
Index: /trunk/src/VBox/Main/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 33906)
+++ /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 33907)
@@ -892,28 +892,4 @@
         }
 
-#if 0 /* enable this to test PCI bridging */
-        InsertConfigNode(pDevices, "pcibridge", &pDev);
-        InsertConfigNode(pDev,     "0", &pInst);
-        InsertConfigInteger(pInst, "Trusted",              1); /* boolean */
-        InsertConfigNode(pInst,    "Config", &pCfg);
-        InsertConfigInteger(pInst, "PCIDeviceNo",         14);
-        InsertConfigInteger(pInst, "PCIFunctionNo",        0);
-        rc = CFGMR3InsertInteger(pInst, "PCIBusNo",             0);/* -> pci[0] */          RC_CHECK();
-
-        InsertConfigNode(pDev,     "1", &pInst);
-        InsertConfigInteger(pInst, "Trusted",              1); /* boolean */
-        InsertConfigNode(pInst,    "Config", &pCfg);
-        InsertConfigInteger(pInst, "PCIDeviceNo",          1);
-        InsertConfigInteger(pInst, "PCIFunctionNo",        0);
-        rc = CFGMR3InsertInteger(pInst, "PCIBusNo",             1);/* ->pcibridge[0] */     RC_CHECK();
-
-        InsertConfigNode(pDev,     "2", &pInst);
-        InsertConfigInteger(pInst, "Trusted",              1); /* boolean */
-        InsertConfigNode(pInst,    "Config", &pCfg);
-        InsertConfigInteger(pInst, "PCIDeviceNo",          3);
-        InsertConfigInteger(pInst, "PCIFunctionNo",        0);
-        rc = CFGMR3InsertInteger(pInst, "PCIBusNo",             1);/* ->pcibridge[0] */     RC_CHECK();
-#endif
-
         /*
          * Enable 3 following devices: HPET, SMC, LPC on MacOS X guests
@@ -1562,11 +1538,20 @@
             /* the first network card gets the PCI ID 3, the next 3 gets 8..10,
              * next 4 get 16..19. */
-            unsigned iPciDeviceNo = 3;
-            if (ulInstance)
-            {
-                if (ulInstance < 4)
+            int iPciDeviceNo;
+            switch (ulInstance)
+            {
+                case 0:
+                    iPciDeviceNo = 3;
+                    break;
+                case 1: case 2: case 3:
                     iPciDeviceNo = ulInstance - 1 + 8;
-                else
+                    break;
+                case 4: case 5: case 6: case 7:
                     iPciDeviceNo = ulInstance - 4 + 16;
+                    break;
+                default:
+                    /* auto assignment */
+                    iPciDeviceNo = -1;
+                    break;
             }
 #ifdef VMWARE_NET_IN_SLOT_11
