Linux Kernel Selftest development
 help / color / mirror / Atom feed
From: "Zhang, Dongsheng X" <dongsheng.x.zhang@intel.com>
To: "<shuah"@kernel.org
Cc: linux-kselftest@vger.kernel.org
Subject: Re: [PATCH 1/2] KVM: selftests: Fix nx_huge_pages_test for default_hugepagesz=1G
Date: Tue, 21 May 2024 13:51:26 -0700	[thread overview]
Message-ID: <57ef2e87-1119-4258-80b6-920b21dbcf98@intel.com> (raw)
In-Reply-To: <20240424224434.14166-1-dongsheng.x.zhang@intel.com>


Hi, Shuah,
Any comment on this series?

Thanks,
don

On 4/24/2024 3:44 PM, Dongsheng Zhang wrote:
> From: donsheng <dongsheng.x.zhang@intel.com>
> 
> 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@intel.com>
> Suggested-by: Zide Chen <zide.chen@intel.com>
> ---
>  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);
>  

      parent reply	other threads:[~2024-05-21 20:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-24 22:44 [PATCH 1/2] KVM: selftests: Fix nx_huge_pages_test for default_hugepagesz=1G Dongsheng Zhang
2024-04-24 22:44 ` [PATCH 2/2] KVM: selftests: Add assertion for mem_size in vm_mem_add() Dongsheng Zhang
2024-05-21 20:51 ` Zhang, Dongsheng X [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57ef2e87-1119-4258-80b6-920b21dbcf98@intel.com \
    --to=dongsheng.x.zhang@intel.com \
    --cc="<shuah"@kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox