summary refs log tree commit diff
path: root/devices/src/pci/vfio_pci.rs
diff options
context:
space:
mode:
authorXiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>2019-11-08 18:06:29 +0800
committerCommit Bot <commit-bot@chromium.org>2020-02-19 19:31:56 +0000
commitde92ad05c71e4996852e3c90acb3eafe559bc57b (patch)
tree75f5030e89f8af459930397697c903a5573511fb /devices/src/pci/vfio_pci.rs
parent9f7e38de575e1b6fa7b009489c554b5d27de401a (diff)
downloadcrosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar.gz
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar.bz2
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar.lz
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar.xz
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.tar.zst
crosvm-de92ad05c71e4996852e3c90acb3eafe559bc57b.zip
Vfio: Enable multi vectors in irq_enable()
When msix is enabled, msix will have multi vectors, this patch enable
mutlti vectors in vfio_device.irq_enable() function.

BUG=chromium:992270
TEST=passthrough a device with msix capability to guest, and check
device msix function in guest

Change-Id: I5f8265e7badec8551ff9a974462f08425ee93ab2
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1987813
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'devices/src/pci/vfio_pci.rs')
-rw-r--r--devices/src/pci/vfio_pci.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/devices/src/pci/vfio_pci.rs b/devices/src/pci/vfio_pci.rs
index 216c6b2..766cbcf 100644
--- a/devices/src/pci/vfio_pci.rs
+++ b/devices/src/pci/vfio_pci.rs
@@ -468,7 +468,9 @@ impl VfioPciDevice {
         }
 
         if let Some(ref interrupt_evt) = self.interrupt_evt {
-            if let Err(e) = self.device.irq_enable(interrupt_evt, VfioIrqType::Intx) {
+            let mut fds = Vec::new();
+            fds.push(interrupt_evt);
+            if let Err(e) = self.device.irq_enable(fds, VfioIrqType::Intx) {
                 error!("Intx enable failed: {}", e);
                 return;
             }
@@ -524,7 +526,9 @@ impl VfioPciDevice {
             }
         };
 
-        if let Err(e) = self.device.irq_enable(irqfd, VfioIrqType::Msi) {
+        let mut fds = Vec::new();
+        fds.push(irqfd);
+        if let Err(e) = self.device.irq_enable(fds, VfioIrqType::Msi) {
             error!("failed to enable msi: {}", e);
             self.enable_intx();
             return;