diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2019-11-19 09:47:33 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-06 01:45:44 +0000 |
commit | bb712d649f82f623d9d2ed25f9ab758fa4343e19 (patch) | |
tree | dbee8a3200cda942f78f324846e72b0515ff3996 /src/linux.rs | |
parent | 277ea5f4b4e2e2fed0b07f68451514cef521a95a (diff) | |
download | crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar.gz crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar.bz2 crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar.lz crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar.xz crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.tar.zst crosvm-bb712d649f82f623d9d2ed25f9ab758fa4343e19.zip |
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 <dverkamp@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1925169 Reviewed-by: Zide Chen <zide.chen@intel.com> Reviewed-by: Dylan Reid <dgreid@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/linux.rs')
-rw-r--r-- | src/linux.rs | 16 |
1 files changed, 5 insertions, 11 deletions
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::<VmIrqResponse, VmIrqRequest>().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::<VmIrqResponse, VmIrqRequest>().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<dyn PciDevice>; pci_devices.push((dev, stub.jail)); } |