diff --git a/devices/src/pci/vfio_pci.rs b/devices/src/pci/vfio_pci.rs index 46ee5372b4..11ee0e7d50 100644 --- a/devices/src/pci/vfio_pci.rs +++ b/devices/src/pci/vfio_pci.rs @@ -547,9 +547,10 @@ impl VfioPciDevice { } if let Some(ref interrupt_evt) = self.interrupt_evt { - let mut fds = Vec::new(); - fds.push(interrupt_evt); - if let Err(e) = self.device.irq_enable(fds, VFIO_PCI_INTX_IRQ_INDEX) { + if let Err(e) = self + .device + .irq_enable(&[interrupt_evt], VFIO_PCI_INTX_IRQ_INDEX) + { error!("Intx enable failed: {}", e); return; } @@ -617,9 +618,7 @@ impl VfioPciDevice { } }; - let mut fds = Vec::new(); - fds.push(irqfd); - if let Err(e) = self.device.irq_enable(fds, VFIO_PCI_MSI_IRQ_INDEX) { + if let Err(e) = self.device.irq_enable(&[irqfd], VFIO_PCI_MSI_IRQ_INDEX) { error!("failed to enable msi: {}", e); self.enable_intx(); return; @@ -646,7 +645,10 @@ impl VfioPciDevice { }; if let Some(descriptors) = irqfds { - if let Err(e) = self.device.irq_enable(descriptors, VFIO_PCI_MSIX_IRQ_INDEX) { + if let Err(e) = self + .device + .irq_enable(&descriptors, VFIO_PCI_MSIX_IRQ_INDEX) + { error!("failed to enable msix: {}", e); self.enable_intx(); return; diff --git a/devices/src/vfio.rs b/devices/src/vfio.rs index 9fda0d65db..9d37af757b 100644 --- a/devices/src/vfio.rs +++ b/devices/src/vfio.rs @@ -391,7 +391,7 @@ impl VfioDevice { /// Enable vfio device's irq and associate Irqfd Event with device. /// When MSIx is enabled, multi vectors will be supported, so descriptors is vector and the vector /// length is the num of MSIx vectors - pub fn irq_enable(&self, descriptors: Vec<&Event>, index: u32) -> Result<(), VfioError> { + pub fn irq_enable(&self, descriptors: &[&Event], index: u32) -> Result<(), VfioError> { let count = descriptors.len(); let u32_size = mem::size_of::(); let mut irq_set = vec_with_array_field::(count);