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);
>
prev 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