summary refs log tree commit diff
path: root/devices/src/virtio/wl.rs
diff options
context:
space:
mode:
authorZide Chen <zide.chen@intel.corp-partner.google.com>2019-09-17 11:31:53 -0700
committerCommit Bot <commit-bot@chromium.org>2019-10-24 20:46:39 +0000
commit1f20497b86985bd927df9c171174a29cf47ce25f (patch)
tree7c388c4603283b122e89c895dd97a12148a0f601 /devices/src/virtio/wl.rs
parent1d15851b275b72aa08d13ac7bde9dd8464cfeed0 (diff)
downloadcrosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar.gz
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar.bz2
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar.lz
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar.xz
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.tar.zst
crosvm-1f20497b86985bd927df9c171174a29cf47ce25f.zip
devices: implement MsixConfig struct and generic MSI-X functions
The MsixConfig struct is responsible for all the operations of MSI-X
Capability Structure and MSI-X Table.

A msix_config object is created for each virtio device.

BUG=chromium:854765
TEST=cargo test -p devices

Change-Id: Ide7c34d335d49a201f20b0a4307bcda97d1d61b7
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1828337
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'devices/src/virtio/wl.rs')
-rw-r--r--devices/src/virtio/wl.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/devices/src/virtio/wl.rs b/devices/src/virtio/wl.rs
index a4988cb..4531511 100644
--- a/devices/src/virtio/wl.rs
+++ b/devices/src/virtio/wl.rs
@@ -48,6 +48,7 @@ use std::sync::atomic::{AtomicUsize, Ordering};
 use std::sync::Arc;
 use std::thread;
 use std::time::Duration;
+use sync::Mutex;
 
 #[cfg(feature = "wl-dmabuf")]
 use libc::{dup, EBADF, EINVAL};
@@ -73,6 +74,7 @@ use super::resource_bridge::*;
 use super::{
     DescriptorChain, Queue, VirtioDevice, INTERRUPT_STATUS_USED_RING, TYPE_WL, VIRTIO_F_VERSION_1,
 };
+use crate::pci::MsixConfig;
 use vm_control::{MaybeOwnedFd, VmMemoryControlRequestSocket, VmMemoryRequest, VmMemoryResponse};
 
 const VIRTWL_SEND_MAX_ALLOCS: usize = 28;
@@ -1743,6 +1745,7 @@ impl VirtioDevice for Wl {
         mem: GuestMemory,
         interrupt_evt: EventFd,
         interrupt_resample_evt: EventFd,
+        _msix_config: Option<Arc<Mutex<MsixConfig>>>,
         status: Arc<AtomicUsize>,
         mut queues: Vec<Queue>,
         queue_evts: Vec<EventFd>,