Index: /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp	(revision 57900)
+++ /trunk/src/VBox/Devices/Network/DevVirtioNet.cpp	(revision 57901)
@@ -48,5 +48,4 @@
 #ifdef IN_RING3
 
-#define VNET_PCI_SUBSYSTEM_ID        1 + VIRTIO_NET_ID
 #define VNET_PCI_CLASS               0x0200
 #define VNET_N_QUEUES                3
@@ -55,5 +54,4 @@
 #if 0
 /* Virtio Block Device */
-#define VNET_PCI_SUBSYSTEM_ID        1 + VIRTIO_BLK_ID
 #define VNET_PCI_CLASS               0x0180
 #define VNET_N_QUEUES                2
@@ -1951,5 +1949,5 @@
     pThis->VPCI.IBase.pfnQueryInterface    = vnetQueryInterface;
     rc = vpciConstruct(pDevIns, &pThis->VPCI, iInstance,
-                       VNET_NAME_FMT, VNET_PCI_SUBSYSTEM_ID,
+                       VNET_NAME_FMT, VIRTIO_NET_ID,
                        VNET_PCI_CLASS, VNET_N_QUEUES);
     pThis->pRxQueue  = vpciAddQueue(&pThis->VPCI, 256, vnetQueueReceive,  "RX ");
Index: /trunk/src/VBox/Devices/VirtIO/Virtio.cpp
===================================================================
--- /trunk/src/VBox/Devices/VirtIO/Virtio.cpp	(revision 57900)
+++ /trunk/src/VBox/Devices/VirtIO/Virtio.cpp	(revision 57901)
@@ -769,17 +769,17 @@
  *
  * @param   pci          Reference to PCI device structure.
- * @param   uSubsystemId PCI Subsystem Id
+ * @param   uDeviceId    VirtiO Device Id
  * @param   uClass       Class of PCI device (network, etc)
  * @thread  EMT
  */
 static DECLCALLBACK(void) vpciConfigure(PCIDEVICE& pci,
-                                        uint16_t uSubsystemId,
+                                        uint16_t uDeviceId,
                                         uint16_t uClass)
 {
     /* Configure PCI Device, assume 32-bit mode ******************************/
     PCIDevSetVendorId(&pci, DEVICE_PCI_VENDOR_ID);
-    PCIDevSetDeviceId(&pci, DEVICE_PCI_DEVICE_ID);
+    PCIDevSetDeviceId(&pci, DEVICE_PCI_BASE_ID + uDeviceId);
     vpciCfgSetU16(pci, VBOX_PCI_SUBSYSTEM_VENDOR_ID, DEVICE_PCI_SUBSYSTEM_VENDOR_ID);
-    vpciCfgSetU16(pci, VBOX_PCI_SUBSYSTEM_ID, uSubsystemId);
+    vpciCfgSetU16(pci, VBOX_PCI_SUBSYSTEM_ID, DEVICE_PCI_SUBSYSTEM_BASE_ID + uDeviceId);
 
     /* ABI version, must be equal 0 as of 2.6.30 kernel. */
@@ -812,5 +812,5 @@
 int vpciConstruct(PPDMDEVINS pDevIns, VPCISTATE *pState,
                   int iInstance, const char *pcszNameFmt,
-                  uint16_t uSubsystemId, uint16_t uClass,
+                  uint16_t uDeviceId, uint16_t uClass,
                   uint32_t nQueues)
 {
@@ -832,5 +832,5 @@
 
     /* Set PCI config registers */
-    vpciConfigure(pState->pciDevice, uSubsystemId, uClass);
+    vpciConfigure(pState->pciDevice, uDeviceId, uClass);
     /* Register PCI device */
     rc = PDMDevHlpPCIRegister(pDevIns, &pState->pciDevice);
Index: /trunk/src/VBox/Devices/VirtIO/Virtio.h
===================================================================
--- /trunk/src/VBox/Devices/VirtIO/Virtio.h	(revision 57900)
+++ /trunk/src/VBox/Devices/VirtIO/Virtio.h	(revision 57901)
@@ -33,6 +33,7 @@
 
 #define DEVICE_PCI_VENDOR_ID                0x1AF4
-#define DEVICE_PCI_DEVICE_ID                0x1000
+#define DEVICE_PCI_BASE_ID                  0x1000
 #define DEVICE_PCI_SUBSYSTEM_VENDOR_ID      0x1AF4
+#define DEVICE_PCI_SUBSYSTEM_BASE_ID       1
 
 #define VIRTIO_MAX_NQUEUES                  3
@@ -260,5 +261,5 @@
 int   vpciLoadExec(PVPCISTATE pState, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass, uint32_t nQueues);
 int   vpciConstruct(PPDMDEVINS pDevIns, VPCISTATE *pState, int iInstance, const char *pcszNameFmt,
-                    uint16_t uSubsystemId, uint16_t uClass, uint32_t nQueues);
+                    uint16_t uDeviceId, uint16_t uClass, uint32_t nQueues);
 int   vpciDestruct(VPCISTATE* pState);
 void  vpciRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta);
