Re: [PATCH 4/5] KVM: selftests: add get_numa_mem_nodes()

"Garg, Shivank" <[email protected]>
Newsgroups org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <[email protected]>
On Sun, 2026-08-23 at 13:36 +0000, Shivank Garg wrote:
> The xAPIC IPI test uses MPOL_F_MEMS_ALLOWED to get the memory nodes
> available to the current process. Move the query to numaif.h as
> get_numa_mem_nodes() so other KVM selftests can use it.
> 
> Call get_mempolicy() directly instead of using the assert-on-failure
> kvm_get_mempolicy() wrapper. The xAPIC test already asserts its two
> node requirement.
> 
> Signed-off-by: Shivank Garg <[email protected]>
> ---
>  tools/testing/selftests/kvm/include/numaif.h     | 12 ++++++++++++
>  tools/testing/selftests/kvm/x86/xapic_ipi_test.c |  6 ++----
>  2 files changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/testing/selftests/kvm/include/numaif.h b/tools/testing/selftests/kvm/include/numaif.h
> index 29572a6d789c..55124e2330ab 100644
> --- a/tools/testing/selftests/kvm/include/numaif.h
> +++ b/tools/testing/selftests/kvm/include/numaif.h
> @@ -75,6 +75,18 @@ static bool is_numa_available(void)
>  		(errno != ENOSYS && errno != EPERM);
>  }
>  
> +static inline unsigned long get_numa_mem_nodes(void)
> +{
> +	unsigned long nodemask = 0;
> +
> +	/* Get set of first 64 numa nodes available */
> +	if (get_mempolicy(NULL, &nodemask, BITS_PER_TYPE(nodemask), NULL,
> +			  MPOL_F_MEMS_ALLOWED))
> +		return 0;
> +
> +	return nodemask;
> +}
> +
>  static inline bool is_multi_numa_node_system(void)
>  {
>  	return is_numa_available() && get_max_numa_node() >= 1;
> diff --git a/tools/testing/selftests/kvm/x86/xapic_ipi_test.c b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> index 769d8d95ab2c..66dcf36398aa 100644
> --- a/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> +++ b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> @@ -251,7 +251,7 @@ void do_migrations(struct test_data_page *data, int run_secs, int delay_usecs,
>  		   u64 *pipis_rcvd)
>  {
>  	long pages_not_moved;
> -	unsigned long nodemask = 0;
> +	unsigned long nodemask;
>  	unsigned long nodemasks[BITS_PER_TYPE(nodemask)];
>  	int nodes = 0;
>  	time_t start_time, last_update, now;
> @@ -266,9 +266,7 @@ void do_migrations(struct test_data_page *data, int run_secs, int delay_usecs,
>  	fprintf(stderr, "Calling migrate_pages every %d microseconds\n",
>  		delay_usecs);
>  
> -	/* Get set of first 64 numa nodes available */
> -	kvm_get_mempolicy(NULL, &nodemask, BITS_PER_TYPE(nodemask),
> -			  0, MPOL_F_MEMS_ALLOWED);
> +	nodemask = get_numa_mem_nodes();
>  
>  	fprintf(stderr, "Numa nodes found amongst first %lu possible nodes "
>  		"(each 1-bit indicates node is present): %#lx\n",
> 


From fd118b48e046c87d9b645b4ce7fc4ac5c0656431 Mon Sep 17 00:00:00 2001
From: Shivank Garg <[email protected]>
Date: Sun, 23 Aug 2026 14:11:42 +0000
Subject: [PATCH] Fix potential compilation issues

Sashiko reported that numaif.h does not include header that defines
BITS_PER_TYPE. If a test includes numaif.h without previously including
the header defining this macro, it might fail to compile due to a missing
definition, breaking header self-containment.

Link: https://lore.kernel.org/kvm/[email protected]
Signed-off-by: Shivank Garg <[email protected]>
---
 tools/testing/selftests/kvm/include/numaif.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/kvm/include/numaif.h b/tools/testing/selftests/kvm/include/numaif.h
index 4bbbf314e9d7..b89559b6ea3c 100644
--- a/tools/testing/selftests/kvm/include/numaif.h
+++ b/tools/testing/selftests/kvm/include/numaif.h
@@ -4,6 +4,7 @@
 #ifndef SELFTEST_KVM_NUMAIF_H
 #define SELFTEST_KVM_NUMAIF_H
 
+#include <linux/bits.h>
 #include <linux/mempolicy.h>
 
 #include "kvm_syscalls.h"
-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.