mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-02-02 01:45:21 +00:00
vm-virtio: Define AccessPlatform trait
Moving the whole codebase to rely on the AccessPlatform definition from vm-virtio so that we can fully remove it from virtio-queue crate. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
parent
8759c3db3e
commit
8eed276d14
@ -35,11 +35,12 @@ use std::sync::MutexGuard;
|
|||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_bindings::bindings::virtio_blk::*;
|
use virtio_bindings::bindings::virtio_blk::*;
|
||||||
use virtio_queue::{AccessPlatform, DescriptorChain};
|
use virtio_queue::DescriptorChain;
|
||||||
use vm_memory::{
|
use vm_memory::{
|
||||||
bitmap::AtomicBitmap, bitmap::Bitmap, ByteValued, Bytes, GuestAddress, GuestMemory,
|
bitmap::AtomicBitmap, bitmap::Bitmap, ByteValued, Bytes, GuestAddress, GuestMemory,
|
||||||
GuestMemoryError, GuestMemoryLoadGuard,
|
GuestMemoryError, GuestMemoryLoadGuard,
|
||||||
};
|
};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;
|
type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;
|
||||||
|
@ -13,8 +13,9 @@ use virtio_bindings::bindings::virtio_net::{
|
|||||||
VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
|
VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
|
||||||
VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_OK,
|
VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_OK,
|
||||||
};
|
};
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError};
|
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
@ -10,8 +10,9 @@ use std::num::Wrapping;
|
|||||||
use std::os::unix::io::{AsRawFd, RawFd};
|
use std::os::unix::io::{AsRawFd, RawFd};
|
||||||
use std::sync::atomic::{AtomicU64, Ordering};
|
use std::sync::atomic::{AtomicU64, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{Bytes, GuestAddress, GuestMemory, GuestMemoryAtomic};
|
use vm_memory::{Bytes, GuestAddress, GuestMemory, GuestMemoryAtomic};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct TxVirtio {
|
pub struct TxVirtio {
|
||||||
|
@ -35,10 +35,11 @@ use std::{collections::HashMap, convert::TryInto};
|
|||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_bindings::bindings::virtio_blk::*;
|
use virtio_bindings::bindings::virtio_blk::*;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic};
|
use vm_memory::{ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
const SECTOR_SHIFT: u8 = 9;
|
const SECTOR_SHIFT: u8 = 9;
|
||||||
|
@ -24,10 +24,11 @@ use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
|
|||||||
use std::sync::{Arc, Barrier, Mutex};
|
use std::sync::{Arc, Barrier, Mutex};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryAtomic};
|
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryAtomic};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
const QUEUE_SIZE: u16 = 256;
|
const QUEUE_SIZE: u16 = 256;
|
||||||
|
@ -19,9 +19,10 @@ use std::sync::{
|
|||||||
Arc, Barrier,
|
Arc, Barrier,
|
||||||
};
|
};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{GuestAddress, GuestMemoryAtomic, GuestUsize};
|
use vm_memory::{GuestAddress, GuestMemoryAtomic, GuestUsize};
|
||||||
use vm_migration::{MigratableError, Pausable};
|
use vm_migration::{MigratableError, Pausable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vm_virtio::VirtioDeviceType;
|
use vm_virtio::VirtioDeviceType;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ use std::sync::atomic::AtomicBool;
|
|||||||
use std::sync::{Arc, Barrier, RwLock};
|
use std::sync::{Arc, Barrier, RwLock};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, DescriptorChain, Queue};
|
use virtio_queue::{DescriptorChain, Queue};
|
||||||
use vm_device::dma_mapping::ExternalDmaMapping;
|
use vm_device::dma_mapping::ExternalDmaMapping;
|
||||||
use vm_memory::{
|
use vm_memory::{
|
||||||
Address, ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError,
|
Address, ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError,
|
||||||
@ -31,6 +31,7 @@ use vm_memory::{
|
|||||||
};
|
};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
/// Queues sizes
|
/// Queues sizes
|
||||||
|
@ -35,10 +35,11 @@ use versionize::{VersionMap, Versionize, VersionizeResult};
|
|||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_bindings::bindings::virtio_net::*;
|
use virtio_bindings::bindings::virtio_net::*;
|
||||||
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
|
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{ByteValued, GuestMemoryAtomic};
|
use vm_memory::{ByteValued, GuestMemoryAtomic};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
/// Control queue
|
/// Control queue
|
||||||
|
@ -27,13 +27,14 @@ use std::sync::atomic::AtomicBool;
|
|||||||
use std::sync::{Arc, Barrier};
|
use std::sync::{Arc, Barrier};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, DescriptorChain, Queue};
|
use virtio_queue::{DescriptorChain, Queue};
|
||||||
use vm_memory::{
|
use vm_memory::{
|
||||||
Address, ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError,
|
Address, ByteValued, Bytes, GuestAddress, GuestMemoryAtomic, GuestMemoryError,
|
||||||
GuestMemoryLoadGuard,
|
GuestMemoryLoadGuard,
|
||||||
};
|
};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
const QUEUE_SIZE: u16 = 256;
|
const QUEUE_SIZE: u16 = 256;
|
||||||
|
@ -21,10 +21,11 @@ use std::sync::atomic::AtomicBool;
|
|||||||
use std::sync::{Arc, Barrier};
|
use std::sync::{Arc, Barrier};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{Bytes, GuestAddress, GuestMemoryAtomic};
|
use vm_memory::{Bytes, GuestAddress, GuestMemoryAtomic};
|
||||||
use vm_migration::VersionMapped;
|
use vm_migration::VersionMapped;
|
||||||
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
const QUEUE_SIZE: u16 = 256;
|
const QUEUE_SIZE: u16 = 256;
|
||||||
|
@ -12,9 +12,10 @@ use std::sync::atomic::{AtomicU16, Ordering};
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::{GuestAddress, GuestMemoryAtomic};
|
use vm_memory::{GuestAddress, GuestMemoryAtomic};
|
||||||
use vm_migration::{MigratableError, Pausable, Snapshot, Snapshottable, VersionMapped};
|
use vm_migration::{MigratableError, Pausable, Snapshot, Snapshottable, VersionMapped};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
|
|
||||||
#[derive(Clone, Versionize)]
|
#[derive(Clone, Versionize)]
|
||||||
pub struct VirtioPciCommonConfigState {
|
pub struct VirtioPciCommonConfigState {
|
||||||
|
@ -29,7 +29,6 @@ use std::sync::atomic::{AtomicBool, AtomicU16, AtomicUsize, Ordering};
|
|||||||
use std::sync::{Arc, Barrier, Mutex};
|
use std::sync::{Arc, Barrier, Mutex};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::AccessPlatform;
|
|
||||||
use virtio_queue::{defs::VIRTQ_MSI_NO_VECTOR, Error as QueueError, Queue};
|
use virtio_queue::{defs::VIRTQ_MSI_NO_VECTOR, Error as QueueError, Queue};
|
||||||
use vm_allocator::{AddressAllocator, SystemAllocator};
|
use vm_allocator::{AddressAllocator, SystemAllocator};
|
||||||
use vm_device::interrupt::{
|
use vm_device::interrupt::{
|
||||||
@ -40,6 +39,7 @@ use vm_memory::{Address, ByteValued, GuestAddress, GuestMemoryAtomic, GuestUsize
|
|||||||
use vm_migration::{
|
use vm_migration::{
|
||||||
Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable, VersionMapped,
|
Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable, VersionMapped,
|
||||||
};
|
};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::{errno::Result, eventfd::EventFd};
|
use vmm_sys_util::{errno::Result, eventfd::EventFd};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -47,11 +47,12 @@ use std::sync::atomic::AtomicBool;
|
|||||||
use std::sync::{Arc, Barrier, RwLock};
|
use std::sync::{Arc, Barrier, RwLock};
|
||||||
use versionize::{VersionMap, Versionize, VersionizeResult};
|
use versionize::{VersionMap, Versionize, VersionizeResult};
|
||||||
use versionize_derive::Versionize;
|
use versionize_derive::Versionize;
|
||||||
use virtio_queue::{AccessPlatform, Queue};
|
use virtio_queue::Queue;
|
||||||
use vm_memory::GuestMemoryAtomic;
|
use vm_memory::GuestMemoryAtomic;
|
||||||
use vm_migration::{
|
use vm_migration::{
|
||||||
Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable, VersionMapped,
|
Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable, VersionMapped,
|
||||||
};
|
};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
const QUEUE_SIZE: u16 = 256;
|
const QUEUE_SIZE: u16 = 256;
|
||||||
|
@ -21,8 +21,9 @@ use std::sync::Arc;
|
|||||||
use super::defs;
|
use super::defs;
|
||||||
use super::{Result, VsockError};
|
use super::{Result, VsockError};
|
||||||
use crate::{get_host_address_range, GuestMemoryMmap};
|
use crate::{get_host_address_range, GuestMemoryMmap};
|
||||||
use virtio_queue::{AccessPlatform, DescriptorChain};
|
use virtio_queue::DescriptorChain;
|
||||||
use vm_memory::{GuestAddress, GuestMemoryLoadGuard};
|
use vm_memory::{GuestAddress, GuestMemoryLoadGuard};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
|
|
||||||
// The vsock packet header is defined by the C struct:
|
// The vsock packet header is defined by the C struct:
|
||||||
//
|
//
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
//! Implements virtio queues
|
//! Implements virtio queues
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt::{self, Debug};
|
||||||
|
|
||||||
pub mod queue;
|
pub mod queue;
|
||||||
pub use queue::*;
|
pub use queue::*;
|
||||||
@ -87,3 +87,10 @@ impl fmt::Display for VirtioDeviceType {
|
|||||||
write!(f, "{}", output)
|
write!(f, "{}", output)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Trait for devices with access to data in memory being limited and/or
|
||||||
|
/// translated.
|
||||||
|
pub trait AccessPlatform: Send + Sync + Debug {
|
||||||
|
/// Provide a way to translate address ranges.
|
||||||
|
fn translate(&self, base: u64, size: u64) -> std::result::Result<u64, std::io::Error>;
|
||||||
|
}
|
||||||
|
@ -92,7 +92,6 @@ use virtio_devices::vhost_user::VhostUserConfig;
|
|||||||
use virtio_devices::{AccessPlatformMapping, VirtioMemMappingSource};
|
use virtio_devices::{AccessPlatformMapping, VirtioMemMappingSource};
|
||||||
use virtio_devices::{Endpoint, IommuMapping};
|
use virtio_devices::{Endpoint, IommuMapping};
|
||||||
use virtio_devices::{VirtioSharedMemory, VirtioSharedMemoryList};
|
use virtio_devices::{VirtioSharedMemory, VirtioSharedMemoryList};
|
||||||
use virtio_queue::AccessPlatform;
|
|
||||||
use vm_allocator::{AddressAllocator, SystemAllocator};
|
use vm_allocator::{AddressAllocator, SystemAllocator};
|
||||||
use vm_device::dma_mapping::vfio::VfioDmaMapping;
|
use vm_device::dma_mapping::vfio::VfioDmaMapping;
|
||||||
use vm_device::interrupt::{
|
use vm_device::interrupt::{
|
||||||
@ -108,6 +107,7 @@ use vm_migration::{
|
|||||||
protocol::MemoryRangeTable, Migratable, MigratableError, Pausable, Snapshot,
|
protocol::MemoryRangeTable, Migratable, MigratableError, Pausable, Snapshot,
|
||||||
SnapshotDataSection, Snapshottable, Transportable,
|
SnapshotDataSection, Snapshottable, Transportable,
|
||||||
};
|
};
|
||||||
|
use vm_virtio::AccessPlatform;
|
||||||
use vm_virtio::VirtioDeviceType;
|
use vm_virtio::VirtioDeviceType;
|
||||||
use vmm_sys_util::eventfd::EventFd;
|
use vmm_sys_util::eventfd::EventFd;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user