Skip to content

Commit 1e08025

Browse files
committed
chore: prepare virtio for multiple transport options
This is just code organization changes. Create a new module under `virtio`, called `transport`. For the time being the only transport supported is `mmio`. Also, move `IrqInterrupt` type within the MMIO transport code, as it is MMIO specific. Signed-off-by: Babis Chalios <bchalios@amazon.es>
1 parent dafee92 commit 1e08025

File tree

21 files changed

+130
-114
lines changed

21 files changed

+130
-114
lines changed

src/vmm/src/builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ use crate::devices::legacy::{EventFdTrigger, SerialEventsWrapper, SerialWrapper}
4444
use crate::devices::virtio::balloon::Balloon;
4545
use crate::devices::virtio::block::device::Block;
4646
use crate::devices::virtio::device::VirtioDevice;
47-
use crate::devices::virtio::mmio::MmioTransport;
4847
use crate::devices::virtio::net::Net;
4948
use crate::devices::virtio::rng::Entropy;
49+
use crate::devices::virtio::transport::mmio::MmioTransport;
5050
use crate::devices::virtio::vsock::{Vsock, VsockUnixBackend};
5151
#[cfg(feature = "gdb")]
5252
use crate::gdb;

src/vmm/src/device_manager/mmio.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ use crate::devices::pseudo::BootTimer;
3030
use crate::devices::virtio::balloon::Balloon;
3131
use crate::devices::virtio::block::device::Block;
3232
use crate::devices::virtio::device::VirtioDevice;
33-
use crate::devices::virtio::mmio::MmioTransport;
3433
use crate::devices::virtio::net::Net;
3534
use crate::devices::virtio::rng::Entropy;
35+
use crate::devices::virtio::transport::mmio::MmioTransport;
3636
use crate::devices::virtio::vsock::{TYPE_VSOCK, Vsock, VsockUnixBackend};
3737
use crate::devices::virtio::{TYPE_BALLOON, TYPE_BLOCK, TYPE_NET, TYPE_RNG};
3838
#[cfg(target_arch = "x86_64")]
@@ -223,7 +223,7 @@ impl MMIODeviceManager {
223223
device_info: &MMIODeviceInfo,
224224
) -> Result<(), MmioError> {
225225
// as per doc, [virtio_mmio.]device=<size>@<baseaddr>:<irq> needs to be appended
226-
// to kernel command line for virtio mmio devices to get recongnized
226+
// to kernel command line for virtio mmio devices to get recognized
227227
// the size parameter has to be transformed to KiB, so dividing hexadecimal value in
228228
// bytes to 1024; further, the '{}' formatting rust construct will automatically
229229
// transform it to decimal
@@ -530,8 +530,9 @@ mod tests {
530530
use super::*;
531531
use crate::Vm;
532532
use crate::devices::virtio::ActivateError;
533-
use crate::devices::virtio::device::{IrqTrigger, VirtioDevice};
533+
use crate::devices::virtio::device::VirtioDevice;
534534
use crate::devices::virtio::queue::Queue;
535+
use crate::devices::virtio::transport::mmio::IrqTrigger;
535536
use crate::test_utils::multi_region_mem_raw;
536537
use crate::vstate::kvm::Kvm;
537538
use crate::vstate::memory::{GuestAddress, GuestMemoryMmap};

src/vmm/src/device_manager/persist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ use crate::devices::virtio::block::BlockError;
2525
use crate::devices::virtio::block::device::Block;
2626
use crate::devices::virtio::block::persist::{BlockConstructorArgs, BlockState};
2727
use crate::devices::virtio::device::VirtioDevice;
28-
use crate::devices::virtio::mmio::MmioTransport;
2928
use crate::devices::virtio::net::Net;
3029
use crate::devices::virtio::net::persist::{
3130
NetConstructorArgs, NetPersistError as NetError, NetState,
@@ -35,6 +34,7 @@ use crate::devices::virtio::rng::Entropy;
3534
use crate::devices::virtio::rng::persist::{
3635
EntropyConstructorArgs, EntropyPersistError as EntropyError, EntropyState,
3736
};
37+
use crate::devices::virtio::transport::mmio::MmioTransport;
3838
use crate::devices::virtio::vsock::persist::{
3939
VsockConstructorArgs, VsockState, VsockUdsConstructorArgs,
4040
};

src/vmm/src/devices/bus.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ use event_manager::{EventOps, Events, MutEventSubscriber};
5656
use super::legacy::RTCDevice;
5757
use super::legacy::{I8042Device, SerialDevice};
5858
use super::pseudo::BootTimer;
59-
use super::virtio::mmio::MmioTransport;
59+
use super::virtio::transport::mmio::MmioTransport;
6060

6161
#[derive(Debug)]
6262
pub enum BusDevice {

src/vmm/src/devices/virtio/balloon/device.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ use super::{
2424
VIRTIO_BALLOON_S_SWAP_OUT,
2525
};
2626
use crate::devices::virtio::balloon::BalloonError;
27-
use crate::devices::virtio::device::{IrqTrigger, IrqType};
2827
use crate::devices::virtio::generated::virtio_config::VIRTIO_F_VERSION_1;
28+
use crate::devices::virtio::transport::mmio::{IrqTrigger, IrqType};
2929
use crate::logger::IncMetric;
3030
use crate::utils::u64_to_usize;
3131
use crate::vstate::memory::{Address, ByteValued, Bytes, GuestAddress, GuestMemoryMmap};

src/vmm/src/devices/virtio/balloon/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::devices::virtio::{balloon::BALLOON_NUM_QUEUES, balloon::Balloon};
1010
#[cfg(test)]
1111
pub fn invoke_handler_for_queue_event(b: &mut Balloon, queue_index: usize) {
1212
use crate::devices::virtio::balloon::{DEFLATE_INDEX, INFLATE_INDEX, STATS_INDEX};
13-
use crate::devices::virtio::device::IrqType;
13+
use crate::devices::virtio::transport::mmio::IrqType;
1414

1515
assert!(queue_index < BALLOON_NUM_QUEUES);
1616
// Trigger the queue event.

src/vmm/src/devices/virtio/block/device.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ use super::BlockError;
88
use super::persist::{BlockConstructorArgs, BlockState};
99
use super::vhost_user::device::{VhostUserBlock, VhostUserBlockConfig};
1010
use super::virtio::device::{VirtioBlock, VirtioBlockConfig};
11-
use crate::devices::virtio::device::{IrqTrigger, VirtioDevice};
11+
use crate::devices::virtio::device::VirtioDevice;
1212
use crate::devices::virtio::queue::Queue;
13+
use crate::devices::virtio::transport::mmio::IrqTrigger;
1314
use crate::devices::virtio::{ActivateError, TYPE_BLOCK};
1415
use crate::rate_limiter::BucketUpdate;
1516
use crate::snapshot::Persist;

src/vmm/src/devices/virtio/block/vhost_user/device.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ use vmm_sys_util::eventfd::EventFd;
1414

1515
use super::{NUM_QUEUES, QUEUE_SIZE, VhostUserBlockError};
1616
use crate::devices::virtio::block::CacheType;
17-
use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice};
17+
use crate::devices::virtio::device::{DeviceState, VirtioDevice};
1818
use crate::devices::virtio::generated::virtio_blk::{VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_RO};
1919
use crate::devices::virtio::generated::virtio_config::VIRTIO_F_VERSION_1;
2020
use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
2121
use crate::devices::virtio::queue::Queue;
22+
use crate::devices::virtio::transport::mmio::{IrqTrigger, IrqType};
2223
use crate::devices::virtio::vhost_user::{VhostUserHandleBackend, VhostUserHandleImpl};
2324
use crate::devices::virtio::vhost_user_metrics::{
2425
VhostUserDeviceMetrics, VhostUserMetricsPerDevice,
@@ -34,7 +35,7 @@ const BLOCK_CONFIG_SPACE_SIZE: u32 = 60;
3435

3536
const AVAILABLE_FEATURES: u64 = (1 << VIRTIO_F_VERSION_1)
3637
| (1 << VIRTIO_RING_F_EVENT_IDX)
37-
// vhost-user specific bit. Not defined in standart virtio spec.
38+
// vhost-user specific bit. Not defined in standard virtio spec.
3839
// Specifies ability of frontend to negotiate protocol features.
3940
| VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits()
4041
// We always try to negotiate readonly with the backend.
@@ -375,7 +376,7 @@ mod tests {
375376

376377
use super::*;
377378
use crate::devices::virtio::block::virtio::device::FileEngineType;
378-
use crate::devices::virtio::mmio::VIRTIO_MMIO_INT_CONFIG;
379+
use crate::devices::virtio::transport::mmio::VIRTIO_MMIO_INT_CONFIG;
379380
use crate::devices::virtio::vhost_user::tests::create_mem;
380381
use crate::test_utils::create_tmp_socket;
381382
use crate::vstate::memory::GuestAddress;

src/vmm/src/devices/virtio/block/virtio/device.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@ use super::request::*;
2323
use super::{BLOCK_QUEUE_SIZES, SECTOR_SHIFT, SECTOR_SIZE, VirtioBlockError, io as block_io};
2424
use crate::devices::virtio::block::CacheType;
2525
use crate::devices::virtio::block::virtio::metrics::{BlockDeviceMetrics, BlockMetricsPerDevice};
26-
use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice};
26+
use crate::devices::virtio::device::{DeviceState, VirtioDevice};
2727
use crate::devices::virtio::generated::virtio_blk::{
2828
VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_RO, VIRTIO_BLK_ID_BYTES,
2929
};
3030
use crate::devices::virtio::generated::virtio_config::VIRTIO_F_VERSION_1;
3131
use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
3232
use crate::devices::virtio::queue::Queue;
33+
use crate::devices::virtio::transport::mmio::{IrqTrigger, IrqType};
3334
use crate::devices::virtio::{ActivateError, TYPE_BLOCK};
3435
use crate::logger::{IncMetric, error, warn};
3536
use crate::rate_limiter::{BucketUpdate, RateLimiter};
@@ -826,7 +827,7 @@ mod tests {
826827
block.read_config(0, actual_config_space.as_mut_slice());
827828
assert_eq!(actual_config_space, expected_config_space);
828829

829-
// If priviledged user writes to `/dev/mem`, in block config space - byte by byte.
830+
// If privileged user writes to `/dev/mem`, in block config space - byte by byte.
830831
let expected_config_space = ConfigSpace {
831832
capacity: 0x1122334455667788,
832833
};

src/vmm/src/devices/virtio/block/virtio/persist.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ use crate::devices::virtio::TYPE_BLOCK;
1616
use crate::devices::virtio::block::persist::BlockConstructorArgs;
1717
use crate::devices::virtio::block::virtio::device::FileEngineType;
1818
use crate::devices::virtio::block::virtio::metrics::BlockMetricsPerDevice;
19-
use crate::devices::virtio::device::{DeviceState, IrqTrigger};
19+
use crate::devices::virtio::device::DeviceState;
2020
use crate::devices::virtio::generated::virtio_blk::VIRTIO_BLK_F_RO;
2121
use crate::devices::virtio::persist::VirtioDeviceState;
22+
use crate::devices::virtio::transport::mmio::IrqTrigger;
2223
use crate::rate_limiter::RateLimiter;
2324
use crate::rate_limiter::persist::RateLimiterState;
2425
use crate::snapshot::Persist;

0 commit comments

Comments
 (0)