* [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