[PATCH v3 2/4] KVM: selftests: Use an allowed memory node in test_mbind()
From: Shivank Garg
Date: Mon Sep 07 2026 - 03:31:55 EST
test_mbind() hardcodes node 0 and skips the test unless sysfs reports
more than one NUMA node. This can fail if node 0 has no memory or is
excluded by the task's cpuset.
Pick a node from MPOL_F_MEMS_ALLOWED instead. The test only needs one
node, so allow it to run on single-node systems too.
Signed-off-by: Shivank Garg <shivankg@xxxxxxx>
---
tools/testing/selftests/kvm/guest_memfd_test.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/kvm/guest_memfd_test.c b/tools/testing/selftests/kvm/guest_memfd_test.c
index b3bd03167ba8..ea8e38064e83 100644
--- a/tools/testing/selftests/kvm/guest_memfd_test.c
+++ b/tools/testing/selftests/kvm/guest_memfd_test.c
@@ -81,15 +81,16 @@ static void test_mbind(int fd, size_t total_size)
unsigned long nodemask = 0;
unsigned long maxnode = MAXNODE_FOR_MASK(nodemask);
unsigned long bind_nodemask;
+ unsigned long mems_allowed;
int policy;
char *mem;
int nid;
int ret;
- if (!is_multi_numa_node_system())
+ if (!kvm_get_numa_memory_nodes(&mems_allowed))
return;
- nid = 0;
+ nid = kvm_get_next_numa_node(mems_allowed, -1);
bind_nodemask = BIT(nid);
mem = kvm_mmap(total_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd);
--
2.43.0