diff --git a/Cargo.lock b/Cargo.lock index 16ac2ea29..905eabde6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1269,12 +1269,6 @@ dependencies = [ "getrandom 0.2.15", ] -[[package]] -name = "rangemap" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" - [[package]] name = "rdrand" version = "0.8.3" @@ -1796,7 +1790,6 @@ dependencies = [ "nix 0.24.3", "polly", "procfs", - "rangemap", "rdrand", "serde", "serde_json", diff --git a/src/vmm/Cargo.toml b/src/vmm/Cargo.toml index fa010a4ca..f3f8ce11d 100644 --- a/src/vmm/Cargo.toml +++ b/src/vmm/Cargo.toml @@ -21,7 +21,6 @@ libc = ">=0.2.39" linux-loader = { version = "0.13.0", features = ["bzimage", "elf", "pe"] } log = "0.4.0" vm-memory = { version = ">=0.13", features = ["backend-mmap"] } -rangemap = "1.5.1" arch = { path = "../arch" } devices = { path = "../devices" } diff --git a/src/vmm/src/linux/vstate.rs b/src/vmm/src/linux/vstate.rs index 90c887c1a..a346f9098 100644 --- a/src/vmm/src/linux/vstate.rs +++ b/src/vmm/src/linux/vstate.rs @@ -10,6 +10,7 @@ use libc::{c_int, c_void, siginfo_t}; use std::cell::Cell; use std::fmt::{Display, Formatter}; use std::io; +use std::ops::Range; use std::os::unix::io::RawFd; @@ -57,8 +58,6 @@ use vm_memory::{ GuestRegionMmap, }; -use rangemap::RangeMap; - #[cfg(feature = "amd-sev")] use sev::launch::snp; @@ -457,7 +456,7 @@ pub struct Vm { #[cfg(feature = "amd-sev")] pub tee_config: Tee, - pub guest_memfds: RangeMap, + pub guest_memfds: Vec<(Range, RawFd)>, } impl Vm { @@ -482,7 +481,7 @@ impl Vm { supported_cpuid, #[cfg(target_arch = "x86_64")] supported_msrs, - guest_memfds: RangeMap::new(), + guest_memfds: Vec::new(), }) } @@ -521,7 +520,7 @@ impl Vm { supported_msrs, tee, tee_config: tee_config.tee, - guest_memfds: RangeMap::new(), + guest_memfds: Vec::new(), }) } @@ -560,7 +559,12 @@ impl Vm { } pub fn guest_memfd_get(&self, gpa: u64) -> Option<(RawFd, u64)> { - self.guest_memfds.get(&gpa).copied() + for (range, rawfd) in self.guest_memfds.iter() { + if range.contains(&gpa) { + return Some((*rawfd, range.start)); + } + } + None } #[allow(unused_mut)] @@ -631,7 +635,7 @@ impl Vm { .set_memory_attributes(attr) .map_err(Error::SetMemoryAttributes)?; - self.guest_memfds.insert(start..end, (guest_memfd, start)); + self.guest_memfds.push((Range { start, end }, guest_memfd)); } self.next_mem_slot += 1;