diff --git a/src/main.rs b/src/main.rs index 35384b5e7..b9023ef5d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -468,6 +468,14 @@ fn create_app(default_vcpus: String, default_memory: String, default_rng: String .num_args(1) .group("vm-config"), ); + #[cfg(feature = "sev_snp")] + let app = app.arg( + Arg::new("host-data") + .long("host-data") + .help("Host specific data to SEV SNP guest") + .num_args(1) + .group("vm-config"), + ); app.arg( Arg::new("version") .short('V') @@ -879,6 +887,8 @@ mod unit_tests { initramfs: None, #[cfg(feature = "igvm")] igvm: None, + #[cfg(feature = "sev_snp")] + host_data: None, }), rate_limit_groups: None, disks: None, diff --git a/vmm/src/config.rs b/vmm/src/config.rs index b026b777b..e2ec76449 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -435,6 +435,8 @@ pub struct VmParams<'a> { pub tpm: Option<&'a str>, #[cfg(feature = "igvm")] pub igvm: Option<&'a str>, + #[cfg(feature = "sev_snp")] + pub host_data: Option<&'a str>, } impl<'a> VmParams<'a> { @@ -495,6 +497,8 @@ impl<'a> VmParams<'a> { let tpm: Option<&str> = args.get_one::("tpm").map(|x| x as &str); #[cfg(feature = "igvm")] let igvm = args.get_one::("igvm").map(|x| x as &str); + #[cfg(feature = "sev_snp")] + let host_data = args.get_one::("host-data").map(|x| x as &str); VmParams { cpus, memory, @@ -529,6 +533,8 @@ impl<'a> VmParams<'a> { tpm, #[cfg(feature = "igvm")] igvm, + #[cfg(feature = "sev_snp")] + host_data, } } } @@ -2558,6 +2564,8 @@ impl VmConfig { firmware: vm_params.firmware.map(PathBuf::from), #[cfg(feature = "igvm")] igvm: vm_params.igvm.map(PathBuf::from), + #[cfg(feature = "sev_snp")] + host_data: vm_params.host_data.map(|s| s.to_string()), }) } else { None @@ -3452,6 +3460,8 @@ mod tests { initramfs: None, #[cfg(feature = "igvm")] igvm: None, + #[cfg(feature = "sev_snp")] + host_data: None, }), rate_limit_groups: None, disks: None, diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index d163d106a..db90799ff 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -2084,6 +2084,8 @@ mod unit_tests { initramfs: None, #[cfg(feature = "igvm")] igvm: None, + #[cfg(feature = "sev_snp")] + host_data: None, }), rate_limit_groups: None, disks: None, diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs index 51e7847e9..5c11b3a40 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs @@ -522,6 +522,9 @@ pub struct PayloadConfig { #[cfg(feature = "igvm")] #[serde(default)] pub igvm: Option, + #[cfg(feature = "sev_snp")] + #[serde(default)] + pub host_data: Option, } pub fn default_serial() -> ConsoleConfig {