summary refs log tree commit diff
path: root/devices/src
diff options
context:
space:
mode:
authorDaniel Verkamp <dverkamp@chromium.org>2019-10-30 16:40:12 -0700
committerCommit Bot <commit-bot@chromium.org>2019-10-31 19:14:13 +0000
commit85858f580eada8dd85c8c798ef3e98f18d92dc1e (patch)
tree86a13553d2420d848f87236b6791ecb01f0e71e3 /devices/src
parentac0b9b71d142f381d39162a1ac52c7d143700a1b (diff)
downloadcrosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar.gz
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar.bz2
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar.lz
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar.xz
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.tar.zst
crosvm-85858f580eada8dd85c8c798ef3e98f18d92dc1e.zip
devices: virtio: disable MSI-X for block and net
Temporarily turn off MSI-X support in the block and net devices since it
seems this is responsible for some test flakiness that manifests as
timeouts/hangs in the ProxyDevice read handler, e.g.:

  [devices/src/proxy.rs:238] failed read from child device process
  virtio-pci (virtio-block): failed to receive request or response:
  Resource temporarily unavailable (os error 11)

This is a minimally-invasive change to disable MSI-X without a full
revert of the relevant patches by just changing the relevant devices so
that they no longer request MSI-X vectors.

BUG=chromium:1019986
BUG=chromium:854765
TEST=check /proc/interrupts inside crosvm does not contain "PCI-MSI"

Change-Id: Ib37b503e609e2b9e22265370bcfe5804f04057ef
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1891643
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Diffstat (limited to 'devices/src')
-rw-r--r--devices/src/virtio/block.rs5
-rw-r--r--devices/src/virtio/net.rs5
-rw-r--r--devices/src/virtio/vhost/net.rs4
-rw-r--r--devices/src/virtio/vhost/vsock.rs4
4 files changed, 0 insertions, 18 deletions
diff --git a/devices/src/virtio/block.rs b/devices/src/virtio/block.rs
index 2288849..8e11a29 100644
--- a/devices/src/virtio/block.rs
+++ b/devices/src/virtio/block.rs
@@ -30,7 +30,6 @@ 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;
@@ -742,10 +741,6 @@ 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 abbaa98..740a1d8 100644
--- a/devices/src/virtio/net.rs
+++ b/devices/src/virtio/net.rs
@@ -30,7 +30,6 @@ const MAX_BUFFER_SIZE: usize = 65562;
 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 {
@@ -457,10 +456,6 @@ 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 6bfc52a..c07623d 100644
--- a/devices/src/virtio/vhost/net.rs
+++ b/devices/src/virtio/vhost/net.rs
@@ -154,10 +154,6 @@ 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 b4101eb..6dc0fbb 100644
--- a/devices/src/virtio/vhost/vsock.rs
+++ b/devices/src/virtio/vhost/vsock.rs
@@ -116,10 +116,6 @@ impl VirtioDevice for Vsock {
         TYPE_VSOCK
     }
 
-    fn msix_vectors(&self) -> u16 {
-        NUM_MSIX_VECTORS
-    }
-
     fn queue_max_sizes(&self) -> &[u16] {
         QUEUE_SIZES
     }