Index: /trunk/src/VBox/Devices/PC/DevPcBios.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevPcBios.cpp	(revision 33909)
+++ /trunk/src/VBox/Devices/PC/DevPcBios.cpp	(revision 33910)
@@ -1099,4 +1099,5 @@
     {
         PCFGMNODE   pCfgNetBootDevice;
+        uint8_t     u8PciBus;
         uint8_t     u8PciDev;
         uint8_t     u8PciFn;
@@ -1109,4 +1110,15 @@
             szIndex[0] = '0' + i;
             pCfgNetBootDevice = CFGMR3GetChild(pCfgNetBoot, szIndex);
+
+            rc = CFGMR3QueryU8(pCfgNetBootDevice, "PCIBusNo", &u8PciBus);
+            if (rc == VERR_CFGM_VALUE_NOT_FOUND || rc == VERR_CFGM_NO_PARENT)
+            {
+                /* Do nothing and stop iterating. */
+                rc = VINF_SUCCESS;
+                break;
+            }
+            else if (RT_FAILURE(rc))
+                return PDMDEV_SET_ERROR(pDevIns, rc,
+                                        N_("Configuration error: Querying \"Netboot/x/PCIBusNo\" as integer failed"));
             rc = CFGMR3QueryU8(pCfgNetBootDevice, "PCIDeviceNo", &u8PciDev);
             if (rc == VERR_CFGM_VALUE_NOT_FOUND || rc == VERR_CFGM_NO_PARENT)
@@ -1129,4 +1141,5 @@
                 return PDMDEV_SET_ERROR(pDevIns, rc,
                                         N_("Configuration error: Querying \"Netboot/x/PCIFunctionNo\" as integer failed"));
+            /** @todo: encode bus number too */
             u16BusDevFn = ((u8PciDev & 0x1F) << 3) | (u8PciFn & 0x7);
             pThis->au16NetBootDev[i] = u16BusDevFn;
Index: /trunk/src/VBox/Main/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 33909)
+++ /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 33910)
@@ -209,8 +209,8 @@
 struct BootNic
 {
-    ULONG       mInstance;
-    unsigned    mPciDev;
-    unsigned    mPciFn;
-    ULONG       mBootPrio;
+    ULONG          mInstance;
+    PciBusAddress  mPciAddress;
+
+    ULONG          mBootPrio;
     bool operator < (const BootNic &rhs) const
     {
@@ -1583,7 +1583,7 @@
             BootNic     nic;
 
-            nic.mInstance = ulInstance;
-            nic.mPciDev   = iPciDeviceNo;
-            nic.mPciFn    = 0;
+            nic.mInstance    = ulInstance;
+            /* Could be updated by reference, if auto assigned */
+            nic.mPciAddress  = PciAddr;
 
             hrc = networkAdapter->COMGETTER(BootPriority)(&nic.mBootPrio);                  H();
@@ -1694,6 +1694,7 @@
                 InsertConfigNode(pNetBootCfg, achBootIdx, &pNetBtDevCfg);
                 InsertConfigInteger(pNetBtDevCfg, "NIC", it->mInstance);
-                InsertConfigInteger(pNetBtDevCfg, "PCIDeviceNo", it->mPciDev);
-                InsertConfigInteger(pNetBtDevCfg, "PCIFunctionNo", it->mPciFn);
+                InsertConfigInteger(pNetBtDevCfg, "PCIBusNo",      it->mPciAddress.iBus);
+                InsertConfigInteger(pNetBtDevCfg, "PCIDeviceNo",   it->mPciAddress.iDevice);
+                InsertConfigInteger(pNetBtDevCfg, "PCIFunctionNo", it->mPciAddress.iFn);
             }
         }
@@ -2277,5 +2278,5 @@
             {
                 BootNic aNic = llBootNics.front();
-                uint32_t u32NicPciAddr = (aNic.mPciDev << 16) | aNic.mPciFn;
+                uint32_t u32NicPciAddr = (aNic.mPciAddress.iDevice << 16) | aNic.mPciAddress.iFn;
                 InsertConfigInteger(pCfg, "NicPciAddress",    u32NicPciAddr);
             }
