From 1de388ae027a09a8170bf3fb2c4b9f1a2b67e02d Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 14 Nov 2019 13:45:46 -0800 Subject: [PATCH] Revert "devices: virtio: disable MSI-X for block and net" Re-enable MSI-X for virtio-blk and virtio-net now that the underlying issue causing hangs at startup has been fixed (CL:1917495). BUG=chromium:1019986 TEST=Boot Termina on nami This reverts commit 85858f580eada8dd85c8c798ef3e98f18d92dc1e. Change-Id: I5a5e197243a16aee2b2aaf3145a1180749b097b2 Signed-off-by: Daniel Verkamp Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1918261 Reviewed-by: Zide Chen Reviewed-by: Zach Reizner Tested-by: kokoro --- devices/src/virtio/block.rs | 5 +++++ devices/src/virtio/net.rs | 5 +++++ devices/src/virtio/vhost/net.rs | 4 ++++ devices/src/virtio/vhost/vsock.rs | 4 ++++ 4 files changed, 18 insertions(+) diff --git a/devices/src/virtio/block.rs b/devices/src/virtio/block.rs index 477a9deb9e..2a515afadf 100644 --- a/devices/src/virtio/block.rs +++ b/devices/src/virtio/block.rs @@ -29,6 +29,7 @@ use super::{ const QUEUE_SIZE: u16 = 256; const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE]; +const NUM_MSIX_VECTORS: u16 = 2; const SECTOR_SHIFT: u8 = 9; const SECTOR_SIZE: u64 = 0x01 << SECTOR_SHIFT; const MAX_DISCARD_SECTORS: u32 = u32::MAX; @@ -706,6 +707,10 @@ impl VirtioDevice for Block { TYPE_BLOCK } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/net.rs b/devices/src/virtio/net.rs index a2b10580ed..b439238b32 100644 --- a/devices/src/virtio/net.rs +++ b/devices/src/virtio/net.rs @@ -25,6 +25,7 @@ use super::{Interrupt, Queue, Reader, VirtioDevice, Writer, TYPE_NET}; const QUEUE_SIZE: u16 = 256; const NUM_QUEUES: usize = 2; const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE, QUEUE_SIZE]; +const NUM_MSIX_VECTORS: u16 = NUM_QUEUES as u16; #[derive(Debug)] pub enum NetError { @@ -406,6 +407,10 @@ where TYPE_NET } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/vhost/net.rs b/devices/src/virtio/vhost/net.rs index 8462da58ce..5834aa7ef8 100644 --- a/devices/src/virtio/vhost/net.rs +++ b/devices/src/virtio/vhost/net.rs @@ -150,6 +150,10 @@ where TYPE_NET } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/vhost/vsock.rs b/devices/src/virtio/vhost/vsock.rs index ed95b8b73d..231e13456f 100644 --- a/devices/src/virtio/vhost/vsock.rs +++ b/devices/src/virtio/vhost/vsock.rs @@ -112,6 +112,10 @@ impl VirtioDevice for Vsock { TYPE_VSOCK } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES }