@@ -6,8 +6,11 @@ use std::{
66use crate :: vstate:: MeasuredRegion ;
77use 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
1215use kvm_bindings:: { kvm_enc_region, CpuId , KVM_CPUID_FLAG_SIGNIFCANT_INDEX } ;
1316use kvm_ioctls:: VmFd ;
@@ -19,12 +22,12 @@ use vm_memory::{
1922pub 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