From cd2089eb6997bcc2d788e0aca8877f1345036c94 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Jul 2026 18:51:13 +0200 Subject: [PATCH] build: Bump vm-memory and dependents vm-memory 0.18 has renamed GuestMemory to GuestMemoryBackend, and made GuestMemory refer to something less specific. For simplicity, we keep using GuestMemoryBackend (formerly GuestMemory) everywhere for now. We can adjust bounds to be less specific later if we find ourselves needing the newly enabled flexibility. Signed-off-by: Alyssa Ross Signed-off-by: Rob Bradford --- Cargo.lock | 40 ++++++++++++------- Cargo.toml | 14 +++---- arch/src/aarch64/fdt.rs | 6 +-- arch/src/aarch64/mod.rs | 2 +- arch/src/riscv64/fdt.rs | 6 +-- arch/src/riscv64/mod.rs | 2 +- arch/src/x86_64/mod.rs | 20 +++++----- arch/src/x86_64/mptable.rs | 2 +- arch/src/x86_64/regs.rs | 2 +- block/src/io/async_io/guest_memory_target.rs | 4 +- block/src/io/request.rs | 2 +- block/src/lib.rs | 2 +- devices/src/pvmemcontrol.rs | 4 +- fuzz/Cargo.lock | 36 +++++++++++------ fuzz/Cargo.toml | 6 +-- net_util/src/queue_pair.rs | 2 +- pci/src/vfio.rs | 11 +++-- pci/src/vfio_user.rs | 8 +++- virtio-devices/src/balloon.rs | 4 +- virtio-devices/src/iommu.rs | 4 +- virtio-devices/src/lib.rs | 6 +-- virtio-devices/src/mem.rs | 4 +- virtio-devices/src/vdpa.rs | 7 +++- virtio-devices/src/vhost_user/mod.rs | 2 +- .../src/vhost_user/vu_common_ctrl.rs | 2 +- virtio-devices/src/vsock/packet.rs | 5 ++- vm-virtio/src/checked_descriptor.rs | 8 ++-- vmm/src/coredump.rs | 14 +++---- vmm/src/device_manager.rs | 2 +- vmm/src/igvm/igvm_loader.rs | 2 +- vmm/src/igvm/loader.rs | 2 +- vmm/src/memory_manager.rs | 6 +-- vmm/src/vm.rs | 6 +-- 33 files changed, 140 insertions(+), 103 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 379bb9b64..b0942421f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -756,6 +756,17 @@ dependencies = [ "syn", ] +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "env_filter" version = "2.0.0" @@ -1366,9 +1377,9 @@ dependencies = [ [[package]] name = "linux-loader" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de72cb02c55ecffcf75fe78295926f872eb6eb0a58d629c58a8c324dc26380f6" +checksum = "d54207cb617cd75b10c57ad20235c914ab62b180ceeff2ef3111983670d3b321" dependencies = [ "vm-memory", ] @@ -2555,9 +2566,9 @@ dependencies = [ [[package]] name = "vfio-ioctls" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b1110f3ab5703a0f788d569b1b4a2436e8cc434f384b3ef5d77283f8ee03d8" +checksum = "a22f93a7f6cc51b8671b9282ed6487b0c905890be20ffa4a26835d2652a7c638" dependencies = [ "byteorder", "iommufd-bindings", @@ -2576,11 +2587,12 @@ dependencies = [ [[package]] name = "vfio_user" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731c2582dd43f4f174ab47b4c933a1a9bb872d9d1b7f54c5867e12dbc1491b75" +checksum = "d39bb422ac00cd1d670dc0135c7b32f0a17125b47317d26e442931908c8dbf4a" dependencies = [ "bitflags 2.13.0", + "enumn", "libc", "log", "serde", @@ -2594,9 +2606,9 @@ dependencies = [ [[package]] name = "vhost" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee90657203a8644e9a0860a0db6a7887d8ef0c7bc09fc22dfa4ae75df65bac86" +checksum = "1c63c14485260662b4257bd929d5fd4aaf96bbecbe61d2224bad8807849f5f8f" dependencies = [ "bitflags 2.13.0", "libc", @@ -2607,9 +2619,9 @@ dependencies = [ [[package]] name = "vhost-user-backend" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5925983d8fb537752ad3e26604c0a17abfa5de77cb6773a096c8a959c9eca0f" +checksum = "555753b65bc33837bd011f981e2c6d52d8ddc330d92c2deb9aa3f0b378a58bcc" dependencies = [ "libc", "log", @@ -2699,9 +2711,9 @@ dependencies = [ [[package]] name = "virtio-queue" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e358084f32ed165fddb41d98ff1b7ff3c08b9611d8d6114a1b422e2e85688baf" +checksum = "f631bfd09362a9b17f0cfd5ca3b0a1b179d153fa276f9ce86919d560891e61d6" dependencies = [ "libc", "log", @@ -2740,9 +2752,9 @@ checksum = "7e21282841a059bb62627ce8441c491f09603622cd5a21c43bfedc85a2952f23" [[package]] name = "vm-memory" -version = "0.17.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39348a049689cabd3377cdd9182bf526ec76a6f823b79903896452e9d7a7380" +checksum = "9b55e753c7725603745cb32b2287ef7ef3da05c03c7702cda3fa8abe25ae0465" dependencies = [ "arc-swap", "libc", diff --git a/Cargo.toml b/Cargo.toml index 38bb98818..19d53ca90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,19 +57,19 @@ acpi_tables = "0.2.1" iommufd-ioctls = "0.2.0" kvm-bindings = "0.14.1" kvm-ioctls = "0.25.0" -linux-loader = "0.13.2" +linux-loader = "0.14.0" mshv-bindings = "0.6.9" mshv-ioctls = "0.6.9" seccompiler = "0.5.0" vfio-bindings = { version = "0.6.2", default-features = false } -vfio-ioctls = { version = "0.7.0", default-features = false } -vfio_user = { version = "0.1.3", default-features = false } -vhost = { version = "0.16.0", default-features = false } -vhost-user-backend = { version = "0.22.0", default-features = false } +vfio-ioctls = { version = "0.8.0", default-features = false } +vfio_user = { version = "0.1.4", default-features = false } +vhost = { version = "0.17.0", default-features = false } +vhost-user-backend = { version = "0.23.0", default-features = false } virtio-bindings = "0.2.6" -virtio-queue = "0.17.0" +virtio-queue = "0.18.0" vm-fdt = "0.3.0" -vm-memory = "0.17.1" +vm-memory = "0.18.0" vmm-sys-util = "0.15.0" # igvm crates diff --git a/arch/src/aarch64/fdt.rs b/arch/src/aarch64/fdt.rs index 2428e7047..1d4a63308 100644 --- a/arch/src/aarch64/fdt.rs +++ b/arch/src/aarch64/fdt.rs @@ -23,7 +23,7 @@ use hypervisor::arch::aarch64::regs::{ use log::{debug, info}; use thiserror::Error; use vm_fdt::{FdtWriter, FdtWriterResult}; -use vm_memory::{Address, Bytes, GuestMemory, GuestMemoryError, GuestMemoryRegion}; +use vm_memory::{Address, Bytes, GuestMemoryBackend, GuestMemoryError, GuestMemoryRegion}; use super::super::{DeviceType, GuestMemoryMmap, InitramfsConfig}; use super::cache::{CacheTopologyInfo, read_cache_topology}; @@ -397,14 +397,14 @@ fn create_memory_node( } } } else { - // Note: memory regions from "GuestMemory" are sorted and non-zero sized. + // Note: memory regions from "GuestMemoryBackend" are sorted and non-zero sized. let ram_regions = { let mut ram_regions = Vec::new(); let mut current_start = guest_mem .iter() .next() .map(GuestMemoryRegion::start_addr) - .expect("GuestMemory must have one memory region at least") + .expect("GuestMemoryBackend must have one memory region at least") .raw_value(); let mut current_end = current_start; diff --git a/arch/src/aarch64/mod.rs b/arch/src/aarch64/mod.rs index 3e8357694..c53e4829b 100644 --- a/arch/src/aarch64/mod.rs +++ b/arch/src/aarch64/mod.rs @@ -20,7 +20,7 @@ use hypervisor::arch::aarch64::gic::Vgic; use hypervisor::arch::aarch64::regs::MPIDR_EL1; use log::{Level, log_enabled}; use thiserror::Error; -use vm_memory::{Address, GuestAddress, GuestMemory, GuestMemoryAtomic}; +use vm_memory::{Address, GuestAddress, GuestMemoryAtomic, GuestMemoryBackend}; pub use self::fdt::DeviceInfoForFdt; use crate::{DeviceType, GuestMemoryMmap, NumaNodes, PciSpaceInfo, RegionType}; diff --git a/arch/src/riscv64/fdt.rs b/arch/src/riscv64/fdt.rs index c418b3217..9290e2a97 100644 --- a/arch/src/riscv64/fdt.rs +++ b/arch/src/riscv64/fdt.rs @@ -18,7 +18,7 @@ use hypervisor::arch::riscv64::aia::Vaia; use log::debug; use thiserror::Error; use vm_fdt::{FdtWriter, FdtWriterResult}; -use vm_memory::{Address, Bytes, GuestMemory, GuestMemoryError, GuestMemoryRegion}; +use vm_memory::{Address, Bytes, GuestMemoryBackend, GuestMemoryError, GuestMemoryRegion}; use super::super::{DeviceType, GuestMemoryMmap, InitramfsConfig}; use super::layout::{ @@ -151,14 +151,14 @@ fn create_cpu_nodes( } fn create_memory_node(fdt: &mut FdtWriter, guest_mem: &GuestMemoryMmap) -> FdtWriterResult<()> { - // Note: memory regions from "GuestMemory" are sorted and non-zero sized. + // Note: memory regions from "GuestMemoryBackend" are sorted and non-zero sized. let ram_regions = { let mut ram_regions = Vec::new(); let mut current_start = guest_mem .iter() .next() .map(GuestMemoryRegion::start_addr) - .expect("GuestMemory must have one memory region at least") + .expect("GuestMemoryBackend must have one memory region at least") .raw_value(); let mut current_end = current_start; diff --git a/arch/src/riscv64/mod.rs b/arch/src/riscv64/mod.rs index 8530b4f33..69027ee68 100644 --- a/arch/src/riscv64/mod.rs +++ b/arch/src/riscv64/mod.rs @@ -19,7 +19,7 @@ use std::sync::{Arc, Mutex}; use hypervisor::arch::riscv64::aia::Vaia; use log::{Level, log_enabled}; use thiserror::Error; -use vm_memory::{Address, GuestAddress, GuestMemory, GuestMemoryAtomic}; +use vm_memory::{Address, GuestAddress, GuestMemoryAtomic, GuestMemoryBackend}; pub use self::fdt::DeviceInfoForFdt; use crate::{DeviceType, GuestMemoryMmap, PciSpaceInfo, RegionType}; diff --git a/arch/src/x86_64/mod.rs b/arch/src/x86_64/mod.rs index e5ee4f559..d55e978a6 100644 --- a/arch/src/x86_64/mod.rs +++ b/arch/src/x86_64/mod.rs @@ -33,7 +33,7 @@ use log::{debug, error, info}; pub use smbios::{SmbiosChassisConfig, SmbiosConfig, SmbiosSystem}; use thiserror::Error; use vm_memory::{ - Address, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, + Address, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend, GuestMemoryRegion, }; use vmm_sys_util::fam; @@ -1030,9 +1030,9 @@ pub fn configure_vcpu( /// Returns a Vec of the valid memory addresses. /// -/// These should be used to configure the GuestMemory structure for the platform. -/// For x86_64 all addresses are valid from the start of the kernel except a -/// carve out at the end of 32bit address space. +/// These should be used to configure the GuestMemoryBackend structure for the +/// platform. For x86_64 all addresses are valid from the start of the kernel +/// except a carve out at the end of 32bit address space. pub fn arch_memory_regions() -> Vec<(GuestAddress, usize, RegionType)> { vec![ // 0 GiB ~ 3GiB: memory before the gap @@ -1116,14 +1116,14 @@ type RamRange = (u64, u64); /// These should be used to create e820_RAM memory maps pub fn generate_ram_ranges(guest_mem: &GuestMemoryMmap) -> super::Result> { // Merge continuous memory regions into one region. - // Note: memory regions from "GuestMemory" are sorted and non-zero sized. + // Note: memory regions from "GuestMemoryBackend" are sorted and non-zero sized. let ram_regions = { let mut ram_regions = Vec::new(); let mut current_start = guest_mem .iter() .next() .map(GuestMemoryRegion::start_addr) - .expect("GuestMemory must have one memory region at least") + .expect("GuestMemoryBackend must have one memory region at least") .raw_value(); let mut current_end = current_start; @@ -1392,7 +1392,7 @@ fn add_e820_entry( params.e820_table[params.e820_entries as usize].addr = addr; params.e820_table[params.e820_entries as usize].size = size; - params.e820_table[params.e820_entries as usize].type_ = mem_type; + params.e820_table[params.e820_entries as usize].r#type = mem_type; params.e820_entries += 1; Ok(()) @@ -1688,7 +1688,7 @@ mod unit_tests { let e820_table = [(boot_e820_entry { addr: 0x1, size: 4, - type_: 1, + r#type: 1, }); 128]; let expected_params = boot_params { @@ -1702,7 +1702,7 @@ mod unit_tests { &mut params, e820_table[0].addr, e820_table[0].size, - e820_table[0].type_, + e820_table[0].r#type, ) .unwrap(); assert_eq!( @@ -1718,7 +1718,7 @@ mod unit_tests { &mut params, e820_table[0].addr, e820_table[0].size, - e820_table[0].type_, + e820_table[0].r#type, ) .unwrap_err(); } diff --git a/arch/src/x86_64/mptable.rs b/arch/src/x86_64/mptable.rs index cc9865240..3ce063db4 100644 --- a/arch/src/x86_64/mptable.rs +++ b/arch/src/x86_64/mptable.rs @@ -10,7 +10,7 @@ use std::result; use libc::c_uchar; use log::{info, warn}; use thiserror::Error; -use vm_memory::{Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError}; +use vm_memory::{Address, ByteValued, Bytes, GuestAddress, GuestMemoryBackend, GuestMemoryError}; use super::MAX_SUPPORTED_CPUS_LEGACY; use crate::GuestMemoryMmap; diff --git a/arch/src/x86_64/regs.rs b/arch/src/x86_64/regs.rs index 352b274b1..e96aa9d43 100644 --- a/arch/src/x86_64/regs.rs +++ b/arch/src/x86_64/regs.rs @@ -12,7 +12,7 @@ use hypervisor::arch::x86::gdt::{gdt_entry, segment_from_gdt}; use hypervisor::arch::x86::regs::CR0_PE; use hypervisor::arch::x86::{FpuState, SpecialRegisters}; use thiserror::Error; -use vm_memory::{Address, Bytes, GuestMemory, GuestMemoryError}; +use vm_memory::{Address, Bytes, GuestMemoryBackend, GuestMemoryError}; use crate::layout::{ BOOT_GDT_START, BOOT_IDT_START, BOOT_STACK_POINTER, PVH_INFO_START, ZERO_PAGE_START, diff --git a/block/src/io/async_io/guest_memory_target.rs b/block/src/io/async_io/guest_memory_target.rs index c048f9455..06a872239 100644 --- a/block/src/io/async_io/guest_memory_target.rs +++ b/block/src/io/async_io/guest_memory_target.rs @@ -8,7 +8,9 @@ use std::sync::Arc; use smallvec::SmallVec; use vm_memory::bitmap::Bitmap; -use vm_memory::{Address, Bytes, GuestAddress, GuestMemory, GuestMemoryError, GuestMemoryMmap}; +use vm_memory::{ + Address, Bytes, GuestAddress, GuestMemoryBackend, GuestMemoryError, GuestMemoryMmap, +}; trait GuestMemoryTargetOwner: Send + Sync { fn iovec_for_range( diff --git a/block/src/io/request.rs b/block/src/io/request.rs index bd78fff91..14d616d54 100644 --- a/block/src/io/request.rs +++ b/block/src/io/request.rs @@ -24,7 +24,7 @@ use virtio_bindings::virtio_blk::{ use virtio_queue::DescriptorChain; use vm_memory::bitmap::Bitmap; use vm_memory::{ - Address as _, Bytes as _, GuestAddress, GuestMemory as _, GuestMemoryError, + Address as _, Bytes as _, GuestAddress, GuestMemoryBackend as _, GuestMemoryError, GuestMemoryLoadGuard, }; use vm_virtio::AccessPlatform; diff --git a/block/src/lib.rs b/block/src/lib.rs index 903531660..6940fe311 100644 --- a/block/src/lib.rs +++ b/block/src/lib.rs @@ -41,7 +41,7 @@ pub use sparse::{BLKDISCARD, BLKZEROOUT}; use thiserror::Error; use virtio_bindings::virtio_blk::*; use vm_memory::bitmap::Bitmap; -use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError}; +use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryBackend, GuestMemoryError}; use vmm_sys_util::{aio, ioctl_io_nr, ioctl_ior_nr}; use crate::async_io::AsyncIoError; diff --git a/devices/src/pvmemcontrol.rs b/devices/src/pvmemcontrol.rs index 6715f37ea..75777f4b5 100644 --- a/devices/src/pvmemcontrol.rs +++ b/devices/src/pvmemcontrol.rs @@ -21,8 +21,8 @@ use vm_allocator::{AddressAllocator, SystemAllocator}; use vm_device::{BusDeviceSync, Resource}; use vm_memory::bitmap::AtomicBitmap; use vm_memory::{ - Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, - GuestMemoryError, GuestMemoryMmap, Le32, Le64, + Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, + GuestMemoryBackend, GuestMemoryError, GuestMemoryMmap, Le32, Le64, }; use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable}; diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 244b727ce..ae574ff29 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -429,6 +429,17 @@ dependencies = [ "syn", ] +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "epoll" version = "4.4.0" @@ -821,9 +832,9 @@ dependencies = [ [[package]] name = "linux-loader" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de72cb02c55ecffcf75fe78295926f872eb6eb0a58d629c58a8c324dc26380f6" +checksum = "d54207cb617cd75b10c57ad20235c914ab62b180ceeff2ef3111983670d3b321" dependencies = [ "vm-memory", ] @@ -1460,9 +1471,9 @@ dependencies = [ [[package]] name = "vfio-ioctls" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b1110f3ab5703a0f788d569b1b4a2436e8cc434f384b3ef5d77283f8ee03d8" +checksum = "a22f93a7f6cc51b8671b9282ed6487b0c905890be20ffa4a26835d2652a7c638" dependencies = [ "byteorder", "iommufd-bindings", @@ -1479,11 +1490,12 @@ dependencies = [ [[package]] name = "vfio_user" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731c2582dd43f4f174ab47b4c933a1a9bb872d9d1b7f54c5867e12dbc1491b75" +checksum = "d39bb422ac00cd1d670dc0135c7b32f0a17125b47317d26e442931908c8dbf4a" dependencies = [ "bitflags 2.13.0", + "enumn", "libc", "log", "serde", @@ -1497,9 +1509,9 @@ dependencies = [ [[package]] name = "vhost" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee90657203a8644e9a0860a0db6a7887d8ef0c7bc09fc22dfa4ae75df65bac86" +checksum = "1c63c14485260662b4257bd929d5fd4aaf96bbecbe61d2224bad8807849f5f8f" dependencies = [ "bitflags 2.13.0", "libc", @@ -1548,9 +1560,9 @@ dependencies = [ [[package]] name = "virtio-queue" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e358084f32ed165fddb41d98ff1b7ff3c08b9611d8d6114a1b422e2e85688baf" +checksum = "f631bfd09362a9b17f0cfd5ca3b0a1b179d153fa276f9ce86919d560891e61d6" dependencies = [ "libc", "log", @@ -1589,9 +1601,9 @@ checksum = "7e21282841a059bb62627ce8441c491f09603622cd5a21c43bfedc85a2952f23" [[package]] name = "vm-memory" -version = "0.17.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f39348a049689cabd3377cdd9182bf526ec76a6f823b79903896452e9d7a7380" +checksum = "9b55e753c7725603745cb32b2287ef7ef3da05c03c7702cda3fa8abe25ae0465" dependencies = [ "arc-swap", "libc", diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 020245b5d..7522bf823 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -23,15 +23,15 @@ epoll = "4.4.0" hypervisor = { path = "../hypervisor", features = ["mshv_emulator"] } libc = "0.2.186" libfuzzer-sys = "0.4.12" -linux-loader = { version = "0.13.2", features = ["bzimage", "elf", "pe"] } +linux-loader = { version = "0.14.0", features = ["bzimage", "elf", "pe"] } micro_http = { git = "https://github.com/firecracker-microvm/micro-http", branch = "main" } mshv-bindings = "0.6.9" net_util = { path = "../net_util" } seccompiler = "0.5.0" virtio-devices = { path = "../virtio-devices" } -virtio-queue = "0.17.0" +virtio-queue = "0.18.0" vm-device = { path = "../vm-device" } -vm-memory = "0.17.1" +vm-memory = "0.18.0" vm-migration = { path = "../vm-migration" } vm-virtio = { path = "../vm-virtio" } vmm = { path = "../vmm", features = ["guest_debug"] } diff --git a/net_util/src/queue_pair.rs b/net_util/src/queue_pair.rs index 8ae3c4753..ece9ff1ca 100644 --- a/net_util/src/queue_pair.rs +++ b/net_util/src/queue_pair.rs @@ -14,7 +14,7 @@ use rate_limiter::{RateLimiter, TokenType}; use thiserror::Error; use virtio_queue::{Queue, QueueOwnedT, QueueT}; use vm_memory::bitmap::Bitmap; -use vm_memory::{Bytes, GuestAddress, GuestMemory}; +use vm_memory::{Bytes, GuestAddress, GuestMemoryBackend}; use vm_virtio::{AccessPlatform, Translatable}; use super::{Tap, register_listener, unregister_listener, vnet_hdr_len}; diff --git a/pci/src/vfio.rs b/pci/src/vfio.rs index 3931096ba..c117d990a 100644 --- a/pci/src/vfio.rs +++ b/pci/src/vfio.rs @@ -45,8 +45,8 @@ use vm_device::interrupt::{ use vm_device::{BusDevice, Resource}; use vm_memory::bitmap::AtomicBitmap; use vm_memory::{ - Address, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, GuestMemoryRegion, - GuestUsize, + Address, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend, + GuestMemoryRegion, GuestUsize, }; type GuestMemoryMmap = vm_memory::GuestMemoryMmap; @@ -2612,7 +2612,10 @@ impl VfioDmaMapping { } } -impl ExternalDmaMapping for VfioDmaMapping { +impl ExternalDmaMapping for VfioDmaMapping +where + M::M: GuestMemoryBackend, +{ fn map(&self, iova: u64, gpa: u64, size: u64) -> result::Result<(), io::Error> { let Ok(usize_size): Result = size.try_into() else { return Err(io::Error::other(format!("size {size} overflows usize"))); @@ -2648,7 +2651,7 @@ impl ExternalDmaMapping for VfioDmaMapping VfioUserDmaMapping { } } -impl ExternalDmaMapping for VfioUserDmaMapping { +impl ExternalDmaMapping for VfioUserDmaMapping +where + M::M: GuestMemoryBackend, +{ fn map(&self, iova: u64, gpa: u64, size: u64) -> result::Result<(), io::Error> { let mem = self.memory.memory(); let guest_addr = GuestAddress(gpa); diff --git a/virtio-devices/src/balloon.rs b/virtio-devices/src/balloon.rs index eb90cd36d..d144d75c0 100644 --- a/virtio-devices/src/balloon.rs +++ b/virtio-devices/src/balloon.rs @@ -30,8 +30,8 @@ use thiserror::Error; use virtio_queue::{Queue, QueueT}; use vm_allocator::page_size::{align_page_size_down, get_page_size}; use vm_memory::{ - Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, - GuestMemoryError, GuestMemoryRegion, + Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, + GuestMemoryBackend, GuestMemoryError, GuestMemoryRegion, }; use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable}; use vm_virtio::AccessPlatform; diff --git a/virtio-devices/src/iommu.rs b/virtio-devices/src/iommu.rs index 0a77c2a03..3722d60db 100644 --- a/virtio-devices/src/iommu.rs +++ b/virtio-devices/src/iommu.rs @@ -17,8 +17,8 @@ use thiserror::Error; use virtio_queue::{DescriptorChain, Queue, QueueT}; use vm_device::dma_mapping::ExternalDmaMapping; use vm_memory::{ - Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, - GuestMemoryError, GuestMemoryLoadGuard, + Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, + GuestMemoryBackend, GuestMemoryError, GuestMemoryLoadGuard, }; use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable}; use vm_virtio::AccessPlatform; diff --git a/virtio-devices/src/lib.rs b/virtio-devices/src/lib.rs index c81f37087..7b5374b9d 100644 --- a/virtio-devices/src/lib.rs +++ b/virtio-devices/src/lib.rs @@ -38,7 +38,7 @@ pub mod vsock; pub mod watchdog; use vm_memory::bitmap::AtomicBitmap; -use vm_memory::{GuestAddress, GuestMemory}; +use vm_memory::{GuestAddress, GuestMemoryBackend}; use vm_virtio::VirtioDeviceType; pub use self::balloon::Balloon; @@ -180,12 +180,12 @@ impl TryInto for RateLimiterConfig { /// Return the host virtual address corresponding to the given guest address range /// -/// Convert an absolute address into an address space (GuestMemory) +/// Convert an absolute address into an address space (GuestMemoryBackend) /// to a host pointer and verify that the provided size defines a valid /// range within a single memory region. /// Return None if it is out of bounds, spans multiple regions, or has /// zero size at an unmapped GPA. -pub fn get_host_address_range( +pub fn get_host_address_range( mem: &M, addr: GuestAddress, size: usize, diff --git a/virtio-devices/src/mem.rs b/virtio-devices/src/mem.rs index be8d6c54f..3df39789f 100644 --- a/virtio-devices/src/mem.rs +++ b/virtio-devices/src/mem.rs @@ -29,8 +29,8 @@ use thiserror::Error; use virtio_queue::{DescriptorChain, Queue, QueueT}; use vm_device::dma_mapping::ExternalDmaMapping; use vm_memory::{ - Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, - GuestMemoryError, GuestMemoryLoadGuard, GuestMemoryRegion, + Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, + GuestMemoryBackend, GuestMemoryError, GuestMemoryLoadGuard, GuestMemoryRegion, }; use vm_migration::protocol::MemoryRangeTable; use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable}; diff --git a/virtio-devices/src/vdpa.rs b/virtio-devices/src/vdpa.rs index 798895b81..06bd1023f 100644 --- a/virtio-devices/src/vdpa.rs +++ b/virtio-devices/src/vdpa.rs @@ -21,7 +21,7 @@ use vhost::{VhostBackend, VringConfigData}; use virtio_queue::desc::RawDescriptor; use virtio_queue::{Queue, QueueT}; use vm_device::dma_mapping::ExternalDmaMapping; -use vm_memory::{GuestAddress, GuestAddressSpace, GuestMemoryAtomic}; +use vm_memory::{GuestAddress, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend}; use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable}; use vm_virtio::{AccessPlatform, Translatable}; use vmm_sys_util::eventfd::EventFd; @@ -564,7 +564,10 @@ impl VdpaDmaMapping { } } -impl ExternalDmaMapping for VdpaDmaMapping { +impl ExternalDmaMapping for VdpaDmaMapping +where + M::M: GuestMemoryBackend, +{ fn map(&self, iova: u64, gpa: u64, size: u64) -> result::Result<(), io::Error> { let usize_size = size.try_into().unwrap(); let mem = self.memory.memory(); diff --git a/virtio-devices/src/vhost_user/mod.rs b/virtio-devices/src/vhost_user/mod.rs index b01c9fbfc..29fc28227 100644 --- a/virtio-devices/src/vhost_user/mod.rs +++ b/virtio-devices/src/vhost_user/mod.rs @@ -23,7 +23,7 @@ use vhost::vhost_user::{Error as VhostUserError, FrontendReqHandler, VhostUserFr use virtio_queue::{Error as QueueError, Queue}; use vm_memory::guest_memory::Error as MmapError; use vm_memory::mmap::MmapRegionError; -use vm_memory::{Address, GuestAddressSpace, GuestMemory, GuestMemoryAtomic}; +use vm_memory::{Address, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend}; use vm_migration::protocol::MemoryRangeTable; use vm_migration::{MigratableError, Pausable, Snapshot}; use vmm_sys_util::eventfd::EventFd; diff --git a/virtio-devices/src/vhost_user/vu_common_ctrl.rs b/virtio-devices/src/vhost_user/vu_common_ctrl.rs index 4dd37142d..a59381c7c 100644 --- a/virtio-devices/src/vhost_user/vu_common_ctrl.rs +++ b/virtio-devices/src/vhost_user/vu_common_ctrl.rs @@ -27,7 +27,7 @@ use vhost::{ use virtio_queue::desc::RawDescriptor; use virtio_queue::{Queue, QueueT}; use vm_memory::guest_memory::Error as MmapError; -use vm_memory::{Address, FileOffset, GuestAddress, GuestMemory, GuestMemoryRegion}; +use vm_memory::{Address, FileOffset, GuestAddress, GuestMemoryBackend, GuestMemoryRegion}; use vm_migration::protocol::MemoryRangeTable; use vmm_sys_util::epoll::{ControlOperation, Epoll, EpollEvent, EventSet}; use vmm_sys_util::eventfd::EventFd; diff --git a/virtio-devices/src/vsock/packet.rs b/virtio-devices/src/vsock/packet.rs index 8c9fe0d02..85a17c437 100644 --- a/virtio-devices/src/vsock/packet.rs +++ b/virtio-devices/src/vsock/packet.rs @@ -22,7 +22,8 @@ use std::ops::Deref; use byteorder::{ByteOrder, LittleEndian}; use virtio_queue::DescriptorChain; use vm_memory::{ - Address, Bytes, GuestAddress, GuestMemory, ReadVolatile, VolatileMemoryError, WriteVolatile, + Address, Bytes, GuestAddress, GuestMemoryBackend, ReadVolatile, VolatileMemoryError, + WriteVolatile, }; use vm_virtio::AccessPlatform; use vm_virtio::checked_descriptor::DescriptorChainExt; @@ -502,7 +503,7 @@ impl VsockPacket { /// Writes the local copy of the packet header to the guest memory. /// - pub fn commit_hdr(&mut self, guest_mem: &M) -> Result<()> { + pub fn commit_hdr(&mut self, guest_mem: &M) -> Result<()> { self.validate_len()?; guest_mem diff --git a/vm-virtio/src/checked_descriptor.rs b/vm-virtio/src/checked_descriptor.rs index b931daa1a..f3d76ca4d 100644 --- a/vm-virtio/src/checked_descriptor.rs +++ b/vm-virtio/src/checked_descriptor.rs @@ -15,7 +15,7 @@ use std::ops::Deref; use log::warn; use virtio_queue::DescriptorChain; use virtio_queue::desc::split::Descriptor; -use vm_memory::{GuestAddress, GuestMemory}; +use vm_memory::{GuestAddress, GuestMemoryBackend}; use crate::{AccessPlatform, Translatable}; @@ -65,7 +65,7 @@ pub struct CheckedDescriptorIter<'a, M> { impl<'a, M> CheckedDescriptorIter<'a, M> where M: Deref, - M::Target: GuestMemory, + M::Target: GuestMemoryBackend, { pub fn new( chain: &'a mut DescriptorChain, @@ -82,7 +82,7 @@ where impl Iterator for CheckedDescriptorIter<'_, M> where M: Deref, - M::Target: GuestMemory, + M::Target: GuestMemoryBackend, { type Item = Result; @@ -156,7 +156,7 @@ pub trait DescriptorChainExt { impl DescriptorChainExt for DescriptorChain where M: Deref, - M::Target: GuestMemory, + M::Target: GuestMemoryBackend, { fn checked_iter<'a>( &'a mut self, diff --git a/vmm/src/coredump.rs b/vmm/src/coredump.rs index cefc64c61..37746c6c7 100644 --- a/vmm/src/coredump.rs +++ b/vmm/src/coredump.rs @@ -194,16 +194,16 @@ const EM_X86_64: u16 = 62; pub trait Elf64Writable { fn write_header(&mut self, dump_state: &DumpState) -> result::Result<(), GuestDebuggableError> { let e_ident = [ - elf::ELFMAG0 as u8, // magic + elf::ELFMAG0, // magic elf::ELFMAG1, elf::ELFMAG2, elf::ELFMAG3, - ELFCLASS64, // class - elf::ELFDATA2LSB as u8, //data - EV_CURRENT, // version - 0, // os_abi - 0, // abi_version - 0, // padding + ELFCLASS64, // class + elf::ELFDATA2LSB, // data + EV_CURRENT, // version + 0, // os_abi + 0, // abi_version + 0, // padding 0, 0, 0, diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index 95d546877..1eda66472 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -114,7 +114,7 @@ use vm_memory::{ Address, GuestAddress, GuestMemoryRegion, GuestUsize, MmapRegion, VolatileMemory, mmap, }; #[cfg(target_arch = "x86_64")] -use vm_memory::{GuestAddressSpace, GuestMemory}; +use vm_memory::{GuestAddressSpace, GuestMemoryBackend}; use vm_migration::protocol::MemoryRangeTable; use vm_migration::{ Migratable, MigratableError, Pausable, Snapshot, SnapshotData, Snapshottable, Transportable, diff --git a/vmm/src/igvm/igvm_loader.rs b/vmm/src/igvm/igvm_loader.rs index 31d04974c..2bb0947aa 100644 --- a/vmm/src/igvm/igvm_loader.rs +++ b/vmm/src/igvm/igvm_loader.rs @@ -37,7 +37,7 @@ use thiserror::Error; #[cfg(all(feature = "kvm", feature = "sev_snp"))] use vm_memory::Bytes; #[cfg(feature = "sev_snp")] -use vm_memory::{GuestAddress, GuestAddressSpace, GuestMemory}; +use vm_memory::{GuestAddress, GuestAddressSpace, GuestMemoryBackend}; #[cfg(all(feature = "kvm", feature = "sev_snp"))] use vm_migration::Snapshottable; #[cfg(all(feature = "kvm", feature = "sev_snp", feature = "fw_cfg"))] diff --git a/vmm/src/igvm/loader.rs b/vmm/src/igvm/loader.rs index 1e91ea18b..7e7f8f7d2 100644 --- a/vmm/src/igvm/loader.rs +++ b/vmm/src/igvm/loader.rs @@ -7,7 +7,7 @@ use range_map_vec::{Entry, RangeMap}; use thiserror::Error; use vm_memory::bitmap::AtomicBitmap; use vm_memory::{ - Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, GuestMemoryMmap, + Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend, GuestMemoryMmap, GuestMemoryRegion, }; diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index b56e16e44..f94c2edae 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -40,7 +40,7 @@ use vm_memory::bitmap::AtomicBitmap; use vm_memory::guest_memory::{Error as MmapError, FileOffset}; use vm_memory::mmap::MmapRegionError; use vm_memory::{ - Address, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, + Address, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryBackend, GuestMemoryError, GuestMemoryRegion, GuestUsize, MmapRegion, }; use vm_migration::protocol::{MemoryRange, MemoryRangeTable}; @@ -768,7 +768,7 @@ impl MemoryManager { Ok((mem_regions, memory_zones)) } - // Restore both GuestMemory regions along with MemoryZone zones. + // Restore both GuestMemoryBackend regions along with MemoryZone zones. fn restore_memory_regions_and_zones( guest_ram_mappings: &[GuestRamMapping], zones_config: &[MemoryZoneConfig], @@ -1585,7 +1585,7 @@ impl MemoryManager { for region in self.arch_mem_regions.iter() { if region.r_type == RegionType::Ram { // Ignore the RAM type since ranges have already been allocated - // based on the GuestMemory regions. + // based on the GuestMemoryBackend regions. continue; } self.ram_allocator diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 14e934f41..e055d75ac 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -78,7 +78,7 @@ use thiserror::Error; use tracer::trace_scoped; use vm_device::Bus; #[cfg(feature = "tdx")] -use vm_memory::GuestMemory; +use vm_memory::GuestMemoryBackend; #[cfg(feature = "tdx")] use vm_memory::{Address, ByteValued, GuestMemoryRegion, ReadVolatile}; use vm_memory::{Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic}; @@ -3909,7 +3909,7 @@ mod unit_tests { #[test] pub fn test_vm() { use hypervisor::VmExit; - use vm_memory::{Address, GuestMemory, GuestMemoryRegion}; + use vm_memory::{Address, GuestMemoryBackend, GuestMemoryRegion}; // This example based on https://lwn.net/Articles/658511/ let code = [ 0xba, 0xf8, 0x03, /* mov $0x3f8, %dx */ @@ -4047,7 +4047,7 @@ mod unit_tests { #[test] pub fn test_vm() { use hypervisor::VmExit; - use vm_memory::{Address, GuestMemory, GuestMemoryRegion}; + use vm_memory::{Address, GuestMemoryBackend, GuestMemoryRegion}; // This example based on https://lwn.net/Articles/658511/ let code = [ 0xba, 0xf8, 0x03, /* mov $0x3f8, %dx */