Ackerley Tng <ackerleytng@xxxxxxxxxx> writes: > Ackerley Tng <ackerleytng@xxxxxxxxxx> writes: > >> guestmem_hugetlb is an allocator for guest_memfd. It wraps HugeTLB to >> provide huge folios for guest_memfd. >> >> This patch also introduces guestmem_allocator_operations as a set of >> operations that allocators for guest_memfd can provide. In a later >> patch, guest_memfd will use these operations to manage pages from an >> allocator. >> >> The allocator operations are memory-management specific and are placed >> in mm/ so key mm-specific functions do not have to be exposed >> unnecessarily. >> >> Signed-off-by: Ackerley Tng <ackerleytng@xxxxxxxxxx> >> >> Change-Id: I3cafe111ea7b3c84755d7112ff8f8c541c11136d >> --- >> include/linux/guestmem.h | 20 +++++ >> include/uapi/linux/guestmem.h | 29 +++++++ >> mm/Kconfig | 5 +- >> mm/guestmem_hugetlb.c | 159 ++++++++++++++++++++++++++++++++++ >> 4 files changed, 212 insertions(+), 1 deletion(-) >> create mode 100644 include/linux/guestmem.h >> create mode 100644 include/uapi/linux/guestmem.h >> >> <snip> >> >> diff --git a/mm/Kconfig b/mm/Kconfig >> index 131adc49f58d..bb6e39e37245 100644 >> --- a/mm/Kconfig >> +++ b/mm/Kconfig >> @@ -1218,7 +1218,10 @@ config SECRETMEM >> >> config GUESTMEM_HUGETLB >> bool "Enable guestmem_hugetlb allocator for guest_memfd" >> - depends on HUGETLBFS >> + select GUESTMEM >> + select HUGETLBFS >> + select HUGETLB_PAGE >> + select HUGETLB_PAGE_OPTIMIZE_VMEMMAP > > My bad. I left out CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y in > my testing and just found that when it is set, I hit > > BUG_ON(pte_page(ptep_get(pte)) != walk->reuse_page); > > with the basic guest_memfd_test on splitting pages on allocation. > > I'll follow up with the fix soon. > > Another note about testing: I've been testing in a nested VM for the > development process: > > 1. Host > 2. VM for development > 3. Nested VM running kernel being developed > 4. Nested nested VMs created during selftests > > This series has not yet been tested on a physical host. > >> help >> Enable this to make HugeTLB folios available to guest_memfd >> (KVM virtualization) as backing memory. >> >> <snip> >> Here's the fix for this issue