summaryrefslogtreecommitdiff
path: root/src/VBox
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2019-09-10 15:19:39 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2019-09-10 15:19:39 +0000
commit89c6c61950d900773bf3f103ecc75f7849837022 (patch)
tree08b1ae6309a8e3bca76a69acb71d79c19061e861 /src/VBox
parent6a57d190f37cc949ed470f3e8992e966f77f2a09 (diff)
downloadVirtualBox-svn-89c6c61950d900773bf3f103ecc75f7849837022.tar.gz
PDM,Devices: Changed PDM_DEVREG_FLAGS_MSI_X into a registration field giving the max MSI-X vector count config for the device (typically VBOX_MSIX_MAX_ENTRIES). bugref:9218
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@80704 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'src/VBox')
-rw-r--r--src/VBox/Devices/Audio/DevHDA.cpp1
-rw-r--r--src/VBox/Devices/Audio/DevIchAc97.cpp1
-rw-r--r--src/VBox/Devices/Audio/DevSB16.cpp1
-rw-r--r--src/VBox/Devices/Bus/DevPCI.cpp2
-rw-r--r--src/VBox/Devices/Bus/DevPciIch9.cpp2
-rw-r--r--src/VBox/Devices/EFI/DevEFI.cpp1
-rw-r--r--src/VBox/Devices/EFI/DevFlash.cpp1
-rw-r--r--src/VBox/Devices/EFI/DevSmc.cpp1
-rw-r--r--src/VBox/Devices/GIMDev/GIMDev.cpp1
-rw-r--r--src/VBox/Devices/Graphics/DevVGA.cpp1
-rw-r--r--src/VBox/Devices/Input/DevPS2.cpp1
-rw-r--r--src/VBox/Devices/Misc/VirtualKD.cpp1
-rw-r--r--src/VBox/Devices/Network/DevE1000.cpp5
-rw-r--r--src/VBox/Devices/Network/DevINIP.cpp1
-rw-r--r--src/VBox/Devices/Network/DevPCNet.cpp1
-rw-r--r--src/VBox/Devices/Network/DevVirtioNet.cpp1
-rw-r--r--src/VBox/Devices/PC/DevACPI.cpp1
-rw-r--r--src/VBox/Devices/PC/DevDMA.cpp1
-rw-r--r--src/VBox/Devices/PC/DevHPET.cpp1
-rw-r--r--src/VBox/Devices/PC/DevIoApic.cpp1
-rw-r--r--src/VBox/Devices/PC/DevLpc-new.cpp1
-rw-r--r--src/VBox/Devices/PC/DevPIC.cpp1
-rw-r--r--src/VBox/Devices/PC/DevPcArch.cpp1
-rw-r--r--src/VBox/Devices/PC/DevPcBios.cpp1
-rw-r--r--src/VBox/Devices/PC/DevPit-i8254.cpp1
-rw-r--r--src/VBox/Devices/PC/DevRTC.cpp1
-rw-r--r--src/VBox/Devices/Parallel/DevParallel.cpp1
-rw-r--r--src/VBox/Devices/Samples/DevPlayground.cpp1
-rw-r--r--src/VBox/Devices/Samples/VBoxSampleDevice.cpp1
-rw-r--r--src/VBox/Devices/Serial/DevOxPcie958.cpp3
-rw-r--r--src/VBox/Devices/Serial/DevSerial.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevAHCI.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevATA.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevBusLogic.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevFdc.cpp1
-rw-r--r--src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp3
-rw-r--r--src/VBox/Devices/Storage/DevVirtioSCSI.cpp1
-rw-r--r--src/VBox/Devices/USB/DevOHCI.cpp1
-rw-r--r--src/VBox/Devices/VMMDev/VMMDev.cpp1
-rw-r--r--src/VBox/ExtPacks/BusMouseSample/BusMouse.cpp1
-rw-r--r--src/VBox/VMM/VMMAll/APICAll.cpp1
-rw-r--r--src/VBox/VMM/VMMR0/PDMR0Device.cpp5
-rw-r--r--src/VBox/VMM/VMMR3/PDMDevHlp.cpp6
-rw-r--r--src/VBox/VMM/VMMR3/PDMDevice.cpp4
44 files changed, 59 insertions, 7 deletions
diff --git a/src/VBox/Devices/Audio/DevHDA.cpp b/src/VBox/Devices/Audio/DevHDA.cpp
index e05113609a8..3e63e8b665d 100644
--- a/src/VBox/Devices/Audio/DevHDA.cpp
+++ b/src/VBox/Devices/Audio/DevHDA.cpp
@@ -5325,6 +5325,7 @@ const PDMDEVREG g_DeviceHDA =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel HD Audio Controller",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Audio/DevIchAc97.cpp b/src/VBox/Devices/Audio/DevIchAc97.cpp
index 7c646cb9567..6d17ed764c0 100644
--- a/src/VBox/Devices/Audio/DevIchAc97.cpp
+++ b/src/VBox/Devices/Audio/DevIchAc97.cpp
@@ -4555,6 +4555,7 @@ const PDMDEVREG g_DeviceICHAC97 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "ICH AC'97 Audio Controller",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Audio/DevSB16.cpp b/src/VBox/Devices/Audio/DevSB16.cpp
index 111c39b47b1..6fec144a784 100644
--- a/src/VBox/Devices/Audio/DevSB16.cpp
+++ b/src/VBox/Devices/Audio/DevSB16.cpp
@@ -2607,6 +2607,7 @@ const PDMDEVREG g_DeviceSB16 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Sound Blaster 16 Controller",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Bus/DevPCI.cpp b/src/VBox/Devices/Bus/DevPCI.cpp
index a39f902ecfe..75379e34a3e 100644
--- a/src/VBox/Devices/Bus/DevPCI.cpp
+++ b/src/VBox/Devices/Bus/DevPCI.cpp
@@ -1411,6 +1411,7 @@ const PDMDEVREG g_DevicePCI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 2,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "i440FX PCI bridge and PIIX3 ISA bridge.",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
@@ -1754,6 +1755,7 @@ const PDMDEVREG g_DevicePCIBridge =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "82801 Mobile PCI to PCI bridge",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Bus/DevPciIch9.cpp b/src/VBox/Devices/Bus/DevPciIch9.cpp
index 7b1af10ed67..121fd69a7e9 100644
--- a/src/VBox/Devices/Bus/DevPciIch9.cpp
+++ b/src/VBox/Devices/Bus/DevPciIch9.cpp
@@ -3605,6 +3605,7 @@ const PDMDEVREG g_DevicePciIch9 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "ICH9 PCI bridge",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
@@ -3678,6 +3679,7 @@ const PDMDEVREG g_DevicePciIch9Bridge =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "ICH9 PCI to PCI bridge",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/EFI/DevEFI.cpp b/src/VBox/Devices/EFI/DevEFI.cpp
index da820d5d329..880c91b2fa4 100644
--- a/src/VBox/Devices/EFI/DevEFI.cpp
+++ b/src/VBox/Devices/EFI/DevEFI.cpp
@@ -2469,6 +2469,7 @@ const PDMDEVREG g_DeviceEFI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Extensible Firmware Interface Device.\n"
"LUN#0 - NVRAM port",
#if defined(IN_RING3)
diff --git a/src/VBox/Devices/EFI/DevFlash.cpp b/src/VBox/Devices/EFI/DevFlash.cpp
index 1f977b18a79..ba2a708f6a2 100644
--- a/src/VBox/Devices/EFI/DevFlash.cpp
+++ b/src/VBox/Devices/EFI/DevFlash.cpp
@@ -532,6 +532,7 @@ const PDMDEVREG g_DeviceFlash =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Flash Memory Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/EFI/DevSmc.cpp b/src/VBox/Devices/EFI/DevSmc.cpp
index e57bc7a08d3..5b35266c62a 100644
--- a/src/VBox/Devices/EFI/DevSmc.cpp
+++ b/src/VBox/Devices/EFI/DevSmc.cpp
@@ -1507,6 +1507,7 @@ const PDMDEVREG g_DeviceSmc =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Apple System Management Controller",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/GIMDev/GIMDev.cpp b/src/VBox/Devices/GIMDev/GIMDev.cpp
index b3d7cb8e56c..7192cf61d06 100644
--- a/src/VBox/Devices/GIMDev/GIMDev.cpp
+++ b/src/VBox/Devices/GIMDev/GIMDev.cpp
@@ -422,6 +422,7 @@ const PDMDEVREG g_DeviceGIMDev =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "VirtualBox GIM Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Graphics/DevVGA.cpp b/src/VBox/Devices/Graphics/DevVGA.cpp
index 805d58cebd3..dba87d8211e 100644
--- a/src/VBox/Devices/Graphics/DevVGA.cpp
+++ b/src/VBox/Devices/Graphics/DevVGA.cpp
@@ -7280,6 +7280,7 @@ const PDMDEVREG g_DeviceVga =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "VGA Adaptor with VESA extensions.",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Input/DevPS2.cpp b/src/VBox/Devices/Input/DevPS2.cpp
index 15c10d9021a..6f25bdf665e 100644
--- a/src/VBox/Devices/Input/DevPS2.cpp
+++ b/src/VBox/Devices/Input/DevPS2.cpp
@@ -1058,6 +1058,7 @@ const PDMDEVREG g_DevicePS2KeyboardMouse =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "PS/2 Keyboard and Mouse device. Emulates both the keyboard, mouse and the keyboard controller.\n"
"LUN #0 is the keyboard connector.\n"
"LUN #1 is the aux/mouse connector.",
diff --git a/src/VBox/Devices/Misc/VirtualKD.cpp b/src/VBox/Devices/Misc/VirtualKD.cpp
index 93c7fbb12ba..ac542cdf39a 100644
--- a/src/VBox/Devices/Misc/VirtualKD.cpp
+++ b/src/VBox/Devices/Misc/VirtualKD.cpp
@@ -237,6 +237,7 @@ const PDMDEVREG g_DeviceVirtualKD =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Provides fast debugging interface when debugging Windows kernel",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Network/DevE1000.cpp b/src/VBox/Devices/Network/DevE1000.cpp
index 04fb7c38a5c..4d819ddca77 100644
--- a/src/VBox/Devices/Network/DevE1000.cpp
+++ b/src/VBox/Devices/Network/DevE1000.cpp
@@ -8102,7 +8102,7 @@ const PDMDEVREG g_DeviceE1000 =
/* .u32version = */ PDM_DEVREG_VERSION,
/* .uReserved0 = */ 0,
/* .szName = */ "e1000",
- /* .fFlags = */ PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RC | PDM_DEVREG_FLAGS_R0 | PDM_DEVREG_FLAGS_MSI_X,
+ /* .fFlags = */ PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RC | PDM_DEVREG_FLAGS_R0,
/* .fClass = */ PDM_DEVREG_CLASS_NETWORK,
/* .cMaxInstances = */ ~0U,
/* .uSharedVersion = */ 42,
@@ -8110,6 +8110,7 @@ const PDMDEVREG g_DeviceE1000 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel PRO/1000 MT Desktop Ethernet.",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
@@ -8123,7 +8124,7 @@ const PDMDEVREG g_DeviceE1000 =
/* .pfnSuspend = */ e1kR3Suspend,
/* .pfnResume = */ NULL,
/* .pfnAttach = */ e1kR3Attach,
- /* pfnDeatch */ e1kR3Detach,
+ /* .pfnDeatch = */ e1kR3Detach,
/* .pfnQueryInterface = */ NULL,
/* .pfnInitComplete = */ NULL,
/* .pfnPowerOff = */ e1kR3PowerOff,
diff --git a/src/VBox/Devices/Network/DevINIP.cpp b/src/VBox/Devices/Network/DevINIP.cpp
index e8b5b399acc..98dd5cec1bc 100644
--- a/src/VBox/Devices/Network/DevINIP.cpp
+++ b/src/VBox/Devices/Network/DevINIP.cpp
@@ -739,6 +739,7 @@ const PDMDEVREG g_DeviceINIP =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Internal Network IP stack device",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Network/DevPCNet.cpp b/src/VBox/Devices/Network/DevPCNet.cpp
index ff07b2bcb69..25b580624f5 100644
--- a/src/VBox/Devices/Network/DevPCNet.cpp
+++ b/src/VBox/Devices/Network/DevPCNet.cpp
@@ -5553,6 +5553,7 @@ const PDMDEVREG g_DevicePCNet =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "AMD PCnet Ethernet controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Network/DevVirtioNet.cpp b/src/VBox/Devices/Network/DevVirtioNet.cpp
index 19fcdee7df9..4ac73de8e80 100644
--- a/src/VBox/Devices/Network/DevVirtioNet.cpp
+++ b/src/VBox/Devices/Network/DevVirtioNet.cpp
@@ -2364,6 +2364,7 @@ const PDMDEVREG g_DeviceVirtioNet =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Virtio Ethernet.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevACPI.cpp b/src/VBox/Devices/PC/DevACPI.cpp
index 7ffdef76802..6a28ec7fed3 100644
--- a/src/VBox/Devices/PC/DevACPI.cpp
+++ b/src/VBox/Devices/PC/DevACPI.cpp
@@ -4195,6 +4195,7 @@ const PDMDEVREG g_DeviceACPI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Advanced Configuration and Power Interface",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevDMA.cpp b/src/VBox/Devices/PC/DevDMA.cpp
index 15a2e038dd7..f1d139dae69 100644
--- a/src/VBox/Devices/PC/DevDMA.cpp
+++ b/src/VBox/Devices/PC/DevDMA.cpp
@@ -1137,6 +1137,7 @@ const PDMDEVREG g_DeviceDMA =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "DMA Controller Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevHPET.cpp b/src/VBox/Devices/PC/DevHPET.cpp
index a3a5e331772..a29354f69c3 100644
--- a/src/VBox/Devices/PC/DevHPET.cpp
+++ b/src/VBox/Devices/PC/DevHPET.cpp
@@ -1489,6 +1489,7 @@ const PDMDEVREG g_DeviceHPET =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "High Precision Event Timer (HPET) Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevIoApic.cpp b/src/VBox/Devices/PC/DevIoApic.cpp
index f2be8194bdb..07402d7edc7 100644
--- a/src/VBox/Devices/PC/DevIoApic.cpp
+++ b/src/VBox/Devices/PC/DevIoApic.cpp
@@ -1384,6 +1384,7 @@ const PDMDEVREG g_DeviceIOAPIC =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "I/O Advanced Programmable Interrupt Controller (IO-APIC) Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevLpc-new.cpp b/src/VBox/Devices/PC/DevLpc-new.cpp
index c9dcda0519a..abdeacd9f11 100644
--- a/src/VBox/Devices/PC/DevLpc-new.cpp
+++ b/src/VBox/Devices/PC/DevLpc-new.cpp
@@ -399,6 +399,7 @@ const PDMDEVREG g_DeviceLPC =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Low Pin Count (LPC) Bus",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/PC/DevPIC.cpp b/src/VBox/Devices/PC/DevPIC.cpp
index e76fc78096a..b4a260f9321 100644
--- a/src/VBox/Devices/PC/DevPIC.cpp
+++ b/src/VBox/Devices/PC/DevPIC.cpp
@@ -1054,6 +1054,7 @@ const PDMDEVREG g_DeviceI8259 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel 8259 Programmable Interrupt Controller (PIC) Device.",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevPcArch.cpp b/src/VBox/Devices/PC/DevPcArch.cpp
index 82315b58758..2c880d5240e 100644
--- a/src/VBox/Devices/PC/DevPcArch.cpp
+++ b/src/VBox/Devices/PC/DevPcArch.cpp
@@ -298,6 +298,7 @@ const PDMDEVREG g_DevicePcArch =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "PC Architecture Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/PC/DevPcBios.cpp b/src/VBox/Devices/PC/DevPcBios.cpp
index 1711e541fcd..9a8ea67f7fc 100644
--- a/src/VBox/Devices/PC/DevPcBios.cpp
+++ b/src/VBox/Devices/PC/DevPcBios.cpp
@@ -1810,6 +1810,7 @@ const PDMDEVREG g_DevicePcBios =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "PC BIOS Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/PC/DevPit-i8254.cpp b/src/VBox/Devices/PC/DevPit-i8254.cpp
index 3a18ad1306b..fa84f94429b 100644
--- a/src/VBox/Devices/PC/DevPit-i8254.cpp
+++ b/src/VBox/Devices/PC/DevPit-i8254.cpp
@@ -1539,6 +1539,7 @@ const PDMDEVREG g_DeviceI8254 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel 8254 Programmable Interval Timer (PIT) And Dummy Speaker Device",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/PC/DevRTC.cpp b/src/VBox/Devices/PC/DevRTC.cpp
index 9016e6ecf5a..f6019295fee 100644
--- a/src/VBox/Devices/PC/DevRTC.cpp
+++ b/src/VBox/Devices/PC/DevRTC.cpp
@@ -1276,6 +1276,7 @@ const PDMDEVREG g_DeviceMC146818 =
/* .cbInstanceCC = */ sizeof(RTCSTATECC),
/* .cbInstanceRC = */ sizeof(RTCSTATERC),
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Motorola MC146818 RTC/CMOS Device.",
#ifdef IN_RING3
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Parallel/DevParallel.cpp b/src/VBox/Devices/Parallel/DevParallel.cpp
index 85c9c878fb9..9283f1900d3 100644
--- a/src/VBox/Devices/Parallel/DevParallel.cpp
+++ b/src/VBox/Devices/Parallel/DevParallel.cpp
@@ -824,6 +824,7 @@ const PDMDEVREG g_DeviceParallelPort =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Parallel Communication Port",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Samples/DevPlayground.cpp b/src/VBox/Devices/Samples/DevPlayground.cpp
index 16ae335e935..b0a85a211c5 100644
--- a/src/VBox/Devices/Samples/DevPlayground.cpp
+++ b/src/VBox/Devices/Samples/DevPlayground.cpp
@@ -351,6 +351,7 @@ static const PDMDEVREG g_DevicePlayground =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "VBox Playground Device.",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Samples/VBoxSampleDevice.cpp b/src/VBox/Devices/Samples/VBoxSampleDevice.cpp
index 30b949ce684..d91c01d72bd 100644
--- a/src/VBox/Devices/Samples/VBoxSampleDevice.cpp
+++ b/src/VBox/Devices/Samples/VBoxSampleDevice.cpp
@@ -99,6 +99,7 @@ static const PDMDEVREG g_DeviceSample =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "VBox Sample Device.",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Serial/DevOxPcie958.cpp b/src/VBox/Devices/Serial/DevOxPcie958.cpp
index 3030839d7c5..3a2a31bc3a8 100644
--- a/src/VBox/Devices/Serial/DevOxPcie958.cpp
+++ b/src/VBox/Devices/Serial/DevOxPcie958.cpp
@@ -631,7 +631,7 @@ const PDMDEVREG g_DeviceOxPcie958 =
/* .u32version = */ PDM_DEVREG_VERSION,
/* .uReserved0 = */ 0,
/* .szName = */ "oxpcie958uart",
- /* .fFlags = */ PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RC | PDM_DEVREG_FLAGS_R0 | PDM_DEVREG_FLAGS_MSI_X,
+ /* .fFlags = */ PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RC | PDM_DEVREG_FLAGS_R0,
/* .fClass = */ PDM_DEVREG_CLASS_SERIAL,
/* .cMaxInstances = */ ~0U,
/* .uSharedVersion = */ 42,
@@ -639,6 +639,7 @@ const PDMDEVREG g_DeviceOxPcie958 =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ VBOX_MSIX_MAX_ENTRIES,
/* .pszDescription = */ "OXPCIe958 based UART controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Serial/DevSerial.cpp b/src/VBox/Devices/Serial/DevSerial.cpp
index 93ead7fbc3a..d723ee26540 100644
--- a/src/VBox/Devices/Serial/DevSerial.cpp
+++ b/src/VBox/Devices/Serial/DevSerial.cpp
@@ -478,6 +478,7 @@ const PDMDEVREG g_DeviceSerialPort =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Serial Communication Port",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Storage/DevAHCI.cpp b/src/VBox/Devices/Storage/DevAHCI.cpp
index 3d7206e500f..11a0e3c77ac 100644
--- a/src/VBox/Devices/Storage/DevAHCI.cpp
+++ b/src/VBox/Devices/Storage/DevAHCI.cpp
@@ -6243,6 +6243,7 @@ const PDMDEVREG g_DeviceAHCI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel AHCI controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Storage/DevATA.cpp b/src/VBox/Devices/Storage/DevATA.cpp
index d271762c116..3c2210e9af0 100644
--- a/src/VBox/Devices/Storage/DevATA.cpp
+++ b/src/VBox/Devices/Storage/DevATA.cpp
@@ -8069,6 +8069,7 @@ const PDMDEVREG g_DevicePIIX3IDE =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Intel PIIX3 ATA controller.\n"
" LUN #0 is primary master.\n"
" LUN #1 is primary slave.\n"
diff --git a/src/VBox/Devices/Storage/DevBusLogic.cpp b/src/VBox/Devices/Storage/DevBusLogic.cpp
index 10864a813ad..2e62e1f1146 100644
--- a/src/VBox/Devices/Storage/DevBusLogic.cpp
+++ b/src/VBox/Devices/Storage/DevBusLogic.cpp
@@ -4504,6 +4504,7 @@ const PDMDEVREG g_DeviceBusLogic =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "BusLogic BT-958 SCSI host adapter.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Storage/DevFdc.cpp b/src/VBox/Devices/Storage/DevFdc.cpp
index 413ee2c5381..761c226c3c1 100644
--- a/src/VBox/Devices/Storage/DevFdc.cpp
+++ b/src/VBox/Devices/Storage/DevFdc.cpp
@@ -2848,6 +2848,7 @@ const PDMDEVREG g_DeviceFloppyController =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Floppy drive controller (Intel 82078)",
#if defined(IN_RING3)
/* .pszRCMod = */ "",
diff --git a/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp b/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
index 1a993c17092..38b86c21729 100644
--- a/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
+++ b/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
@@ -5526,6 +5526,7 @@ static DECLCALLBACK(int) lsilogicR3Construct(PPDMDEVINS pDevIns, int iInstance,
MsiReg.iMsixCapOffset = 0x80;
MsiReg.iMsixNextOffset = 0x00;
MsiReg.iMsixBar = 3;
+ Assert(pDevIns->pReg->cMaxMsixVectors >= MsiReg.cMsixVectors); /* fix device registration when enabling this */
# else
MsiReg.cMsiVectors = 1;
MsiReg.iMsiCapOffset = 0x80;
@@ -5751,6 +5752,7 @@ const PDMDEVREG g_DeviceLsiLogicSCSI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "LSI Logic 53c1030 SCSI controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
@@ -5825,6 +5827,7 @@ const PDMDEVREG g_DeviceLsiLogicSAS =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "LSI Logic SAS1068 controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/Storage/DevVirtioSCSI.cpp b/src/VBox/Devices/Storage/DevVirtioSCSI.cpp
index dbf2466e3c5..706edc65c2b 100644
--- a/src/VBox/Devices/Storage/DevVirtioSCSI.cpp
+++ b/src/VBox/Devices/Storage/DevVirtioSCSI.cpp
@@ -2381,6 +2381,7 @@ const PDMDEVREG g_DeviceVirtioSCSI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Virtio Host SCSI.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/USB/DevOHCI.cpp b/src/VBox/Devices/USB/DevOHCI.cpp
index a82d8fd5587..c2089355471 100644
--- a/src/VBox/Devices/USB/DevOHCI.cpp
+++ b/src/VBox/Devices/USB/DevOHCI.cpp
@@ -6159,6 +6159,7 @@ const PDMDEVREG g_DeviceOHCI =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "OHCI USB controller.\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/Devices/VMMDev/VMMDev.cpp b/src/VBox/Devices/VMMDev/VMMDev.cpp
index f9348362aef..5ef6535b9b3 100644
--- a/src/VBox/Devices/VMMDev/VMMDev.cpp
+++ b/src/VBox/Devices/VMMDev/VMMDev.cpp
@@ -4752,6 +4752,7 @@ extern "C" const PDMDEVREG g_DeviceVMMDev =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 1,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "VirtualBox VMM Device\n",
#if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/ExtPacks/BusMouseSample/BusMouse.cpp b/src/VBox/ExtPacks/BusMouseSample/BusMouse.cpp
index 9345f3f7a5e..bcab2b80fc4 100644
--- a/src/VBox/ExtPacks/BusMouseSample/BusMouse.cpp
+++ b/src/VBox/ExtPacks/BusMouseSample/BusMouse.cpp
@@ -844,6 +844,7 @@ const PDMDEVREG g_DeviceBusMouse =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Microsoft Bus Mouse controller. LUN #0 is the mouse connector.",
# if defined(IN_RING3)
/* .pszRCMod = */ "VBoxDDRC.rc",
diff --git a/src/VBox/VMM/VMMAll/APICAll.cpp b/src/VBox/VMM/VMMAll/APICAll.cpp
index 89ebf85dcb0..2f069a21ba3 100644
--- a/src/VBox/VMM/VMMAll/APICAll.cpp
+++ b/src/VBox/VMM/VMMAll/APICAll.cpp
@@ -3524,6 +3524,7 @@ const PDMDEVREG g_DeviceAPIC =
/* .cbInstanceCC = */ 0,
/* .cbInstanceRC = */ 0,
/* .cMaxPciDevices = */ 0,
+ /* .cMaxMsixVectors = */ 0,
/* .pszDescription = */ "Advanced Programmable Interrupt Controller",
#if defined(IN_RING3)
/* .szRCMod = */ "VMMRC.rc",
diff --git a/src/VBox/VMM/VMMR0/PDMR0Device.cpp b/src/VBox/VMM/VMMR0/PDMR0Device.cpp
index a1e3445e520..05796cbb7a7 100644
--- a/src/VBox/VMM/VMMR0/PDMR0Device.cpp
+++ b/src/VBox/VMM/VMMR0/PDMR0Device.cpp
@@ -30,10 +30,11 @@
#include <VBox/vmm/vmm.h>
#include <VBox/vmm/hm.h>
#include <VBox/vmm/vmcc.h>
+#include <VBox/vmm/gvmm.h>
#include <VBox/log.h>
#include <VBox/err.h>
-#include <VBox/vmm/gvmm.h>
+#include <VBox/msi.h>
#include <VBox/sup.h>
#include <iprt/asm.h>
#include <iprt/assert.h>
@@ -1812,6 +1813,8 @@ VMMR0DECL(int) PDMR0DeviceRegisterModule(void *hMod, PPDMDEVMODREGR0 pModReg)
AssertLogRelMsgReturn(pDevReg->fFlags != 0, ("[%u]: %#x\n", i, pDevReg->fFlags), VERR_INVALID_PARAMETER);
AssertLogRelMsgReturn(pDevReg->cMaxInstances > 0, ("[%u]: %#x\n", i, pDevReg->cMaxInstances), VERR_INVALID_PARAMETER);
AssertLogRelMsgReturn(pDevReg->cMaxPciDevices <= 8, ("[%u]: %#x\n", i, pDevReg->cMaxPciDevices), VERR_INVALID_PARAMETER);
+ AssertLogRelMsgReturn(pDevReg->cMaxMsixVectors <= VBOX_MSIX_MAX_ENTRIES,
+ ("[%u]: %#x\n", i, pDevReg->cMaxMsixVectors), VERR_INVALID_PARAMETER);
/* The name must be printable ascii and correctly terminated. */
for (size_t off = 0; off < RT_ELEMENTS(pDevReg->szName); off++)
diff --git a/src/VBox/VMM/VMMR3/PDMDevHlp.cpp b/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
index 4d30f55e612..20bec09eb4b 100644
--- a/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
+++ b/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
@@ -1927,9 +1927,9 @@ static DECLCALLBACK(int) pdmR3DevHlp_PCIRegisterMsi(PPDMDEVINS pDevIns, PPDMPCID
AssertLogRelMsgReturn(pDevIns->pReg->cMaxPciDevices > 0,
("'%s'/%d: cMaxPciDevices is 0\n", pDevIns->pReg->szName, pDevIns->iInstance),
VERR_WRONG_ORDER);
- AssertLogRelMsgReturn((pDevIns->pReg->fFlags & PDM_DEVREG_FLAGS_MSI_X) || pMsiReg->cMsixVectors == 0,
- ("'%s'/%d: PDM_DEVREG_FLAGS_MSI_X not set and cMsixVectors=%u\n",
- pDevIns->pReg->szName, pDevIns->iInstance, pMsiReg->cMsixVectors),
+ AssertLogRelMsgReturn(pMsiReg->cMsixVectors <= pDevIns->pReg->cMaxMsixVectors,
+ ("'%s'/%d: cMsixVectors=%u cMaxMsixVectors=%u\n",
+ pDevIns->pReg->szName, pDevIns->iInstance, pMsiReg->cMsixVectors, pDevIns->pReg->cMaxMsixVectors),
VERR_INVALID_FLAGS);
PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3; Assert(pBus);
diff --git a/src/VBox/VMM/VMMR3/PDMDevice.cpp b/src/VBox/VMM/VMMR3/PDMDevice.cpp
index 17009665f85..7ba4c9a30f7 100644
--- a/src/VBox/VMM/VMMR3/PDMDevice.cpp
+++ b/src/VBox/VMM/VMMR3/PDMDevice.cpp
@@ -38,6 +38,7 @@
#include <VBox/version.h>
#include <VBox/log.h>
+#include <VBox/msi.h>
#include <VBox/err.h>
#include <iprt/alloc.h>
#include <iprt/alloca.h>
@@ -761,6 +762,9 @@ static DECLCALLBACK(int) pdmR3DevReg_Register(PPDMDEVREGCB pCallbacks, PCPDMDEVR
pReg->u32VersionEnd, PDM_DEVREG_VERSION, pReg->szName));
AssertLogRelMsgReturn(pReg->cMaxPciDevices <= 8, ("%#x (szName=%s)\n", pReg->cMaxPciDevices, pReg->szName),
VERR_PDM_INVALID_DEVICE_REGISTRATION);
+ AssertLogRelMsgReturn(pReg->cMaxMsixVectors <= VBOX_MSIX_MAX_ENTRIES,
+ ("%#x (szName=%s)\n", pReg->cMaxMsixVectors, pReg->szName),
+ VERR_PDM_INVALID_DEVICE_REGISTRATION);
/*
* Check for duplicate and find FIFO entry at the same time.