@@ -68,7 +68,7 @@ use crate::vmm_config::snapshot::{LoadSnapshotParams, MemBackendType};
6868use crate :: vstate:: kvm:: Kvm ;
6969use crate :: vstate:: memory:: { MaybeBounce , create_memfd} ;
7070use crate :: vstate:: vcpu:: { Vcpu , VcpuError } ;
71- use crate :: vstate:: vm:: { KVM_GMEM_NO_DIRECT_MAP , Vm } ;
71+ use crate :: vstate:: vm:: { GUEST_MEMFD_FLAG_NO_DIRECT_MAP , GUEST_MEMFD_FLAG_SUPPORT_SHARED , Vm } ;
7272use crate :: { EventManager , Vmm , VmmError , device_manager} ;
7373
7474/// Errors associated with starting the instance.
@@ -238,11 +238,6 @@ pub fn build_microvm_for_boot(
238238
239239 let secret_free = vm_resources. machine_config . secret_free ;
240240
241- #[ cfg( target_arch = "x86_64" ) ]
242- if secret_free {
243- boot_cmdline. insert_str ( "no-kvmclock" ) ?;
244- }
245-
246241 let ( mut vmm, mut vcpus) = create_vmm_and_vcpus (
247242 instance_info,
248243 event_manager,
@@ -254,7 +249,10 @@ pub fn build_microvm_for_boot(
254249 let guest_memfd = match secret_free {
255250 true => Some (
256251 vmm. vm
257- . create_guest_memfd ( vm_resources. memory_size ( ) , KVM_GMEM_NO_DIRECT_MAP )
252+ . create_guest_memfd (
253+ vm_resources. memory_size ( ) ,
254+ GUEST_MEMFD_FLAG_SUPPORT_SHARED | GUEST_MEMFD_FLAG_NO_DIRECT_MAP ,
255+ )
258256 . map_err ( VmmError :: Vm ) ?,
259257 ) ,
260258 false => None ,
@@ -268,9 +266,6 @@ pub fn build_microvm_for_boot(
268266 . register_memory_regions ( guest_memory, None )
269267 . map_err ( VmmError :: Vm ) ?;
270268
271- #[ cfg( target_arch = "x86_64" ) ]
272- vmm. vm . set_memory_private ( ) . map_err ( VmmError :: Vm ) ?;
273-
274269 let entry_point = load_kernel (
275270 MaybeBounce :: < _ , 4096 > :: new_persistent (
276271 boot_config. kernel_file . try_clone ( ) . unwrap ( ) ,
@@ -531,18 +526,12 @@ pub fn build_microvm_from_snapshot(
531526 params : & LoadSnapshotParams ,
532527 vm_resources : & mut VmResources ,
533528) -> Result < Arc < Mutex < Vmm > > , BuildMicrovmFromSnapshotError > {
534- // TODO: take it from kvm-bindings when userfault support is merged upstream
535- const KVM_CAP_USERFAULT : u32 = 241 ;
536-
537529 // Build Vmm.
538530 debug ! ( "event_start: build microvm from snapshot" ) ;
539531
540532 let secret_free = vm_resources. machine_config . secret_free ;
541533
542- let mut kvm_capabilities = microvm_state. kvm_state . kvm_cap_modifiers . clone ( ) ;
543- if secret_free {
544- kvm_capabilities. push ( KvmCapability :: Add ( KVM_CAP_USERFAULT ) ) ;
545- }
534+ let kvm_capabilities = microvm_state. kvm_state . kvm_cap_modifiers . clone ( ) ;
546535
547536 let ( mut vmm, mut vcpus) = create_vmm_and_vcpus (
548537 instance_info,
@@ -556,7 +545,10 @@ pub fn build_microvm_from_snapshot(
556545 let guest_memfd = match secret_free {
557546 true => Some (
558547 vmm. vm
559- . create_guest_memfd ( vm_resources. memory_size ( ) , KVM_GMEM_NO_DIRECT_MAP )
548+ . create_guest_memfd (
549+ vm_resources. memory_size ( ) ,
550+ GUEST_MEMFD_FLAG_SUPPORT_SHARED | GUEST_MEMFD_FLAG_NO_DIRECT_MAP ,
551+ )
560552 . map_err ( VmmError :: Vm ) ?,
561553 ) ,
562554 false => None ,
@@ -622,9 +614,6 @@ pub fn build_microvm_from_snapshot(
622614 vmm. uffd = uffd;
623615 vmm. uffd_socket = socket;
624616
625- #[ cfg( target_arch = "x86_64" ) ]
626- vmm. vm . set_memory_private ( ) . map_err ( VmmError :: Vm ) ?;
627-
628617 #[ cfg( target_arch = "x86_64" ) ]
629618 {
630619 // Scale TSC to match, extract the TSC freq from the state if specified
0 commit comments