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 <[email protected]> --- 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

