Skip to content

Commit d7ddd6d

Browse files
committed
amd-sev: Update sev library to 6.0.0
Updated SEV-SNP support in the Linux kernel requires an update of the sev library version along with some modifications to the APIs provided by the library. Signed-off-by: Tyler Fanelli <[email protected]>
1 parent b3d947f commit d7ddd6d

File tree

3 files changed

+44
-20
lines changed

3 files changed

+44
-20
lines changed

Cargo.lock

Lines changed: 28 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/vmm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ procfs = { version = "0.12", optional = true }
3535
rdrand = { version = "^0.8", optional = true }
3636
serde = { version = "1.0.125", optional = true }
3737
serde_json = { version = "1.0.64", optional = true }
38-
sev = { version = "4.0.0", features = ["openssl"], optional = true }
38+
sev = { version = "6.0.0", features = ["openssl"], optional = true }
3939
curl = { version = "0.4", optional = true }
4040
nix = "0.24.1"
4141

src/vmm/src/linux/tee/amdsnp.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@ use std::{
66
use crate::vstate::MeasuredRegion;
77
use arch::x86_64::layout::*;
88

9-
use sev::firmware::{guest::GuestPolicy, host::Firmware};
10-
use sev::launch::snp::*;
9+
use sev::{
10+
error::FirmwareError,
11+
firmware::{guest::GuestPolicy, host::Firmware},
12+
launch::snp::*,
13+
};
1114

1215
use kvm_bindings::{kvm_enc_region, CpuId, KVM_CPUID_FLAG_SIGNIFCANT_INDEX};
1316
use kvm_ioctls::VmFd;
@@ -19,12 +22,12 @@ use vm_memory::{
1922
pub enum Error {
2023
CpuIdWrite,
2124
CpuIdFull,
22-
CreateLauncher(std::io::Error),
25+
CreateLauncher(FirmwareError),
2326
GuestMemoryWrite(vm_memory::GuestMemoryError),
2427
GuestMemoryRead(vm_memory::GuestMemoryError),
25-
LaunchStart(std::io::Error),
26-
LaunchUpdate(std::io::Error),
27-
LaunchFinish(std::io::Error),
28+
LaunchStart(FirmwareError),
29+
LaunchUpdate(FirmwareError),
30+
LaunchFinish(FirmwareError),
2831
MemoryEncryptRegion,
2932
OpenFirmware(std::io::Error),
3033
}
@@ -105,9 +108,9 @@ impl AmdSnp {
105108
}
106109

107110
let mut policy = GuestPolicy(0);
108-
policy.set_smt_allowed(1);
111+
policy.set_smt_allowed(true);
109112

110-
let start = Start::new(None, policy, false, [0; 16]);
113+
let start = Start::new(policy, [0; 16]);
111114

112115
let launcher = launcher.start(start).map_err(Error::LaunchStart)?;
113116

@@ -281,7 +284,6 @@ impl AmdSnp {
281284
launcher: &mut Launcher<Started, RawFd, RawFd>,
282285
page_type: PageType,
283286
) -> Result<(), Error> {
284-
let dp = VmplPerms::empty();
285287
let ga = GuestAddress(region.guest_addr);
286288

287289
/*
@@ -296,15 +298,11 @@ impl AmdSnp {
296298
let ptr = bytes.ptr_guard().as_ptr();
297299
let slice: &[u8] = unsafe { slice::from_raw_parts(ptr, region.size) };
298300

299-
let update = Update::new(
300-
region.guest_addr >> 12,
301-
slice,
302-
false,
303-
page_type,
304-
(dp, dp, dp),
305-
);
301+
let update = Update::new(region.guest_addr >> 12, slice, page_type);
306302

307-
launcher.update_data(update).map_err(Error::LaunchUpdate)
303+
launcher
304+
.update_data(update, region.guest_addr, region.size as u64)
305+
.map_err(Error::LaunchUpdate)
308306
}
309307

310308
pub fn vm_measure(

0 commit comments

Comments
 (0)