diff --git a/virtio-devices/src/device.rs b/virtio-devices/src/device.rs index 5c63ad812..5b701c6cb 100644 --- a/virtio-devices/src/device.rs +++ b/virtio-devices/src/device.rs @@ -68,7 +68,7 @@ pub struct VirtioSharedMemoryList { pub struct ActivationContext { pub mem: GuestMemoryAtomic, pub interrupt_cb: Arc, - pub queues: Vec<(usize, Queue, EventFd)>, + pub queues: Vec<(u16, Queue, EventFd)>, pub device_status: Arc, } @@ -307,7 +307,7 @@ impl VirtioCommon { pub fn activate( &mut self, - queues: &[(usize, Queue, EventFd)], + queues: &[(u16, Queue, EventFd)], interrupt_cb: Arc, ) -> ActivateResult { if queues.len() < self.min_queues.into() { diff --git a/virtio-devices/src/transport/pci_device.rs b/virtio-devices/src/transport/pci_device.rs index 429a03fa4..0c1593f53 100644 --- a/virtio-devices/src/transport/pci_device.rs +++ b/virtio-devices/src/transport/pci_device.rs @@ -316,7 +316,7 @@ pub struct VirtioPciDeviceActivator { memory: Option>, device: Arc>, device_activated: Arc, - queues: Option>, + queues: Option>, barrier: Option>, id: String, status: Arc, @@ -834,7 +834,7 @@ impl VirtioPciDevice { } queues.push(( - queue_index, + queue_index as u16, vm_virtio::clone_queue(queue), self.queue_evts[queue_index].try_clone().unwrap(), )); diff --git a/virtio-devices/src/vdpa.rs b/virtio-devices/src/vdpa.rs index 06bd1023f..f8644f820 100644 --- a/virtio-devices/src/vdpa.rs +++ b/virtio-devices/src/vdpa.rs @@ -112,7 +112,7 @@ pub struct Vdpa { id: String, vhost: Option>>, iova_range: VhostVdpaIovaRange, - enabled_queues: BTreeMap, + enabled_queues: BTreeMap, backend_features: u64, migrating: bool, } @@ -209,7 +209,7 @@ impl Vdpa { self.vhost .as_ref() .unwrap() - .set_vring_enable(*queue_index, enable) + .set_vring_enable(*queue_index as usize, enable) .map_err(Error::SetVringEnable)?; *enabled = enable; } @@ -222,7 +222,7 @@ impl Vdpa { &mut self, _mem: &GuestMemoryMmap, virtio_interrupt: &dyn VirtioInterrupt, - queues: &[(usize, Queue, EventFd)], + queues: &[(u16, Queue, EventFd)], ) -> Result<()> { assert!(self.vhost.is_some()); self.vhost @@ -242,7 +242,7 @@ impl Vdpa { self.vhost .as_ref() .unwrap() - .set_vring_num(*queue_index, queue_size) + .set_vring_num(*queue_index as usize, queue_size) .map_err(Error::SetVringNum)?; let config_data = VringConfigData { @@ -276,28 +276,28 @@ impl Vdpa { self.vhost .as_ref() .unwrap() - .set_vring_addr(*queue_index, &config_data) + .set_vring_addr(*queue_index as usize, &config_data) .map_err(Error::SetVringAddr)?; self.vhost .as_ref() .unwrap() - .set_vring_base(*queue_index, 0) + .set_vring_base(*queue_index as usize, 0) .map_err(Error::SetVringBase)?; if let Some(eventfd) = - virtio_interrupt.notifier(VirtioInterruptType::Queue(*queue_index as u16)) + virtio_interrupt.notifier(VirtioInterruptType::Queue(*queue_index)) { self.vhost .as_ref() .unwrap() - .set_vring_call(*queue_index, &eventfd) + .set_vring_call(*queue_index as usize, &eventfd) .map_err(Error::SetVringCall)?; } self.vhost .as_ref() .unwrap() - .set_vring_kick(*queue_index, queue_evt) + .set_vring_kick(*queue_index as usize, queue_evt) .map_err(Error::SetVringKick)?; self.enabled_queues.insert(*queue_index, false); diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index 29fc28227..a949a82c2 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -277,7 +277,7 @@ pub struct VhostUserEpollHandler { pub mem: GuestMemoryAtomic, pub kill_evt: EventFd, pub pause_evt: EventFd, - pub queues: Vec<(usize, Queue, EventFd)>, + pub queues: Vec<(u16, Queue, EventFd)>, pub virtio_interrupt: Arc, pub acked_features: u64, pub acked_protocol_features: u64, @@ -484,7 +484,7 @@ impl VhostUserCommon { pub fn activate( &mut self, mem: GuestMemoryAtomic, - queues: &[(usize, Queue, EventFd)], + queues: &[(u16, Queue, EventFd)], interrupt_cb: Arc, acked_features: u64, backend_req_handler: Option>, diff --git a/virtio-devices/src/vhost_user/vu_common_ctrl.rs b/virtio-devices/src/vhost_user/vu_common_ctrl.rs index a59381c7c..3aac03cc9 100644 --- a/virtio-devices/src/vhost_user/vu_common_ctrl.rs +++ b/virtio-devices/src/vhost_user/vu_common_ctrl.rs @@ -65,7 +65,7 @@ pub struct VhostUserHandle { shm_log: Option>, acked_features: u64, vrings_info: Option>, - queue_indexes: Vec, + queue_indexes: Vec, } impl VhostUserHandle { @@ -167,7 +167,7 @@ impl VhostUserHandle { pub fn setup_vhost_user( &mut self, mem: &GuestMemoryMmap, - queues: &[(usize, Queue, EventFd)], + queues: &[(u16, Queue, EventFd)], virtio_interrupt: &dyn VirtioInterrupt, acked_features: u64, backend_req_handler: &Option>, @@ -195,7 +195,7 @@ impl VhostUserHandle { // at early stage. for (queue_index, queue, _) in queues.iter() { self.vu - .set_vring_num(*queue_index, queue.size()) + .set_vring_num(*queue_index as usize, queue.size()) .map_err(Error::VhostUserSetVringNum)?; } @@ -260,7 +260,7 @@ impl VhostUserHandle { }); self.vu - .set_vring_addr(*queue_index, &config_data) + .set_vring_addr(*queue_index as usize, &config_data) .map_err(Error::VhostUserSetVringAddr)?; let base = if let Some(bases) = vring_bases { bases[i] as u16 @@ -271,19 +271,19 @@ impl VhostUserHandle { .0 }; self.vu - .set_vring_base(*queue_index, base) + .set_vring_base(*queue_index as usize, base) .map_err(Error::VhostUserSetVringBase)?; if let Some(eventfd) = - virtio_interrupt.notifier(VirtioInterruptType::Queue(*queue_index as u16)) + virtio_interrupt.notifier(VirtioInterruptType::Queue(*queue_index)) { self.vu - .set_vring_call(*queue_index, &eventfd) + .set_vring_call(*queue_index as usize, &eventfd) .map_err(Error::VhostUserSetVringCall)?; } self.vu - .set_vring_kick(*queue_index, queue_evt) + .set_vring_kick(*queue_index as usize, queue_evt) .map_err(Error::VhostUserSetVringKick)?; self.queue_indexes.push(*queue_index); @@ -303,10 +303,10 @@ impl VhostUserHandle { Ok(()) } - fn enable_vhost_user_vrings(&mut self, queue_indexes: Vec, enable: bool) -> Result<()> { + fn enable_vhost_user_vrings(&mut self, queue_indexes: Vec, enable: bool) -> Result<()> { for queue_index in queue_indexes { self.vu - .set_vring_enable(queue_index, enable) + .set_vring_enable(queue_index as usize, enable) .map_err(Error::VhostUserSetVringEnable)?; } @@ -316,12 +316,12 @@ impl VhostUserHandle { pub fn reset_vhost_user(&mut self) -> Result<()> { for queue_index in self.queue_indexes.drain(..) { self.vu - .set_vring_enable(queue_index, false) + .set_vring_enable(queue_index as usize, false) .map_err(Error::VhostUserSetVringEnable)?; let _ = self .vu - .get_vring_base(queue_index) + .get_vring_base(queue_index as usize) .map_err(Error::VhostUserGetVringBase)?; } @@ -360,7 +360,7 @@ impl VhostUserHandle { pub fn reinitialize_vhost_user( &mut self, mem: &GuestMemoryMmap, - queues: &[(usize, Queue, EventFd)], + queues: &[(u16, Queue, EventFd)], virtio_interrupt: &dyn VirtioInterrupt, acked_features: u64, acked_protocol_features: u64, @@ -581,7 +581,7 @@ impl VhostUserHandle { for queue_index in &self.queue_indexes { let base = self .vu - .get_vring_base(*queue_index) + .get_vring_base(*queue_index as usize) .map_err(Error::VhostUserGetVringBase)?; vring_bases.push(base as u64); }