Re: [RFC PATCH v2 29/51] mm: guestmem_hugetlb: Wrap HugeTLB as an allocator for guest_memfd
From: Ackerley Tng
Date: Fri May 16 2025 - 16:33:55 EST
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