diff options
author | Alyssa Ross <hi@alyssa.is> | 2024-02-19 01:12:17 +0100 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2024-02-19 01:12:17 +0100 |
commit | 5c954e2407c7c8de6bf8246200c0248014bdfca8 (patch) | |
tree | 01663104e4d47f58fab60723648bc11fda45cc25 | |
parent | f1094c8bfdf320753d7d6f32a62cde3dd55e3747 (diff) | |
download | spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar.gz spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar.bz2 spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar.lz spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar.xz spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.tar.zst spectrum-5c954e2407c7c8de6bf8246200c0248014bdfca8.zip |
lib/nixpkgs.default.nix: update to staging-next
Going straight to staging-next lets us drop the patched Meson. Signed-off-by: Alyssa Ross <hi@alyssa.is>
-rw-r--r-- | lib/nixpkgs.default.nix | 4 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/0001-build-use-local-vhost.patch | 32 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/0002-virtio-devices-add-a-GPU-device.patch | 266 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/Cargo.lock | 430 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/default.nix | 19 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/vhost/0001-vhost-fix-receiving-reply-payloads.patch | 26 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/vhost/0002-vhost_user-add-shared-memory-region-support.patch | 140 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/vhost/0003-vhost_user-add-protocol-flag-for-shmem.patch | 16 | ||||
-rw-r--r-- | pkgs/cloud-hypervisor/vhost/0004-vhost_user-renumber-SHARED_MEMORY_REGIONS.patch | 16 | ||||
-rw-r--r-- | pkgs/default.nix | 2 | ||||
-rw-r--r-- | pkgs/meson/default.nix | 13 | ||||
-rw-r--r-- | pkgs/overlay.nix | 2 |
12 files changed, 555 insertions, 411 deletions
diff --git a/lib/nixpkgs.default.nix b/lib/nixpkgs.default.nix index df34b52..eb65e39 100644 --- a/lib/nixpkgs.default.nix +++ b/lib/nixpkgs.default.nix @@ -4,6 +4,6 @@ # Generated by scripts/update-nixpkgs.sh. import (builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/97b17f32362e475016f942bbdfda4a4a72a8a652.tar.gz"; - sha256 = "05zsb3yyfa3jf1bs79hdp1crgh6pw20lg117vyvfzixhdq42gjsi"; + url = "https://github.com/NixOS/nixpkgs/archive/de0bf263cce70074a298ee4672ca3a503d66e39c.tar.gz"; + sha256 = "1wh05qqihvmjnykxv8sncxcbim29d6wdx356w1zcwpmhm28rrrrj"; }) diff --git a/pkgs/cloud-hypervisor/0001-build-use-local-vhost.patch b/pkgs/cloud-hypervisor/0001-build-use-local-vhost.patch index e6d81e9..c83552c 100644 --- a/pkgs/cloud-hypervisor/0001-build-use-local-vhost.patch +++ b/pkgs/cloud-hypervisor/0001-build-use-local-vhost.patch @@ -1,4 +1,4 @@ -From cb9d39048282bc28d0a5be01be268dd74fbd3408 Mon Sep 17 00:00:00 2001 +From 407b410f3f802d4d5f37a5525fa29c8deaf8998e Mon Sep 17 00:00:00 2001 From: Alyssa Ross <alyssa.ross@unikie.com> Date: Wed, 28 Sep 2022 12:18:19 +0000 Subject: [PATCH 1/2] build: use local vhost @@ -14,40 +14,40 @@ Signed-off-by: Alyssa Ross <hi@alyssa.is> 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock -index 52afc0d1..bef28e85 100644 +index 533a473d..51b33209 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -2371,8 +2371,6 @@ dependencies = [ +@@ -2376,8 +2376,6 @@ dependencies = [ [[package]] name = "vhost" - version = "0.9.0" + version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "289adfce099c71f8310f895932ccd978f352ca494ea47496dbe20d4241888b82" +-checksum = "2b64e816d0d49769fbfaa1494eb77cc2a3ddc526ead05c7f922cb7d64106286f" dependencies = [ "bitflags 2.4.1", "libc", -@@ -2383,8 +2381,6 @@ dependencies = [ +@@ -2388,8 +2386,6 @@ dependencies = [ [[package]] name = "vhost-user-backend" - version = "0.11.0" + version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "61255322e3ebe93fb77d9f6d99577eca7089bbea4174076c5353a8024a463061" +-checksum = "72c8c447d076ac508d78cb45664d203df7989e891656dce260a7e93d72352c9a" dependencies = [ "libc", "log", diff --git a/Cargo.toml b/Cargo.toml -index ceb1fc67..5d750eba 100644 +index 4ef23821..c0455bed 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -55,6 +55,8 @@ zbus = { version = "3.11.1", optional = true } - kvm-bindings = { git = "https://github.com/cloud-hypervisor/kvm-bindings", branch = "ch-v0.6.0-tdx" } - kvm-ioctls = { git = "https://github.com/rust-vmm/kvm-ioctls", branch = "main" } - versionize_derive = { git = "https://github.com/cloud-hypervisor/versionize_derive", branch = "ch" } -+vhost = { path = "../vhost/crates/vhost" } -+vhost-user-backend = { path = "../vhost/crates/vhost-user-backend" } +@@ -54,6 +54,8 @@ zbus = { version = "3.11.1", optional = true } + [patch.crates-io] + kvm-bindings = { git = "https://github.com/cloud-hypervisor/kvm-bindings", branch = "ch-v0.7.0" } + versionize_derive = { git = "https://github.com/cloud-hypervisor/versionize_derive", branch = "ch-0.1.6" } ++vhost = { path = "../vhost/vhost" } ++vhost-user-backend = { path = "../vhost/vhost-user-backend" } [dev-dependencies] dirs = "5.0.0" -- -2.42.0 +2.43.0 diff --git a/pkgs/cloud-hypervisor/0002-virtio-devices-add-a-GPU-device.patch b/pkgs/cloud-hypervisor/0002-virtio-devices-add-a-GPU-device.patch index 9840627..e6243c4 100644 --- a/pkgs/cloud-hypervisor/0002-virtio-devices-add-a-GPU-device.patch +++ b/pkgs/cloud-hypervisor/0002-virtio-devices-add-a-GPU-device.patch @@ -1,4 +1,4 @@ -From 24ef519720ced73b7fe75bc0d0c5171f67e3edb7 Mon Sep 17 00:00:00 2001 +From 3bf98eb53f3f9637e4d2ba3d07e62f1ece891788 Mon Sep 17 00:00:00 2001 From: Alyssa Ross <alyssa.ross@unikie.com> Date: Wed, 7 Sep 2022 14:16:29 +0000 Subject: [PATCH 2/2] virtio-devices: add a GPU device @@ -34,20 +34,22 @@ Signed-off-by: Alyssa Ross <hi@alyssa.is> virtio-devices/src/vhost_user/gpu.rs | 415 ++++++++++++++++++ virtio-devices/src/vhost_user/mod.rs | 6 + .../src/vhost_user/vu_common_ctrl.rs | 9 +- - vmm/src/api/mod.rs | 10 +- + vmm/src/api/http/http_endpoint.rs | 9 +- + vmm/src/api/http/mod.rs | 10 +- + vmm/src/api/mod.rs | 47 +- vmm/src/config.rs | 108 +++++ vmm/src/device_manager.rs | 135 +++++- - vmm/src/lib.rs | 86 +++- + vmm/src/lib.rs | 79 +++- vmm/src/vm.rs | 28 +- vmm/src/vm_config.rs | 10 + - 14 files changed, 829 insertions(+), 14 deletions(-) + 16 files changed, 871 insertions(+), 21 deletions(-) create mode 100644 virtio-devices/src/vhost_user/gpu.rs diff --git a/src/main.rs b/src/main.rs -index 2edd116a..3970de2c 100644 +index 86d80562..149b4c74 100644 --- a/src/main.rs +++ b/src/main.rs -@@ -277,6 +277,13 @@ fn create_app(default_vcpus: String, default_memory: String, default_rng: String +@@ -285,6 +285,13 @@ fn create_app(default_vcpus: String, default_memory: String, default_rng: String .num_args(1..) .group("vm-config"), ) @@ -61,7 +63,7 @@ index 2edd116a..3970de2c 100644 .arg( Arg::new("pmem") .long("pmem") -@@ -850,6 +857,7 @@ mod unit_tests { +@@ -885,6 +892,7 @@ mod unit_tests { }, balloon: None, fs: None, @@ -114,7 +116,7 @@ index 680cbe29..55428cd8 100644 CreateSeccompFilter(seccompiler::Error), #[error("Failed to create rate limiter: {0}")] diff --git a/virtio-devices/src/seccomp_filters.rs b/virtio-devices/src/seccomp_filters.rs -index 41585e77..1c7fc1bc 100644 +index b9e7e5f1..5d35ae5b 100644 --- a/virtio-devices/src/seccomp_filters.rs +++ b/virtio-devices/src/seccomp_filters.rs @@ -22,6 +22,7 @@ pub enum Thread { @@ -125,7 +127,7 @@ index 41585e77..1c7fc1bc 100644 VirtioVhostNet, VirtioVhostNetCtl, VirtioVsock, -@@ -163,6 +164,20 @@ fn virtio_vhost_fs_thread_rules() -> Vec<(i64, Vec<SeccompRule>)> { +@@ -164,6 +165,20 @@ fn virtio_vhost_fs_thread_rules() -> Vec<(i64, Vec<SeccompRule>)> { ] } @@ -146,7 +148,7 @@ index 41585e77..1c7fc1bc 100644 fn virtio_vhost_net_ctl_thread_rules() -> Vec<(i64, Vec<SeccompRule>)> { vec![] } -@@ -233,6 +248,7 @@ fn get_seccomp_rules(thread_type: Thread) -> Vec<(i64, Vec<SeccompRule>)> { +@@ -234,6 +249,7 @@ fn get_seccomp_rules(thread_type: Thread) -> Vec<(i64, Vec<SeccompRule>)> { Thread::VirtioRng => virtio_rng_thread_rules(), Thread::VirtioVhostBlock => virtio_vhost_block_thread_rules(), Thread::VirtioVhostFs => virtio_vhost_fs_thread_rules(), @@ -656,11 +658,66 @@ index 6f980f23..54511c52 100644 pub fn negotiate_features_vhost_user( &mut self, avail_features: u64, +diff --git a/vmm/src/api/http/http_endpoint.rs b/vmm/src/api/http/http_endpoint.rs +index 141cc1d0..1cc8786b 100644 +--- a/vmm/src/api/http/http_endpoint.rs ++++ b/vmm/src/api/http/http_endpoint.rs +@@ -8,10 +8,10 @@ use crate::api::http::{error_response, EndpointHandler, HttpError}; + #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] + use crate::api::VmCoredump; + use crate::api::{ +- AddDisk, ApiAction, ApiRequest, VmAddDevice, VmAddFs, VmAddNet, VmAddPmem, VmAddUserDevice, +- VmAddVdpa, VmAddVsock, VmBoot, VmConfig, VmCounters, VmDelete, VmPause, VmPowerButton, +- VmReboot, VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, VmRestore, VmResume, +- VmSendMigration, VmShutdown, VmSnapshot, ++ AddDisk, ApiAction, ApiRequest, VmAddDevice, VmAddFs, VmAddGpu, VmAddNet, VmAddPmem, ++ VmAddUserDevice, VmAddVdpa, VmAddVsock, VmBoot, VmConfig, VmCounters, VmDelete, VmPause, ++ VmPowerButton, VmReboot, VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, VmRestore, ++ VmResume, VmSendMigration, VmShutdown, VmSnapshot, + }; + use crate::config::NetConfig; + use micro_http::{Body, Method, Request, Response, StatusCode, Version}; +@@ -176,6 +176,7 @@ vm_action_put_handler!(VmPowerButton); + vm_action_put_handler_body!(VmAddDevice); + vm_action_put_handler_body!(AddDisk); + vm_action_put_handler_body!(VmAddFs); ++vm_action_put_handler_body!(VmAddGpu); + vm_action_put_handler_body!(VmAddPmem); + vm_action_put_handler_body!(VmAddVdpa); + vm_action_put_handler_body!(VmAddVsock); +diff --git a/vmm/src/api/http/mod.rs b/vmm/src/api/http/mod.rs +index 2eac530f..8a15906f 100644 +--- a/vmm/src/api/http/mod.rs ++++ b/vmm/src/api/http/mod.rs +@@ -7,9 +7,9 @@ use self::http_endpoint::{VmActionHandler, VmCreate, VmInfo, VmmPing, VmmShutdow + #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] + use crate::api::VmCoredump; + use crate::api::{ +- AddDisk, ApiError, ApiRequest, VmAddDevice, VmAddFs, VmAddNet, VmAddPmem, VmAddUserDevice, +- VmAddVdpa, VmAddVsock, VmBoot, VmCounters, VmDelete, VmPause, VmPowerButton, VmReboot, +- VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, VmRestore, VmResume, ++ AddDisk, ApiError, ApiRequest, VmAddDevice, VmAddFs, VmAddGpu, VmAddNet, VmAddPmem, ++ VmAddUserDevice, VmAddVdpa, VmAddVsock, VmBoot, VmCounters, VmDelete, VmPause, VmPowerButton, ++ VmReboot, VmReceiveMigration, VmRemoveDevice, VmResize, VmResizeZone, VmRestore, VmResume, + VmSendMigration, VmShutdown, VmSnapshot, + }; + use crate::seccomp_filters::{get_seccomp_filter, Thread}; +@@ -176,6 +176,10 @@ pub static HTTP_ROUTES: Lazy<HttpRoutes> = Lazy::new(|| { + endpoint!("/vm.add-fs"), + Box::new(VmActionHandler::new(&VmAddFs)), + ); ++ r.routes.insert( ++ endpoint!("/vm.add-gpu"), ++ Box::new(VmActionHandler::new(&VmAddGpu)), ++ ); + r.routes.insert( + endpoint!("/vm.add-net"), + Box::new(VmActionHandler::new(&VmAddNet)), diff --git a/vmm/src/api/mod.rs b/vmm/src/api/mod.rs -index aaae8ee3..9433ee07 100644 +index ad74aa9e..142bc870 100644 --- a/vmm/src/api/mod.rs +++ b/vmm/src/api/mod.rs -@@ -38,8 +38,8 @@ pub use self::http::start_http_fd_thread; +@@ -39,8 +39,8 @@ pub use self::http::start_http_fd_thread; pub use self::http::start_http_path_thread; use crate::config::{ @@ -671,7 +728,7 @@ index aaae8ee3..9433ee07 100644 }; use crate::device_tree::DeviceTree; use crate::vm::{Error as VmError, VmState}; -@@ -135,6 +135,9 @@ pub enum ApiError { +@@ -139,6 +139,9 @@ pub enum ApiError { /// The fs could not be added to the VM. VmAddFs(VmError), @@ -681,18 +738,69 @@ index aaae8ee3..9433ee07 100644 /// The pmem device could not be added to the VM. VmAddPmem(VmError), -@@ -306,6 +309,9 @@ pub enum ApiRequest { - /// Add a fs to the VM. - VmAddFs(Arc<FsConfig>, Sender<ApiResponse>), +@@ -193,6 +196,7 @@ impl Display for ApiError { + ApplySeccompFilter(seccomp_error) => write!(f, "{}", seccomp_error), + VmAddDisk(vm_error) => write!(f, "{}", vm_error), + VmAddFs(vm_error) => write!(f, "{}", vm_error), ++ VmAddGpu(vm_error) => write!(f, "{}", vm_error), + VmAddPmem(vm_error) => write!(f, "{}", vm_error), + VmAddNet(vm_error) => write!(f, "{}", vm_error), + VmAddVdpa(vm_error) => write!(f, "{}", vm_error), +@@ -332,6 +336,8 @@ pub trait RequestHandler { + + fn vm_add_fs(&mut self, fs_cfg: FsConfig) -> Result<Option<Vec<u8>>, VmError>; -+ /// Add a gpu to the VM. -+ VmAddGpu(Arc<GpuConfig>, Sender<ApiResponse>), ++ fn vm_add_gpu(&mut self, gpu_cfg: GpuConfig) -> Result<Option<Vec<u8>>, VmError>; + - /// Add a pmem device to the VM. - VmAddPmem(Arc<PmemConfig>, Sender<ApiResponse>), + fn vm_add_pmem(&mut self, pmem_cfg: PmemConfig) -> Result<Option<Vec<u8>>, VmError>; + + fn vm_add_net(&mut self, net_cfg: NetConfig) -> Result<Option<Vec<u8>>, VmError>; +@@ -527,6 +533,43 @@ impl ApiAction for VmAddFs { + } + } ++pub struct VmAddGpu; ++ ++impl ApiAction for VmAddGpu { ++ type RequestBody = GpuConfig; ++ type ResponseBody = Option<Body>; ++ ++ fn request( ++ &self, ++ config: Self::RequestBody, ++ response_sender: Sender<ApiResponse>, ++ ) -> ApiRequest { ++ Box::new(move |vmm| { ++ info!("API request event: VmAddGpu {:?}", config); ++ ++ let response = vmm ++ .vm_add_gpu(config) ++ .map_err(ApiError::VmAddGpu) ++ .map(ApiResponsePayload::VmAction); ++ ++ response_sender ++ .send(response) ++ .map_err(VmmError::ApiResponseSend)?; ++ ++ Ok(false) ++ }) ++ } ++ ++ fn send( ++ &self, ++ api_evt: EventFd, ++ api_sender: Sender<ApiRequest>, ++ data: Self::RequestBody, ++ ) -> ApiResult<Self::ResponseBody> { ++ get_response_body(self, api_evt, api_sender, data) ++ } ++} ++ + pub struct VmAddPmem; + + impl ApiAction for VmAddPmem { diff --git a/vmm/src/config.rs b/vmm/src/config.rs -index 7ed48e0d..97086516 100644 +index 4b4e618a..d21c9655 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -27,6 +27,8 @@ pub enum Error { @@ -704,7 +812,7 @@ index 7ed48e0d..97086516 100644 /// Missing persistent memory file parameter. ParsePmemFileMissing, /// Missing vsock socket path parameter. -@@ -55,6 +57,8 @@ pub enum Error { +@@ -57,6 +59,8 @@ pub enum Error { ParseBalloon(OptionParserError), /// Error parsing filesystem parameters ParseFileSystem(OptionParserError), @@ -713,7 +821,7 @@ index 7ed48e0d..97086516 100644 /// Error parsing persistent memory parameters ParsePersistentMemory(OptionParserError), /// Failed parsing console -@@ -318,6 +322,8 @@ impl fmt::Display for Error { +@@ -350,6 +354,8 @@ impl fmt::Display for Error { ParseFileSystem(o) => write!(f, "Error parsing --fs: {o}"), ParseFsSockMissing => write!(f, "Error parsing --fs: socket missing"), ParseFsTagMissing => write!(f, "Error parsing --fs: tag missing"), @@ -722,7 +830,7 @@ index 7ed48e0d..97086516 100644 ParsePersistentMemory(o) => write!(f, "Error parsing --pmem: {o}"), ParsePmemFileMissing => write!(f, "Error parsing --pmem: file missing"), ParseVsock(o) => write!(f, "Error parsing --vsock: {o}"), -@@ -382,6 +388,7 @@ pub struct VmParams<'a> { +@@ -416,6 +422,7 @@ pub struct VmParams<'a> { pub rng: &'a str, pub balloon: Option<&'a str>, pub fs: Option<Vec<&'a str>>, @@ -730,7 +838,7 @@ index 7ed48e0d..97086516 100644 pub pmem: Option<Vec<&'a str>>, pub serial: &'a str, pub console: &'a str, -@@ -427,6 +434,9 @@ impl<'a> VmParams<'a> { +@@ -468,6 +475,9 @@ impl<'a> VmParams<'a> { let fs: Option<Vec<&str>> = args .get_many::<String>("fs") .map(|x| x.map(|y| y as &str).collect()); @@ -740,7 +848,7 @@ index 7ed48e0d..97086516 100644 let pmem: Option<Vec<&str>> = args .get_many::<String>("pmem") .map(|x| x.map(|y| y as &str).collect()); -@@ -468,6 +478,7 @@ impl<'a> VmParams<'a> { +@@ -510,6 +520,7 @@ impl<'a> VmParams<'a> { rng, balloon, fs, @@ -748,7 +856,7 @@ index 7ed48e0d..97086516 100644 pmem, serial, console, -@@ -1407,6 +1418,49 @@ impl FsConfig { +@@ -1559,6 +1570,49 @@ impl FsConfig { } } @@ -798,7 +906,7 @@ index 7ed48e0d..97086516 100644 impl PmemConfig { pub const SYNTAX: &'static str = "Persistent memory parameters \ \"file=<backing_file_path>,size=<persistent_memory_size>,iommu=on|off,\ -@@ -2000,6 +2054,17 @@ impl VmConfig { +@@ -2237,6 +2291,17 @@ impl VmConfig { } } @@ -816,7 +924,7 @@ index 7ed48e0d..97086516 100644 if let Some(pmems) = &self.pmem { for pmem in pmems { pmem.validate(self)?; -@@ -2214,6 +2279,15 @@ impl VmConfig { +@@ -2467,6 +2532,15 @@ impl VmConfig { fs = Some(fs_config_list); } @@ -832,7 +940,7 @@ index 7ed48e0d..97086516 100644 let mut pmem: Option<Vec<PmemConfig>> = None; if let Some(pmem_list) = &vm_params.pmem { let mut pmem_config_list = Vec::new(); -@@ -2329,6 +2403,7 @@ impl VmConfig { +@@ -2585,6 +2659,7 @@ impl VmConfig { rng, balloon, fs, @@ -840,7 +948,7 @@ index 7ed48e0d..97086516 100644 pmem, serial, console, -@@ -2383,6 +2458,13 @@ impl VmConfig { +@@ -2641,6 +2716,13 @@ impl VmConfig { removed |= fs.len() != len; } @@ -854,7 +962,7 @@ index 7ed48e0d..97086516 100644 // Remove if net device if let Some(net) = self.net.as_mut() { let len = net.len(); -@@ -2452,6 +2534,7 @@ impl Clone for VmConfig { +@@ -2711,6 +2793,7 @@ impl Clone for VmConfig { rng: self.rng.clone(), balloon: self.balloon.clone(), fs: self.fs.clone(), @@ -862,29 +970,31 @@ index 7ed48e0d..97086516 100644 pmem: self.pmem.clone(), serial: self.serial.clone(), console: self.console.clone(), -@@ -2846,6 +2929,21 @@ mod tests { +@@ -3177,6 +3260,23 @@ mod tests { Ok(()) } ++ fn gpu_fixture() -> GpuConfig { ++ GpuConfig { ++ socket: PathBuf::from("/tmp/sock"), ++ id: None, ++ pci_segment: 0, ++ } ++ } ++ + #[test] + fn test_parse_gpu() -> Result<()> { + // "socket" must be supplied + assert!(GpuConfig::parse("").is_err()); -+ assert_eq!( -+ GpuConfig::parse("socket=/tmp/sock")?, -+ GpuConfig { -+ socket: PathBuf::from("/tmp/sock"), -+ ..Default::default() -+ } -+ ); ++ assert_eq!(GpuConfig::parse("socket=/tmp/sock")?, gpu_fixture()); + + Ok(()) + } + - #[test] - fn test_pmem_parsing() -> Result<()> { - // Must always give a file and size -@@ -3096,6 +3194,7 @@ mod tests { + fn pmem_fixture() -> PmemConfig { + PmemConfig { + file: PathBuf::from("/tmp/pmem"), +@@ -3463,6 +3563,7 @@ mod tests { }, balloon: None, fs: None, @@ -892,14 +1002,12 @@ index 7ed48e0d..97086516 100644 pmem: None, serial: ConsoleConfig { file: None, -@@ -3260,6 +3359,15 @@ mod tests { +@@ -3630,6 +3731,13 @@ mod tests { Err(ValidationError::VhostUserRequiresSharedMemory) ); + let mut invalid_config = valid_config.clone(); -+ invalid_config.gpu = Some(vec![GpuConfig { -+ ..Default::default() -+ }]); ++ invalid_config.gpu = Some(vec![gpu_fixture()]); + assert_eq!( + invalid_config.validate(), + Err(ValidationError::VhostUserRequiresSharedMemory) @@ -909,7 +1017,7 @@ index 7ed48e0d..97086516 100644 still_valid_config.memory.shared = true; assert!(still_valid_config.validate().is_ok()); diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs -index 883f0c04..847aea72 100644 +index 6c8e5bc9..460ee543 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -10,8 +10,8 @@ @@ -923,15 +1031,15 @@ index 883f0c04..847aea72 100644 }; use crate::cpu::{CpuManager, CPU_MANAGER_ACPI_SIZE}; use crate::device_tree::{DeviceNode, DeviceTree}; -@@ -66,6 +66,7 @@ use serde::{Deserialize, Serialize}; - use std::collections::{BTreeSet, HashMap}; +@@ -67,6 +67,7 @@ use serde::{Deserialize, Serialize}; + use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::fs::{read_link, File, OpenOptions}; use std::io::{self, stdout, Seek, SeekFrom}; +use std::iter::once; use std::mem::zeroed; use std::num::Wrapping; use std::os::unix::fs::OpenOptionsExt; -@@ -81,6 +82,7 @@ use virtio_devices::transport::{VirtioPciDevice, VirtioPciDeviceActivator}; +@@ -82,6 +83,7 @@ use virtio_devices::transport::{VirtioPciDevice, VirtioPciDeviceActivator}; use virtio_devices::vhost_user::VhostUserConfig; use virtio_devices::{ AccessPlatformMapping, ActivateError, VdpaDmaMapping, VirtioMemMappingSource, @@ -939,7 +1047,7 @@ index 883f0c04..847aea72 100644 }; use virtio_devices::{Endpoint, IommuMapping}; use vm_allocator::{AddressAllocator, SystemAllocator}; -@@ -122,6 +124,7 @@ const PVPANIC_DEVICE_NAME: &str = "__pvpanic"; +@@ -127,6 +129,7 @@ const PVPANIC_DEVICE_NAME: &str = "__pvpanic"; // identifiers if the user doesn't give one const DISK_DEVICE_NAME_PREFIX: &str = "_disk"; const FS_DEVICE_NAME_PREFIX: &str = "_fs"; @@ -947,7 +1055,7 @@ index 883f0c04..847aea72 100644 const NET_DEVICE_NAME_PREFIX: &str = "_net"; const PMEM_DEVICE_NAME_PREFIX: &str = "_pmem"; const VDPA_DEVICE_NAME_PREFIX: &str = "_vdpa"; -@@ -158,9 +161,15 @@ pub enum DeviceManagerError { +@@ -163,9 +166,15 @@ pub enum DeviceManagerError { /// Cannot create virtio-fs device CreateVirtioFs(virtio_devices::vhost_user::Error), @@ -963,7 +1071,7 @@ index 883f0c04..847aea72 100644 /// Cannot create vhost-user-blk device CreateVhostUserBlk(virtio_devices::vhost_user::Error), -@@ -245,6 +254,9 @@ pub enum DeviceManagerError { +@@ -250,6 +259,9 @@ pub enum DeviceManagerError { /// Cannot find a memory range for virtio-fs FsRangeAllocation, @@ -973,7 +1081,7 @@ index 883f0c04..847aea72 100644 /// Error creating serial output file SerialOutputFileOpen(io::Error), -@@ -2156,6 +2168,9 @@ impl DeviceManager { +@@ -2304,6 +2316,9 @@ impl DeviceManager { // Add virtio-fs if required devices.append(&mut self.make_virtio_fs_devices()?); @@ -983,7 +1091,7 @@ index 883f0c04..847aea72 100644 // Add virtio-pmem if required devices.append(&mut self.make_virtio_pmem_devices()?); -@@ -2685,6 +2700,114 @@ impl DeviceManager { +@@ -2875,6 +2890,114 @@ impl DeviceManager { Ok(devices) } @@ -1098,7 +1206,7 @@ index 883f0c04..847aea72 100644 fn make_virtio_pmem_device( &mut self, pmem_cfg: &mut PmemConfig, -@@ -3948,6 +4071,7 @@ impl DeviceManager { +@@ -4138,6 +4261,7 @@ impl DeviceManager { | VirtioDeviceType::Block | VirtioDeviceType::Pmem | VirtioDeviceType::Fs @@ -1106,7 +1214,7 @@ index 883f0c04..847aea72 100644 | VirtioDeviceType::Vsock => {} _ => return Err(DeviceManagerError::RemovalNotAllowed(device_type)), } -@@ -4220,6 +4344,13 @@ impl DeviceManager { +@@ -4410,6 +4534,13 @@ impl DeviceManager { self.hotplug_virtio_pci_device(device) } @@ -1121,7 +1229,7 @@ index 883f0c04..847aea72 100644 self.validate_identifier(&pmem_cfg.id)?; diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs -index 23cd36d0..38ae9a2b 100644 +index 121f14a5..951bc93b 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -13,8 +13,8 @@ use crate::api::{ @@ -1135,7 +1243,7 @@ index 23cd36d0..38ae9a2b 100644 }; #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] use crate::coredump::GuestDebuggable; -@@ -1176,6 +1176,32 @@ impl Vmm { +@@ -1704,6 +1704,32 @@ impl RequestHandler for Vmm { } } @@ -1168,21 +1276,7 @@ index 23cd36d0..38ae9a2b 100644 fn vm_add_pmem(&mut self, pmem_cfg: PmemConfig) -> result::Result<Option<Vec<u8>>, VmError> { self.vm_config.as_ref().ok_or(VmError::VmNotCreated)?; -@@ -2128,6 +2154,13 @@ impl Vmm { - .map(ApiResponsePayload::VmAction); - sender.send(response).map_err(Error::ApiResponseSend)?; - } -+ ApiRequest::VmAddGpu(add_gpu_data, sender) => { -+ let response = self -+ .vm_add_gpu(add_gpu_data.as_ref().clone()) -+ .map_err(ApiError::VmAddGpu) -+ .map(ApiResponsePayload::VmAction); -+ sender.send(response).map_err(Error::ApiResponseSend)?; -+ } - ApiRequest::VmAddPmem(add_pmem_data, sender) => { - let response = self - .vm_add_pmem(add_pmem_data.as_ref().clone()) -@@ -2293,6 +2326,7 @@ mod unit_tests { +@@ -2094,6 +2120,7 @@ mod unit_tests { }, balloon: None, fs: None, @@ -1190,7 +1284,7 @@ index 23cd36d0..38ae9a2b 100644 pmem: None, serial: ConsoleConfig { file: None, -@@ -2522,6 +2556,54 @@ mod unit_tests { +@@ -2325,6 +2352,54 @@ mod unit_tests { ); } @@ -1246,7 +1340,7 @@ index 23cd36d0..38ae9a2b 100644 fn test_vmm_vm_cold_add_pmem() { let mut vmm = create_dummy_vmm(); diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs -index fc42202e..d70318d3 100644 +index 43a04bfe..5cdd8fcf 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -12,8 +12,8 @@ @@ -1260,7 +1354,7 @@ index fc42202e..d70318d3 100644 }; use crate::config::{NumaConfig, PayloadConfig}; #[cfg(all(target_arch = "x86_64", feature = "guest_debug"))] -@@ -1560,6 +1560,30 @@ impl Vm { +@@ -1582,6 +1582,30 @@ impl Vm { Ok(pci_device_info) } @@ -1292,14 +1386,14 @@ index fc42202e..d70318d3 100644 let pci_device_info = self .device_manager diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs -index 100a4898..c4af5851 100644 +index 51e7847e..afc5c72b 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs -@@ -423,6 +423,15 @@ impl Default for FsConfig { - } +@@ -365,6 +365,15 @@ pub fn default_fsconfig_queue_size() -> u16 { + 1024 } -+#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] ++#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] +pub struct GpuConfig { + pub socket: PathBuf, + #[serde(default)] @@ -1308,10 +1402,10 @@ index 100a4898..c4af5851 100644 + pub pci_segment: u16, +} + - #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize, Default)] + #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct PmemConfig { pub file: PathBuf, -@@ -597,6 +606,7 @@ pub struct VmConfig { +@@ -561,6 +570,7 @@ pub struct VmConfig { pub rng: RngConfig, pub balloon: Option<BalloonConfig>, pub fs: Option<Vec<FsConfig>>, @@ -1320,5 +1414,5 @@ index 100a4898..c4af5851 100644 #[serde(default = "default_serial")] pub serial: ConsoleConfig, -- -2.42.0 +2.43.0 diff --git a/pkgs/cloud-hypervisor/Cargo.lock b/pkgs/cloud-hypervisor/Cargo.lock index bef28e8..51b3320 100644 --- a/pkgs/cloud-hypervisor/Cargo.lock +++ b/pkgs/cloud-hypervisor/Cargo.lock @@ -5,7 +5,7 @@ version = 3 [[package]] name = "acpi_tables" version = "0.1.0" -source = "git+https://github.com/rust-vmm/acpi_tables?branch=main#1a733bf690ccc10bdfeacad33e3c9f6cce0008fd" +source = "git+https://github.com/rust-vmm/acpi_tables?branch=main#76e8552f57f76ca918e19c0a7b7480d2fa2c7241" dependencies = [ "zerocopy", ] @@ -50,9 +50,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" @@ -65,28 +65,28 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "api_client" @@ -135,13 +135,15 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.9.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" dependencies = [ "concurrent-queue", - "event-listener 2.5.3", + "event-listener 4.0.0", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] @@ -223,7 +225,7 @@ dependencies = [ "cfg-if", "event-listener 3.0.0", "futures-lite 1.13.0", - "rustix 0.38.8", + "rustix 0.38.25", "windows-sys 0.48.0", ] @@ -235,7 +237,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -265,13 +267,13 @@ checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "531b97fb4cd3dfdce92c35dedbfdc1f0b9d8091c8ca943d6dae340ef5012d514" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -312,13 +314,13 @@ dependencies = [ [[package]] name = "bitfield-struct" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac32db62a43cf33353ce30b4a208b08193ea2086a1c6c004acb0073c706a29d" +checksum = "a26b8cea8bb6a81b75a84603b9e096f05fa86db057904ef29be1deee900532bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -338,7 +340,7 @@ name = "block" version = "0.1.0" dependencies = [ "byteorder", - "crc32c", + "crc-any", "io-uring", "libc", "log", @@ -366,17 +368,18 @@ dependencies = [ [[package]] name = "blocking" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ "async-channel", - "async-lock 2.7.0", + "async-lock 3.2.0", "async-task", - "atomic-waker", - "fastrand 1.9.0", - "futures-lite 1.13.0", - "log", + "fastrand 2.0.0", + "futures-io", + "futures-lite 2.1.0", + "piper", + "tracing", ] [[package]] @@ -436,7 +439,7 @@ checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "cloud-hypervisor" -version = "37.0.0" +version = "38.0.0" dependencies = [ "anyhow", "api_client", @@ -473,9 +476,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] @@ -490,12 +493,12 @@ dependencies = [ ] [[package]] -name = "crc32c" -version = "0.6.4" +name = "crc-any" +version = "2.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" +checksum = "c01a5e1f881f6fb6099a7bdf949e946719fd4f1fefa56264890574febf0eb6d0" dependencies = [ - "rustc_version", + "debug-helper", ] [[package]] @@ -509,18 +512,15 @@ dependencies = [ [[package]] name = "crc64" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55626594feae15d266d52440b26ff77de0e22230cf0c113abe619084c1ddc910" +checksum = "2707e3afba5e19b75d582d88bc79237418f2a2a2d673d01cf9b03633b46e98f3" [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crypto-common" @@ -534,9 +534,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "c376d08ea6aa96aafe61237c7200d1241cb177b7d3a542d791f2d118e9cbb955" dependencies = [ "darling_core", "darling_macro", @@ -544,30 +544,36 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "33043dcd19068b8192064c704b3f83eb464f91f1ff527b44a4e2b08d9cdb8855" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "c5a91391accf613803c2a9bf9abccdbaa07c54b4244a5b64883f9c3c137c86be" dependencies = [ "darling_core", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] +name = "debug-helper" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e" + +[[package]] name = "derivative" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -605,9 +611,9 @@ dependencies = [ [[package]] name = "dhat" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2aaf837aaf456f6706cb46386ba8dffd4013a757e36f4ea05c20dd46b209a3" +checksum = "98cd11d84628e233de0ce467de10b8633f4ddaecafadefc86e13b84b8739b827" dependencies = [ "backtrace", "lazy_static", @@ -668,14 +674,14 @@ checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "humantime", "is-terminal", @@ -801,9 +807,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -816,9 +822,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -826,15 +832,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -843,9 +849,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" @@ -877,32 +883,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -918,9 +924,9 @@ dependencies = [ [[package]] name = "gdbstub" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a8b954f9d02b74fe8e89a1c77bd9a6b8206713ebf1b272bfad9573b4a86f88" +checksum = "6341b3480afbb34eaefc7f92713bc92f2d83e338aaa1c44192f9c2956f4a4903" dependencies = [ "bitflags 2.4.1", "cfg-if", @@ -952,9 +958,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -1121,7 +1127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi", - "rustix 0.38.8", + "rustix 0.38.25", "windows-sys 0.48.0", ] @@ -1142,8 +1148,8 @@ dependencies = [ [[package]] name = "kvm-bindings" -version = "0.6.0" -source = "git+https://github.com/cloud-hypervisor/kvm-bindings?branch=ch-v0.6.0-tdx#7d9ffb47e5b9b1989577258800a0f57c93f1445f" +version = "0.7.0" +source = "git+https://github.com/cloud-hypervisor/kvm-bindings?branch=ch-v0.7.0#2dcf85d4f8aa55befcaa996b699ddb18ec9ed059" dependencies = [ "serde", "serde_derive", @@ -1152,9 +1158,11 @@ dependencies = [ [[package]] name = "kvm-ioctls" -version = "0.13.0" -source = "git+https://github.com/rust-vmm/kvm-ioctls?branch=main#23a3bb045a467e60bb00328a0b13cea13b5815d0" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9002dff009755414f22b962ec6ae6980b07d6d8b06e5297b1062019d72bd6a8c" dependencies = [ + "bitflags 2.4.1", "kvm-bindings", "libc", "vmm-sys-util", @@ -1168,9 +1176,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libssh2-sys" @@ -1200,9 +1208,9 @@ dependencies = [ [[package]] name = "linux-loader" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132a531b85b3a164012ab682c72f8f2cce7757f187be5f60782fd2b4cda9cb34" +checksum = "eb68dd3452f25a8defaf0ae593509cff0c777683e4d8924f59ac7c5f89267a83" dependencies = [ "vm-memory", ] @@ -1215,9 +1223,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1259,7 +1267,7 @@ dependencies = [ [[package]] name = "micro_http" version = "0.1.0" -source = "git+https://github.com/firecracker-microvm/micro-http?branch=main#a4d632f2c5ea45712c0d2002dc909a63879e85c3" +source = "git+https://github.com/firecracker-microvm/micro-http?branch=main#e75dfa1eeea23b69caa7407bc2c3a76d7b7262fb" dependencies = [ "libc", "vmm-sys-util", @@ -1287,7 +1295,7 @@ dependencies = [ [[package]] name = "mshv-bindings" version = "0.1.1" -source = "git+https://github.com/rust-vmm/mshv?branch=main#0dd4d3452a7f2e95199f4b58380acc41458474de" +source = "git+https://github.com/rust-vmm/mshv?branch=main#9d0c11fe9fedfbcf56a5d62fbf4bad80cdf91340" dependencies = [ "libc", "serde", @@ -1299,7 +1307,7 @@ dependencies = [ [[package]] name = "mshv-ioctls" version = "0.1.1" -source = "git+https://github.com/rust-vmm/mshv?branch=main#0dd4d3452a7f2e95199f4b58380acc41458474de" +source = "git+https://github.com/rust-vmm/mshv?branch=main#9d0c11fe9fedfbcf56a5d62fbf4bad80cdf91340" dependencies = [ "libc", "mshv-bindings", @@ -1385,9 +1393,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open-enum" @@ -1420,9 +1428,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" dependencies = [ "cc", "libc", @@ -1549,22 +1557,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -1580,6 +1588,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.0", + "futures-io", +] + +[[package]] name = "pkg-config" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1630,7 +1649,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -1710,18 +1729,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1766,8 +1785,10 @@ checksum = "8edc89eaa583cf6bc4c6ef16a219f0a60d342ca3bf0eae793560038ac8af1795" name = "rate_limiter" version = "0.1.0" dependencies = [ + "epoll", "libc", "log", + "thiserror", "vmm-sys-util", ] @@ -1837,7 +1858,7 @@ checksum = "bce3a7139d2ee67d07538ee5dba997364fbc243e7e7143e96eb830c74bfaa082" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -1853,15 +1874,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] name = "rustix" version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1877,14 +1889,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.5", + "linux-raw-sys 0.4.13", "windows-sys 0.48.0", ] @@ -1910,36 +1922,30 @@ dependencies = [ ] [[package]] -name = "semver" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" - -[[package]] name = "serde" -version = "1.0.168" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d614f89548720367ded108b3c843be93f3a341e22d5674ca0dd5cd57f34926af" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.168" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fe589678c688e44177da4f27152ee2d190757271dc7f1d5b6b9f68d869d641" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "cb0652c533506ad7a2e353cce269330d6afd8bdfb6d75e0ace5b35aacbd7b9e9" dependencies = [ "itoa", "ryu", @@ -1954,7 +1960,7 @@ checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -1976,7 +1982,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -2024,9 +2030,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -2084,9 +2090,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.31" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -2112,7 +2118,7 @@ dependencies = [ "cfg-if", "fastrand 2.0.0", "redox_syscall 0.3.5", - "rustix 0.38.8", + "rustix 0.38.25", "windows-sys 0.48.0", ] @@ -2131,7 +2137,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.8", + "rustix 0.38.25", "windows-sys 0.48.0", ] @@ -2152,22 +2158,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] @@ -2219,11 +2225,10 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -2231,20 +2236,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] @@ -2300,9 +2305,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "versionize" -version = "0.1.10" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca4b7062e7e6d685901e815c35f9671e059de97c1c0905eeff8592f3fff442f" +checksum = "62929d59c7f6730b7298fcb363760550f4db6e353fbac4076d447d0e82799d6d" dependencies = [ "bincode", "crc64", @@ -2317,8 +2322,8 @@ dependencies = [ [[package]] name = "versionize_derive" -version = "0.1.4" -source = "git+https://github.com/cloud-hypervisor/versionize_derive?branch=ch#e502b1d4aabab342386f0c53780d49f21a6a1df6" +version = "0.1.6" +source = "git+https://github.com/cloud-hypervisor/versionize_derive?branch=ch-0.1.6#7906da996152e2d0ab08f5526440683bf3ca7834" dependencies = [ "proc-macro2", "quote", @@ -2328,7 +2333,7 @@ dependencies = [ [[package]] name = "vfio-bindings" version = "0.4.0" -source = "git+https://github.com/rust-vmm/vfio?branch=main#59c604fa6e42080f0a47c124ba29454fe4cb7475" +source = "git+https://github.com/rust-vmm/vfio?branch=main#0daff4d4c159e842cf18b8b90457a45032b2df5a" dependencies = [ "vmm-sys-util", ] @@ -2336,7 +2341,7 @@ dependencies = [ [[package]] name = "vfio-ioctls" version = "0.2.0" -source = "git+https://github.com/rust-vmm/vfio?branch=main#59c604fa6e42080f0a47c124ba29454fe4cb7475" +source = "git+https://github.com/rust-vmm/vfio?branch=main#0daff4d4c159e842cf18b8b90457a45032b2df5a" dependencies = [ "byteorder", "kvm-bindings", @@ -2354,7 +2359,7 @@ dependencies = [ [[package]] name = "vfio_user" version = "0.1.0" -source = "git+https://github.com/rust-vmm/vfio-user?branch=main#6c72e997e61d9e84b8ee691ad63ece6c717cf5aa" +source = "git+https://github.com/rust-vmm/vfio-user?branch=main#a1f6e52829e069b6d698b2cfeecac742e4653186" dependencies = [ "bitflags 1.3.2", "libc", @@ -2370,7 +2375,7 @@ dependencies = [ [[package]] name = "vhost" -version = "0.9.0" +version = "0.10.0" dependencies = [ "bitflags 2.4.1", "libc", @@ -2380,7 +2385,7 @@ dependencies = [ [[package]] name = "vhost-user-backend" -version = "0.11.0" +version = "0.13.1" dependencies = [ "libc", "log", @@ -2470,9 +2475,9 @@ dependencies = [ [[package]] name = "virtio-queue" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73a01db2cfb6c4b9bc20608b1336263d16714ea8db05de9fec2a254e076f9385" +checksum = "e3f69a13d6610db9312acbb438b0390362af905d37634a2106be70c0f734986d" dependencies = [ "log", "virtio-bindings", @@ -2509,9 +2514,9 @@ source = "git+https://github.com/rust-vmm/vm-fdt?branch=main#77212bd0d62913e445c [[package]] name = "vm-memory" -version = "0.13.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5376c9ee5ebe2103a310d8241936cfb93c946734b0479a4fa5bdf7a64abbacd8" +checksum = "74ffc42216c32c35f858fa4bfdcd9b61017dfd691e0240268fdc85dbf59e5459" dependencies = [ "arc-swap", "libc", @@ -2575,6 +2580,7 @@ dependencies = [ "option_parser", "pci", "range_map_vec", + "rate_limiter", "seccompiler", "serde", "serde_json", @@ -2601,9 +2607,9 @@ dependencies = [ [[package]] name = "vmm-sys-util" -version = "0.11.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46" +checksum = "1d1435039746e20da4f8d507a72ee1b916f7b4b05af7a91c093d2c6561934ede" dependencies = [ "bitflags 1.3.2", "libc", @@ -2653,7 +2659,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -2675,7 +2681,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2736,6 +2742,15 @@ dependencies = [ ] [[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] name = "windows-targets" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2766,6 +2781,21 @@ dependencies = [ ] [[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2778,6 +2808,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2790,6 +2826,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2802,6 +2844,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2814,6 +2862,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2826,6 +2880,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2838,6 +2898,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] name = "windows_x86_64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2850,10 +2916,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] name = "winnow" -version = "0.5.18" +version = "0.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32" +checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" dependencies = [ "memchr", ] @@ -2936,9 +3008,9 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.21" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686b7e407015242119c33dab17b8f61ba6843534de936d94368856528eae4dcc" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "byteorder", "zerocopy-derive", @@ -2946,13 +3018,13 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.7.21" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020f3dfe25dfc38dfea49ce62d5d45ecdd7f0d8a724fa63eb36b6eba4ec76806" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.48", ] [[package]] diff --git a/pkgs/cloud-hypervisor/default.nix b/pkgs/cloud-hypervisor/default.nix index 9364e3c..4a1d555 100644 --- a/pkgs/cloud-hypervisor/default.nix +++ b/pkgs/cloud-hypervisor/default.nix @@ -12,15 +12,14 @@ final.rustPlatform.buildRustPackage { cargoLock = { lockFile = ./Cargo.lock; outputHashes = { - "acpi_tables-0.1.0" = "sha256-FYjzwCSjuTUDCCQPC2ccDpwRRaG1eT5XgV/b8uSu8uc="; + "acpi_tables-0.1.0" = "sha256-syDq+db1hTne6QoP0vMGUv4tB0J9arQG2Ea2hHW1k3M="; "igvm-0.1.0" = "sha256-l+Qyhdy3b8h8hPLHg5M0os8aSkjM55hAP5nqi0AGmjo="; - "kvm-bindings-0.6.0" = "sha256-wGdAuPwsgRIqx9dh0m+hC9A/Akz9qg9BM+p06Fi5ACM="; - "kvm-ioctls-0.13.0" = "sha256-jHnFGwBWnAa2lRu4a5eRNy1Y26NX5MV8alJ86VR++QE="; - "micro_http-0.1.0" = "sha256-Ov75Gs+wSmsxOHJu024nWtOJp0cKpS8bkxJJGW6jiKw="; - "mshv-bindings-0.1.1" = "sha256-4ADpLvi9hmHsMyGtqDQ2Msa3aMZmJsi4BPW7B5ZfAMw="; - "versionize_derive-0.1.4" = "sha256-oGuREJ5+FDs8ihmv99WmjIPpL2oPdOr4REk6+7cV/7o="; - "vfio-bindings-0.4.0" = "sha256-grOV+7W1tB4YDRAFbDNQp5nQ1WaivH+N+qHTIj4WA+E="; - "vfio_user-0.1.0" = "sha256-Vi6dBu1mUwyWh7ryKDOBS6GeUD2sqqIrt/bth/LDW6s="; + "kvm-bindings-0.7.0" = "sha256-hXv5N3TTwGQaVxdQ/DTzLt+uwLxFnstJwNhxRD2K8TM="; + "micro_http-0.1.0" = "sha256-gyeOop6AMXEIbLXhJMN/oYGGU8Un8Y0nFZc9ucCa0y4="; + "mshv-bindings-0.1.1" = "sha256-yWvkpOcW3lV47s+rWnN4Bki8tt8CkiPVZ0I36nrWMi4="; + "versionize_derive-0.1.6" = "sha256-eI9fM8WnEBZvskPhU67IWeN6QAPg2u5EBT+AOxfb/fY="; + "vfio-bindings-0.4.0" = "sha256-Dk4T2dMzPZ+Aoq1YSXX2z1Nky8zvyDl7b+A8NH57Hkc="; + "vfio_user-0.1.0" = "sha256-LJ84k9pMkSAaWkuaUd+2LnPXnNgrP5LdbPOc1Yjz5xA="; "vm-fdt-0.2.0" = "sha256-lKW4ZUraHomSDyxgNlD5qTaBTZqM0Fwhhh/08yhrjyE="; }; }; @@ -29,8 +28,8 @@ final.rustPlatform.buildRustPackage { name = "vhost"; owner = "rust-vmm"; repo = "vhost"; - rev = "vhost-user-backend-v0.11.0"; - hash = "sha256-VLKlvyHUrMrwJALUP7OeVeHIogu8rfoP4sgyUMCIBzU="; + rev = "vhost-user-backend-v0.13.1"; + hash = "sha256-iF0VPrTEq9blT6hY0QyLcq64+ZNsiEv1EA3c7NoQLRE="; }; cargoPatches = super.cloud-hypervisor.cargoPatches or [] ++ [ diff --git a/pkgs/cloud-hypervisor/vhost/0001-vhost-fix-receiving-reply-payloads.patch b/pkgs/cloud-hypervisor/vhost/0001-vhost-fix-receiving-reply-payloads.patch index e7a4aa8..1c8c5e2 100644 --- a/pkgs/cloud-hypervisor/vhost/0001-vhost-fix-receiving-reply-payloads.patch +++ b/pkgs/cloud-hypervisor/vhost/0001-vhost-fix-receiving-reply-payloads.patch @@ -1,4 +1,4 @@ -From 9bf26d1815042e652c77249da973b7e8277010b5 Mon Sep 17 00:00:00 2001 +From fbab45b8442607aec1cec0041eef323b42b4fce2 Mon Sep 17 00:00:00 2001 From: David Stevens <stevensd@chromium.org> Date: Wed, 15 Jun 2022 15:56:18 +0900 Subject: [PATCH 1/4] vhost: fix receiving reply payloads @@ -17,14 +17,14 @@ determining payload size after reading the reply header. Co-authored-by: Alyssa Ross <hi@alyssa.is> Signed-off-by: Alyssa Ross <hi@alyssa.is> --- - crates/vhost/src/vhost_user/connection.rs | 29 ++++++++++------------- - crates/vhost/src/vhost_user/frontend.rs | 16 +++---------- + vhost/src/vhost_user/connection.rs | 29 ++++++++++++----------------- + vhost/src/vhost_user/frontend.rs | 16 +++------------- 2 files changed, 15 insertions(+), 30 deletions(-) -diff --git a/crates/vhost/src/vhost_user/connection.rs b/crates/vhost/src/vhost_user/connection.rs -index 3733584..5eca461 100644 ---- a/crates/vhost/src/vhost_user/connection.rs -+++ b/crates/vhost/src/vhost_user/connection.rs +diff --git a/vhost/src/vhost_user/connection.rs b/vhost/src/vhost_user/connection.rs +index 9f61427..8469ba6 100644 +--- a/vhost/src/vhost_user/connection.rs ++++ b/vhost/src/vhost_user/connection.rs @@ -551,7 +551,7 @@ impl<R: Req> Endpoint<R> { /// accepted and all other file descriptor will be discard silently. /// @@ -36,7 +36,7 @@ index 3733584..5eca461 100644 /// * - SocketError: other socket related errors. @@ -560,15 +560,13 @@ impl<R: Req> Endpoint<R> { #[cfg_attr(feature = "cargo-clippy", allow(clippy::type_complexity))] - pub fn recv_payload_into_buf<T: ByteValued + Sized + VhostUserMsgValidator>( + pub fn recv_payload_into_buf<T: ByteValued + Sized + VhostUserMsgValidator + Default>( &mut self, - buf: &mut [u8], - ) -> Result<(VhostUserMsgHeader<R>, T, usize, Option<Vec<File>>)> { @@ -81,10 +81,10 @@ index 3733584..5eca461 100644 } } -diff --git a/crates/vhost/src/vhost_user/frontend.rs b/crates/vhost/src/vhost_user/frontend.rs -index db6d37e..4068dd6 100644 ---- a/crates/vhost/src/vhost_user/frontend.rs -+++ b/crates/vhost/src/vhost_user/frontend.rs +diff --git a/vhost/src/vhost_user/frontend.rs b/vhost/src/vhost_user/frontend.rs +index 940b090..8674be7 100644 +--- a/vhost/src/vhost_user/frontend.rs ++++ b/vhost/src/vhost_user/frontend.rs @@ -677,23 +677,13 @@ impl FrontendInternal { &mut self, hdr: &VhostUserMsgHeader<FrontendReq>, @@ -113,5 +113,5 @@ index db6d37e..4068dd6 100644 } -- -2.42.0 +2.43.0 diff --git a/pkgs/cloud-hypervisor/vhost/0002-vhost_user-add-shared-memory-region-support.patch b/pkgs/cloud-hypervisor/vhost/0002-vhost_user-add-shared-memory-region-support.patch index b4b118a..2e5192f 100644 --- a/pkgs/cloud-hypervisor/vhost/0002-vhost_user-add-shared-memory-region-support.patch +++ b/pkgs/cloud-hypervisor/vhost/0002-vhost_user-add-shared-memory-region-support.patch @@ -1,4 +1,4 @@ -From f6295a94fbecabf29ffae4f7189dfa57bdf79447 Mon Sep 17 00:00:00 2001 +From d164b4634073b2efc63a3a9f78aafd5eb40243f5 Mon Sep 17 00:00:00 2001 From: David Stevens <stevensd@chromium.org> Date: Wed, 15 Jun 2022 16:45:12 +0900 Subject: [PATCH 2/4] vhost_user: add shared memory region support @@ -28,19 +28,19 @@ Tested-by: kokoro <noreply+kokoro@google.com> (cherry-picked from commit f436e2706011fa5f34dc415972434aa3299ebc43) Signed-off-by: Alyssa Ross <alyssa.ross@unikie.com> --- - crates/vhost-user-backend/src/handler.rs | 10 +- - crates/vhost/src/vhost_user/backend_req.rs | 20 ++- - .../src/vhost_user/backend_req_handler.rs | 15 ++ - crates/vhost/src/vhost_user/dummy_backend.rs | 4 + - crates/vhost/src/vhost_user/frontend.rs | 24 ++++ - .../src/vhost_user/frontend_req_handler.rs | 53 ++++++- - crates/vhost/src/vhost_user/message.rs | 136 +++++++++++++++++- - 7 files changed, 246 insertions(+), 16 deletions(-) + vhost-user-backend/src/handler.rs | 10 +- + vhost/src/vhost_user/backend_req.rs | 20 ++- + vhost/src/vhost_user/backend_req_handler.rs | 15 +++ + vhost/src/vhost_user/dummy_backend.rs | 4 + + vhost/src/vhost_user/frontend.rs | 24 ++++ + vhost/src/vhost_user/frontend_req_handler.rs | 53 +++++++- + vhost/src/vhost_user/message.rs | 132 ++++++++++++++++++- + 7 files changed, 244 insertions(+), 14 deletions(-) -diff --git a/crates/vhost-user-backend/src/handler.rs b/crates/vhost-user-backend/src/handler.rs -index 8be4768..e141e07 100644 ---- a/crates/vhost-user-backend/src/handler.rs -+++ b/crates/vhost-user-backend/src/handler.rs +diff --git a/vhost-user-backend/src/handler.rs b/vhost-user-backend/src/handler.rs +index 83f5293..f5a8f0f 100644 +--- a/vhost-user-backend/src/handler.rs ++++ b/vhost-user-backend/src/handler.rs @@ -11,9 +11,9 @@ use std::sync::Arc; use std::thread; @@ -54,7 +54,7 @@ index 8be4768..e141e07 100644 }; use vhost::vhost_user::{ Backend, Error as VhostUserError, Result as VhostUserResult, VhostUserBackendReqHandlerMut, -@@ -597,6 +597,10 @@ where +@@ -617,6 +617,10 @@ where Ok(()) } @@ -65,10 +65,10 @@ index 8be4768..e141e07 100644 } impl<T: VhostUserBackend> Drop for VhostUserHandler<T> { -diff --git a/crates/vhost/src/vhost_user/backend_req.rs b/crates/vhost/src/vhost_user/backend_req.rs +diff --git a/vhost/src/vhost_user/backend_req.rs b/vhost/src/vhost_user/backend_req.rs index b43982f..948e1b2 100644 ---- a/crates/vhost/src/vhost_user/backend_req.rs -+++ b/crates/vhost/src/vhost_user/backend_req.rs +--- a/vhost/src/vhost_user/backend_req.rs ++++ b/vhost/src/vhost_user/backend_req.rs @@ -46,12 +46,16 @@ impl BackendInternal { } self.sock.send_message(&hdr, body, fds)?; @@ -106,10 +106,10 @@ index b43982f..948e1b2 100644 /// Forward vhost-user-fs map file requests to the backend. fn fs_backend_map(&self, fs: &VhostUserFSBackendMsg, fd: &dyn AsRawFd) -> HandlerResult<u64> { self.send_message(BackendReq::FS_MAP, fs, Some(&[fd.as_raw_fd()])) -diff --git a/crates/vhost/src/vhost_user/backend_req_handler.rs b/crates/vhost/src/vhost_user/backend_req_handler.rs +diff --git a/vhost/src/vhost_user/backend_req_handler.rs b/vhost/src/vhost_user/backend_req_handler.rs index 7b4cbe9..84486aa 100644 ---- a/crates/vhost/src/vhost_user/backend_req_handler.rs -+++ b/crates/vhost/src/vhost_user/backend_req_handler.rs +--- a/vhost/src/vhost_user/backend_req_handler.rs ++++ b/vhost/src/vhost_user/backend_req_handler.rs @@ -70,6 +70,7 @@ pub trait VhostUserBackendReqHandler { fn get_max_mem_slots(&self) -> Result<u64>; fn add_mem_region(&self, region: &VhostUserSingleMemoryRegion, fd: File) -> Result<()>; @@ -153,10 +153,10 @@ index 7b4cbe9..84486aa 100644 _ => { return Err(Error::InvalidMessage); } -diff --git a/crates/vhost/src/vhost_user/dummy_backend.rs b/crates/vhost/src/vhost_user/dummy_backend.rs -index 060a344..aab5ee1 100644 ---- a/crates/vhost/src/vhost_user/dummy_backend.rs -+++ b/crates/vhost/src/vhost_user/dummy_backend.rs +diff --git a/vhost/src/vhost_user/dummy_backend.rs b/vhost/src/vhost_user/dummy_backend.rs +index 9d9f977..4d9aef1 100644 +--- a/vhost/src/vhost_user/dummy_backend.rs ++++ b/vhost/src/vhost_user/dummy_backend.rs @@ -291,4 +291,8 @@ impl VhostUserBackendReqHandlerMut for DummyBackendReqHandler { fn remove_mem_region(&mut self, _region: &VhostUserSingleMemoryRegion) -> Result<()> { Ok(()) @@ -166,10 +166,10 @@ index 060a344..aab5ee1 100644 + Ok(Vec::new()) + } } -diff --git a/crates/vhost/src/vhost_user/frontend.rs b/crates/vhost/src/vhost_user/frontend.rs -index 4068dd6..47ace8f 100644 ---- a/crates/vhost/src/vhost_user/frontend.rs -+++ b/crates/vhost/src/vhost_user/frontend.rs +diff --git a/vhost/src/vhost_user/frontend.rs b/vhost/src/vhost_user/frontend.rs +index 8674be7..4a745a8 100644 +--- a/vhost/src/vhost_user/frontend.rs ++++ b/vhost/src/vhost_user/frontend.rs @@ -72,6 +72,9 @@ pub trait VhostUserFrontend: VhostBackend { /// Remove a guest memory mapping from vhost. @@ -208,10 +208,10 @@ index 4068dd6..47ace8f 100644 } impl AsRawFd for Frontend { -diff --git a/crates/vhost/src/vhost_user/frontend_req_handler.rs b/crates/vhost/src/vhost_user/frontend_req_handler.rs +diff --git a/vhost/src/vhost_user/frontend_req_handler.rs b/vhost/src/vhost_user/frontend_req_handler.rs index fb2dc16..cd4f604 100644 ---- a/crates/vhost/src/vhost_user/frontend_req_handler.rs -+++ b/crates/vhost/src/vhost_user/frontend_req_handler.rs +--- a/vhost/src/vhost_user/frontend_req_handler.rs ++++ b/vhost/src/vhost_user/frontend_req_handler.rs @@ -33,6 +33,16 @@ pub trait VhostUserFrontendReqHandler { Err(std::io::Error::from_raw_os_error(libc::ENOSYS)) } @@ -318,49 +318,43 @@ index fb2dc16..cd4f604 100644 let hdr = self.new_reply_header::<VhostUserU64>(req)?; let def_err = libc::EINVAL; let val = match res { -diff --git a/crates/vhost/src/vhost_user/message.rs b/crates/vhost/src/vhost_user/message.rs -index df7edcd..21b0943 100644 ---- a/crates/vhost/src/vhost_user/message.rs -+++ b/crates/vhost/src/vhost_user/message.rs -@@ -146,8 +146,10 @@ pub enum FrontendReq { - /// Query the backend for its device status as defined in the VIRTIO - /// specification. - GET_STATUS = 40, -+ /// Get a list of the device's shared memory regions. -+ GET_SHARED_MEMORY_REGIONS = 41, - /// Upper bound of valid commands. -- MAX_CMD = 41, -+ MAX_CMD = 42, +diff --git a/vhost/src/vhost_user/message.rs b/vhost/src/vhost_user/message.rs +index 43e7314..67fc19a 100644 +--- a/vhost/src/vhost_user/message.rs ++++ b/vhost/src/vhost_user/message.rs +@@ -178,6 +178,8 @@ enum_value! { + /// Query the backend for its device status as defined in the VIRTIO + /// specification. + GET_STATUS = 40, ++ /// Get a list of the device's shared memory regions. ++ GET_SHARED_MEMORY_REGIONS = 41, + } } - impl From<FrontendReq> for u32 { -@@ -178,16 +180,20 @@ pub enum BackendReq { - VRING_CALL = 4, - /// Indicate that an error occurred on the specific vring. - VRING_ERR = 5, -+ /// Indicates a request to map a fd into a shared memory region. -+ SHMEM_MAP = 6, -+ /// Indicates a request to unmap part of a shared memory region. -+ SHMEM_UNMAP = 7, - /// Virtio-fs draft: map file content into the window. -- FS_MAP = 6, -+ FS_MAP = 8, - /// Virtio-fs draft: unmap file content from the window. -- FS_UNMAP = 7, -+ FS_UNMAP = 9, - /// Virtio-fs draft: sync file content. -- FS_SYNC = 8, -+ FS_SYNC = 10, - /// Virtio-fs draft: perform a read/write from an fd directly to GPA. -- FS_IO = 9, -+ FS_IO = 11, - /// Upper bound of valid commands. -- MAX_CMD = 10, -+ MAX_CMD = 12, +@@ -197,14 +199,18 @@ enum_value! { + VRING_CALL = 4, + /// Indicate that an error occurred on the specific vring. + VRING_ERR = 5, ++ /// Indicates a request to map a fd into a shared memory region. ++ SHMEM_MAP = 6, ++ /// Indicates a request to unmap part of a shared memory region. ++ SHMEM_UNMAP = 7, + /// Virtio-fs draft: map file content into the window. +- FS_MAP = 6, ++ FS_MAP = 8, + /// Virtio-fs draft: unmap file content from the window. +- FS_UNMAP = 7, ++ FS_UNMAP = 9, + /// Virtio-fs draft: sync file content. +- FS_SYNC = 8, ++ FS_SYNC = 10, + /// Virtio-fs draft: perform a read/write from an fd directly to GPA. +- FS_IO = 9, ++ FS_IO = 11, + } } - impl From<BackendReq> for u32 { -@@ -978,6 +984,99 @@ impl VhostUserMsgValidator for VhostUserFSBackendMsg { +@@ -955,6 +961,99 @@ impl VhostUserMsgValidator for VhostUserFSBackendMsg { } } @@ -458,9 +452,9 @@ index df7edcd..21b0943 100644 +} + /// Inflight I/O descriptor state for split virtqueues - #[repr(packed)] + #[repr(C, packed)] #[derive(Clone, Copy, Default)] -@@ -1109,6 +1208,31 @@ impl QueueRegionPacked { +@@ -1086,6 +1185,31 @@ impl QueueRegionPacked { } } @@ -493,5 +487,5 @@ index df7edcd..21b0943 100644 mod tests { use super::*; -- -2.42.0 +2.43.0 diff --git a/pkgs/cloud-hypervisor/vhost/0003-vhost_user-add-protocol-flag-for-shmem.patch b/pkgs/cloud-hypervisor/vhost/0003-vhost_user-add-protocol-flag-for-shmem.patch index 565765b..0ab20dd 100644 --- a/pkgs/cloud-hypervisor/vhost/0003-vhost_user-add-protocol-flag-for-shmem.patch +++ b/pkgs/cloud-hypervisor/vhost/0003-vhost_user-add-protocol-flag-for-shmem.patch @@ -1,4 +1,4 @@ -From 6ff8acf9d8bc27a49954c43cf93f36ae18d2f9cb Mon Sep 17 00:00:00 2001 +From d0dfc05aa3789cbc2a1a2057ae4f5aae0913ae3d Mon Sep 17 00:00:00 2001 From: David Stevens <stevensd@chromium.org> Date: Thu, 13 Oct 2022 10:37:47 +0900 Subject: [PATCH 3/4] vhost_user: add protocol flag for shmem @@ -21,14 +21,14 @@ Commit-Queue: David Stevens <stevensd@chromium.org> (cherry-picked from commit 60aa43629ae9be2cc3df37c648ab7e0e5ff2172c) Signed-off-by: Alyssa Ross <hi@alyssa.is> --- - crates/vhost/src/vhost_user/message.rs | 2 ++ + vhost/src/vhost_user/message.rs | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/crates/vhost/src/vhost_user/message.rs b/crates/vhost/src/vhost_user/message.rs -index 21b0943..6764d6d 100644 ---- a/crates/vhost/src/vhost_user/message.rs -+++ b/crates/vhost/src/vhost_user/message.rs -@@ -437,6 +437,8 @@ bitflags! { +diff --git a/vhost/src/vhost_user/message.rs b/vhost/src/vhost_user/message.rs +index 67fc19a..7815d3e 100644 +--- a/vhost/src/vhost_user/message.rs ++++ b/vhost/src/vhost_user/message.rs +@@ -440,6 +440,8 @@ bitflags! { const STATUS = 0x0001_0000; /// Support Xen mmap. const XEN_MMAP = 0x0002_0000; @@ -38,5 +38,5 @@ index 21b0943..6764d6d 100644 } -- -2.42.0 +2.43.0 diff --git a/pkgs/cloud-hypervisor/vhost/0004-vhost_user-renumber-SHARED_MEMORY_REGIONS.patch b/pkgs/cloud-hypervisor/vhost/0004-vhost_user-renumber-SHARED_MEMORY_REGIONS.patch index 293cd27..c7c644d 100644 --- a/pkgs/cloud-hypervisor/vhost/0004-vhost_user-renumber-SHARED_MEMORY_REGIONS.patch +++ b/pkgs/cloud-hypervisor/vhost/0004-vhost_user-renumber-SHARED_MEMORY_REGIONS.patch @@ -1,4 +1,4 @@ -From 465b7c191a4149f4536384e24dc127eaae70a803 Mon Sep 17 00:00:00 2001 +From 97de38adff41894ac5b8ed5820a67c8309afda9e Mon Sep 17 00:00:00 2001 From: Alyssa Ross <hi@alyssa.is> Date: Sat, 29 Jul 2023 12:03:18 +0000 Subject: [PATCH 4/4] vhost_user: renumber SHARED_MEMORY_REGIONS @@ -25,14 +25,14 @@ Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> (cherry-picked from commit 6795b3edf3ddc0b3a2e2b928033f21dabcf8be78) Signed-off-by: Alyssa Ross <hi@alyssa.is> --- - crates/vhost/src/vhost_user/message.rs | 4 ++-- + vhost/src/vhost_user/message.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/crates/vhost/src/vhost_user/message.rs b/crates/vhost/src/vhost_user/message.rs -index 6764d6d..0be6b1a 100644 ---- a/crates/vhost/src/vhost_user/message.rs -+++ b/crates/vhost/src/vhost_user/message.rs -@@ -437,8 +437,8 @@ bitflags! { +diff --git a/vhost/src/vhost_user/message.rs b/vhost/src/vhost_user/message.rs +index 7815d3e..c0d8dcc 100644 +--- a/vhost/src/vhost_user/message.rs ++++ b/vhost/src/vhost_user/message.rs +@@ -440,8 +440,8 @@ bitflags! { const STATUS = 0x0001_0000; /// Support Xen mmap. const XEN_MMAP = 0x0002_0000; @@ -44,5 +44,5 @@ index 6764d6d..0be6b1a 100644 } -- -2.42.0 +2.43.0 diff --git a/pkgs/default.nix b/pkgs/default.nix index 172bf46..0d4091f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -33,7 +33,7 @@ let # Packages from the overlay, so it's possible to build them from # the CLI easily. - inherit (pkgs) cloud-hypervisor foot meson; + inherit (pkgs) cloud-hypervisor foot; pkgsStatic = makeScopeWithSplicing pkgs.pkgsStatic; diff --git a/pkgs/meson/default.nix b/pkgs/meson/default.nix deleted file mode 100644 index ccb24e9..0000000 --- a/pkgs/meson/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is> -# SPDX-License-Identifier: MIT - -import ../../lib/overlay-package.nix "meson" ({ final, super }: - -super.meson.overrideAttrs ({ patches ? [], ... }: { - patches = patches ++ [ - (final.fetchpatch { - url = "https://github.com/mesonbuild/meson/commit/1ca2c74d16c3f5987f686e358b58ce5d2253ce9b.patch"; - hash = "sha256-ZnYF9IDrroa4r4YNZxDnGe+KRnaYmBQOe2PvcZb2A4Y="; - }) - ]; -})) diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 6806f2f..2266744 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -5,6 +5,4 @@ cloud-hypervisor = import ./cloud-hypervisor { inherit final super; }; foot = import ./foot { inherit final super; }; - - meson = import ./meson { inherit final super; }; }) |