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


Reply via email to