The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] KVM: selftests: arm64: Skip sea_to_user without 1GB hugepages
@ 2026-08-17  8:07 Like Xu
  2026-08-17  8:52 ` Marc Zyngier
  0 siblings, 1 reply; 2+ messages in thread
From: Like Xu @ 2026-08-17  8:07 UTC (permalink / raw)
  To: Marc Zyngier, Oliver Upton; +Cc: kvmarm, Paolo Bonzini, kvm, linux-kernel

sea_to_user backs guest memory with 1GB hugepages but never checks any
are reserved, aborting instead of skipping when the host has none:

  kvm_syscalls.h:68: mem != MAP_FAILED, errno=12 (ENOMEM)
  not ok 1 selftests: kvm: sea_to_user # exit=254

Check for enough free hugepages up front so the test skips cleanly.

Signed-off-by: Like Xu <likexu@tencent.com>
---
 tools/testing/selftests/kvm/arm64/sea_to_user.c |  6 ++++++
 tools/testing/selftests/kvm/include/test_util.h |  1 +
 tools/testing/selftests/kvm/lib/test_util.c     | 15 +++++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/tools/testing/selftests/kvm/arm64/sea_to_user.c b/tools/testing/selftests/kvm/arm64/sea_to_user.c
index e96d8982c28b8..fc4f81702d0b6 100644
--- a/tools/testing/selftests/kvm/arm64/sea_to_user.c
+++ b/tools/testing/selftests/kvm/arm64/sea_to_user.c
@@ -260,6 +260,12 @@ static struct kvm_vm *vm_create_with_sea_handler(struct kvm_vcpu **vcpu)
 	alignment = max(backing_page_size, guest_page_size);
 	num_guest_pages = VM_MEM_SIZE / guest_page_size;
 
+	/*
+	 * The region is backed by 1GB hugepages; skip gracefully rather than
+	 * failing with mmap() -ENOMEM if the host has none reserved.
+	 */
+	TEST_REQUIRE(get_free_hugepages(backing_page_size) >= VM_MEM_SIZE);
+
 	vm = __vm_create_with_one_vcpu(vcpu, num_guest_pages, guest_code);
 	vm_init_descriptor_tables(vm);
 	vcpu_init_descriptor_tables(*vcpu);
diff --git a/tools/testing/selftests/kvm/include/test_util.h b/tools/testing/selftests/kvm/include/test_util.h
index a56271c237ae9..0624922c2735d 100644
--- a/tools/testing/selftests/kvm/include/test_util.h
+++ b/tools/testing/selftests/kvm/include/test_util.h
@@ -168,6 +168,7 @@ struct vm_mem_backing_src_alias {
 bool thp_configured(void);
 size_t get_trans_hugepagesz(void);
 size_t get_def_hugetlb_pagesz(void);
+size_t get_free_hugepages(size_t page_size);
 const struct vm_mem_backing_src_alias *vm_mem_backing_src_alias(u32 i);
 size_t get_backing_src_pagesz(u32 i);
 bool is_backing_src_hugetlb(u32 i);
diff --git a/tools/testing/selftests/kvm/lib/test_util.c b/tools/testing/selftests/kvm/lib/test_util.c
index bab1bd2b775b6..29f9c1d60b1b7 100644
--- a/tools/testing/selftests/kvm/lib/test_util.c
+++ b/tools/testing/selftests/kvm/lib/test_util.c
@@ -222,6 +222,21 @@ size_t get_def_hugetlb_pagesz(void)
 	TEST_FAIL("Error in reading /proc/meminfo");
 }
 
+size_t get_free_hugepages(size_t page_size)
+{
+	char path[128];
+	size_t free;
+
+	snprintf(path, sizeof(path),
+		 "/sys/kernel/mm/hugepages/hugepages-%zukB/free_hugepages",
+		 page_size >> 10);
+	if (!test_sysfs_path(path))
+		return 0;
+
+	free = get_sysfs_val(path);
+	return free * page_size;
+}
+
 #define ANON_FLAGS	(MAP_PRIVATE | MAP_ANONYMOUS)
 #define ANON_HUGE_FLAGS	(ANON_FLAGS | MAP_HUGETLB)
 
-- 
2.43.7


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] KVM: selftests: arm64: Skip sea_to_user without 1GB hugepages
  2026-08-17  8:07 [PATCH] KVM: selftests: arm64: Skip sea_to_user without 1GB hugepages Like Xu
@ 2026-08-17  8:52 ` Marc Zyngier
  0 siblings, 0 replies; 2+ messages in thread
From: Marc Zyngier @ 2026-08-17  8:52 UTC (permalink / raw)
  To: Like Xu; +Cc: Oliver Upton, kvmarm, Paolo Bonzini, kvm, linux-kernel, Jiaqi Yan

+ Jiaqi.

On Mon, 17 Aug 2026 09:07:59 +0100,
Like Xu <like.xu.linux@gmail.com> wrote:
> 
> sea_to_user backs guest memory with 1GB hugepages but never checks any
> are reserved, aborting instead of skipping when the host has none:
> 
>   kvm_syscalls.h:68: mem != MAP_FAILED, errno=12 (ENOMEM)
>   not ok 1 selftests: kvm: sea_to_user # exit=254
> 
> Check for enough free hugepages up front so the test skips cleanly.

See my comments at [1].

This test is totally borked, and Jiaqi stopped replying. It is a
liability, and I'd like it *removed*. But if you want to fix it,
please go ahead.

	M.

[1] https://lore.kernel.org/all/86y0le9cvz.wl-maz@kernel.org/

-- 
Without deviation from the norm, progress is not possible.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-08-17  8:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-17  8:07 [PATCH] KVM: selftests: arm64: Skip sea_to_user without 1GB hugepages Like Xu
2026-08-17  8:52 ` Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox