On Fri, 19 Jun 2026 at 01:32, Ackerley Tng via B4 Relay <[email protected]> wrote: > > From: Sean Christopherson <[email protected]> > > Add a global variable, kvm_has_gmem_attributes, to make the result of > checking for KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES available to all tests. > > kvm_has_gmem_attributes is true if guest_memfd tracks memory attributes, as > opposed to VM-level tracking. > > This global variable is synced to the guest for testing convenience, to > avoid introducing subtle bugs when host/guest state is desynced. > > Signed-off-by: Sean Christopherson <[email protected]> > Signed-off-by: Ackerley Tng <[email protected]>
Reviewed-by: Fuad Tabba <[email protected]> Cheers, /fuad > --- > tools/testing/selftests/kvm/include/test_util.h | 2 ++ > tools/testing/selftests/kvm/lib/kvm_util.c | 5 +++++ > 2 files changed, 7 insertions(+) > > diff --git a/tools/testing/selftests/kvm/include/test_util.h > b/tools/testing/selftests/kvm/include/test_util.h > index a56271c237ae9..51287fac8138a 100644 > --- a/tools/testing/selftests/kvm/include/test_util.h > +++ b/tools/testing/selftests/kvm/include/test_util.h > @@ -115,6 +115,8 @@ struct guest_random_state { > extern u32 guest_random_seed; > extern struct guest_random_state guest_rng; > > +extern bool kvm_has_gmem_attributes; > + > struct guest_random_state new_guest_random_state(u32 seed); > u32 guest_random_u32(struct guest_random_state *state); > > diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c > b/tools/testing/selftests/kvm/lib/kvm_util.c > index d5bbc80b2bf1c..b73817f7bc803 100644 > --- a/tools/testing/selftests/kvm/lib/kvm_util.c > +++ b/tools/testing/selftests/kvm/lib/kvm_util.c > @@ -24,6 +24,8 @@ u32 guest_random_seed; > struct guest_random_state guest_rng; > static u32 last_guest_seed; > > +bool kvm_has_gmem_attributes; > + > static size_t vcpu_mmap_sz(void); > > int __open_path_or_exit(const char *path, int flags, const char *enoent_help) > @@ -521,6 +523,7 @@ struct kvm_vm *__vm_create(struct vm_shape shape, u32 > nr_runnable_vcpus, > } > guest_rng = new_guest_random_state(guest_random_seed); > sync_global_to_guest(vm, guest_rng); > + sync_global_to_guest(vm, kvm_has_gmem_attributes); > > kvm_arch_vm_post_create(vm, nr_runnable_vcpus); > > @@ -2286,6 +2289,8 @@ void __attribute((constructor)) kvm_selftest_init(void) > guest_random_seed = last_guest_seed = random(); > pr_info("Random seed: 0x%x\n", guest_random_seed); > > + kvm_has_gmem_attributes = > kvm_has_cap(KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES); > + > kvm_selftest_arch_init(); > } > > > -- > 2.55.0.rc0.738.g0c8ab3ebcc-goog > >
