Re: [PATCH 1/2] KVM: selftests: Fix nx_huge_pages_test for default_hugepagesz=1G

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Shuah,
Any comment on this series?

Thanks,
don

On 4/24/2024 3:44 PM, Dongsheng Zhang wrote:
> From: donsheng <dongsheng.x.zhang@xxxxxxxxx>
> 
> If the host was booted with the "default_hugepagesz=1G" kernel command-line
> parameter, running the NX hugepage test will fail with error "Invalid argument"
> at the TEST_ASSERT line in kvm_util.c's __vm_mem_region_delete() function:
> static void __vm_mem_region_delete(struct kvm_vm *vm,
>                    struct userspace_mem_region *region,
>                    bool unlink)
> {
>     int ret;
>     ...
>     ret = munmap(region->mmap_start, region->mmap_size);
>     TEST_ASSERT(!ret, __KVM_SYSCALL_ERROR("munmap()", ret));
>     ...
> }
> 
> NX hugepage test creates a VM with a data slot of 6M size backed with huge
> pages. If the default hugetlb page size is set to 1G, calling mmap() with
> MAP_HUGETLB and a length of 6M will succeed but calling its matching munmap()
> will fail. Documentation/admin-guide/mm/hugetlbpage.rst specifies this behavior:
> 
> "Syscalls that operate on memory backed by hugetlb pages only have their lengths
> aligned to the native page size of the processor; they will normally fail with
> errno set to EINVAL or exclude hugetlb pages that extend beyond the length if
> not hugepage aligned.  For example, munmap(2) will fail if memory is backed by
> a hugetlb page and the length is smaller than the hugepage size."
> 
> Explicitly use MAP_HUGE_2MB in conjunction with MAP_HUGETLB to fix the issue.
> 
> Signed-off-by: donsheng <dongsheng.x.zhang@xxxxxxxxx>
> Suggested-by: Zide Chen <zide.chen@xxxxxxxxx>
> ---
>  tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c
> index 17bbb96fc4df..146e9033e206 100644
> --- a/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c
> +++ b/tools/testing/selftests/kvm/x86_64/nx_huge_pages_test.c
> @@ -129,7 +129,7 @@ void run_test(int reclaim_period_ms, bool disable_nx_huge_pages,
>  
>  	vcpu = vm_vcpu_add(vm, 0, guest_code);
>  
> -	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS_HUGETLB,
> +	vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS_HUGETLB_2MB,
>  				    HPAGE_GPA, HPAGE_SLOT,
>  				    HPAGE_SLOT_NPAGES, 0);
>  




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux