From bb712d649f82f623d9d2ed25f9ab758fa4343e19 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Tue, 19 Nov 2019 09:47:33 -0800 Subject: devices: virtio: enable MSI-X for all devices All virtio devices can use the same generic calculation for number of MSI-X vectors required: number of queues plus one for configuration changes. Move this calculation to the VirtioPciDevice implementation and remove the Option to unconditionally enable MSI-X support for all PCI virtio devices. BUG=chromium:854765 TEST=Verify all virtio interrupts in /proc/interrupts are PCI-MSI Change-Id: I5905ab52840e7617b0b342ec6ca3f75dccd16e4d Signed-off-by: Daniel Verkamp Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1925169 Reviewed-by: Zide Chen Reviewed-by: Dylan Reid Tested-by: kokoro --- src/linux.rs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'src/linux.rs') diff --git a/src/linux.rs b/src/linux.rs index a3df995..9b984d1 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -1044,17 +1044,11 @@ fn create_devices( let mut pci_devices = Vec::new(); for stub in stubs { - let dev = if stub.dev.msix_vectors() > 0 { - let (msi_host_socket, msi_device_socket) = - msg_socket::pair::().map_err(Error::CreateSocket)?; - control_sockets.push(TaggedControlSocket::VmIrq(msi_host_socket)); - - VirtioPciDevice::new(mem.clone(), stub.dev, Some(msi_device_socket)) - .map_err(Error::VirtioPciDev)? - } else { - VirtioPciDevice::new(mem.clone(), stub.dev, None).map_err(Error::VirtioPciDev)? - }; - + let (msi_host_socket, msi_device_socket) = + msg_socket::pair::().map_err(Error::CreateSocket)?; + control_sockets.push(TaggedControlSocket::VmIrq(msi_host_socket)); + let dev = VirtioPciDevice::new(mem.clone(), stub.dev, msi_device_socket) + .map_err(Error::VirtioPciDev)?; let dev = Box::new(dev) as Box; pci_devices.push((dev, stub.jail)); } -- cgit 1.4.1