On 2/20/25 12:25, David Hildenbrand wrote: > On 11.02.25 13:11, Fuad Tabba wrote: >> Before transitioning a guest_memfd folio to unshared, thereby >> disallowing access by the host and allowing the hypervisor to >> transition its view of the guest page as private, we need to be >> sure that the host doesn't have any references to the folio. >> >> This patch introduces a new type for guest_memfd folios, which >> isn't activated in this series but is here as a placeholder and >> to facilitate the code in the next patch. This will be used in >> the future to register a callback that informs the guest_memfd >> subsystem when the last reference is dropped, therefore knowing >> that the host doesn't have any remaining references. >> >> Signed-off-by: Fuad Tabba <tabba@xxxxxxxxxx> >> --- > > [...] > >> static const char *page_type_name(unsigned int page_type) >> diff --git a/mm/swap.c b/mm/swap.c >> index 47bc1bb919cc..241880a46358 100644 >> --- a/mm/swap.c >> +++ b/mm/swap.c >> @@ -38,6 +38,10 @@ >> #include <linux/local_lock.h> >> #include <linux/buffer_head.h> >> >> +#ifdef CONFIG_KVM_GMEM_SHARED_MEM >> +#include <linux/kvm_host.h> >> +#endif >> + >> #include "internal.h" >> >> #define CREATE_TRACE_POINTS >> @@ -101,6 +105,11 @@ static void free_typed_folio(struct folio *folio) >> case PGTY_hugetlb: >> free_huge_folio(folio); >> return; >> +#endif >> +#ifdef CONFIG_KVM_GMEM_SHARED_MEM >> + case PGTY_guestmem: >> + kvm_gmem_handle_folio_put(folio); >> + return; > > Hm, if KVM is built as a module, will that work? Or would we need the Good catch, I guess not? > core-mm guest_memfd shim that would always be compiled into the core and > decouple KVM from guest_memfd ("library")? That could also help avoid exporting the mpol symbols in the NUMA mempolicy series?