From: "Garg, Shivank" <shivankg@amd.com>
To: "pbonzini@redhat.com" <pbonzini@redhat.com>,
"seanjc@google.com" <seanjc@google.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/7] KVM: selftests: Add common helper to get mask+number of usable memory NUMA nodes
Date: Sun, 6 Sep 2026 17:53:15 +0000 [thread overview]
Message-ID: <8c6da18a1edc1ad60bcbf5d3c5956ad3a0aa745e.camel@amd.com> (raw)
In-Reply-To: <20260903001625.2792367-6-seanjc@google.com>
On Wed, 2026-09-02 at 17:16 -0700, Sean Christopherson wrote:
> Extract and slightly adopt the xAPIC IPI test's logic for getting the mask
> and number of usable memory NUMA nodes into a common helper. To allow for
> friendlier behavior when the underlying kernel doesn't support NUMA, or the
> test was run without sufficient permissions, zero out the mask and return
> "zero nodes" if get_mempolicy() fails with ENOSYS or EPERM respectively.
> I.e. allow tests to skip (sub)tests instead of throwing an assert.
>
> Suggested-by: Shivank Garg <shivankg@amd.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
> tools/testing/selftests/kvm/include/numaif.h | 13 +++++++++++++
> tools/testing/selftests/kvm/x86/xapic_ipi_test.c | 5 +----
> 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 299dddff2729..0945500c6322 100644
> --- a/tools/testing/selftests/kvm/include/numaif.h
> +++ b/tools/testing/selftests/kvm/include/numaif.h
> @@ -41,6 +41,19 @@ KVM_SYSCALL_DEFINE(mbind, 6, void *, addr, unsigned long, size, int, mode,
> */
> #define MAXNODE_FOR_MASK(mask) (BITS_PER_TYPE(mask) + 1)
>
> +static inline int kvm_get_numa_memory_nodes(unsigned long *nodemask)
> +{
> + int r;
> +
> + *nodemask = 0;
> +
> + r = get_mempolicy(NULL, nodemask, MAXNODE_FOR_MASK(*nodemask), 0,
> + MPOL_F_MEMS_ALLOWED);
> + TEST_ASSERT(!r || errno == ENOSYS || errno == EPERM,
> + "Unexpected get_mempolicy() failure");
> + return __builtin_popcountl(*nodemask);
> +}
> +
> /*
> * Return the node ID of the next NUMA node in the mask, starting at @from+1.
> * Guarantees a node is found, and that the found node is not @from. Pass -1
> diff --git a/tools/testing/selftests/kvm/x86/xapic_ipi_test.c b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> index 7144ad833ae0..42c601617f5a 100644
> --- a/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> +++ b/tools/testing/selftests/kvm/x86/xapic_ipi_test.c
> @@ -244,15 +244,12 @@ 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, MAXNODE_FOR_MASK(nodemask),
> - 0, MPOL_F_MEMS_ALLOWED);
> + nodes = kvm_get_numa_memory_nodes(&nodemask);
>
> fprintf(stderr, "Numa nodes found amongst first %lu possible nodes "
> "(each 1-bit indicates node is present): %#lx\n",
> BITS_PER_TYPE(nodemask), nodemask);
>
> - nodes = __builtin_popcountl(nodemask);
> TEST_ASSERT(nodes > 1,
> "Did not find at least 2 numa nodes. Can't do migration");
>
Reviewed-by: Shivank Garg <shivankg@amd.com>
Thanks,
Shivank
next prev parent reply other threads:[~2026-09-06 17:53 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 0:16 [PATCH 0/7] KVM: selftests: Fix maxnodes bugs and cleanup related code Sean Christopherson
2026-09-03 0:16 ` [PATCH 1/7] KVM: selftests: Account for kernel's off-by-one bug in NUMA node syscalls Sean Christopherson
2026-09-06 10:08 ` Garg, Shivank
2026-09-03 0:16 ` [PATCH 2/7] KVM: selftests: Fix maxnode argument to migrate_pages() in xapic_ipi_test Sean Christopherson
2026-09-03 0:16 ` [PATCH 3/7] KVM: selftests: use BITS_PER_TYPE() for NUMA masks Sean Christopherson
2026-09-03 0:16 ` [PATCH 4/7] KVM: selftests: Compute node masks on-demand in xAPIC IPI test Sean Christopherson
2026-09-06 17:05 ` Garg, Shivank
2026-09-03 0:16 ` [PATCH 5/7] KVM: selftests: Add common helper to get mask+number of usable memory NUMA nodes Sean Christopherson
2026-09-06 17:53 ` Garg, Shivank [this message]
2026-09-03 0:16 ` [PATCH 6/7] KVM: selftests: Automatically run xAPIC IPI migration test when possible Sean Christopherson
2026-09-06 18:01 ` Garg, Shivank
2026-09-03 0:16 ` [PATCH 7/7] KVM: selftests: Skip xAPIC IPI migration test when forced but unsupported Sean Christopherson
2026-09-06 18:13 ` Garg, Shivank
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8c6da18a1edc1ad60bcbf5d3c5956ad3a0aa745e.camel@amd.com \
--to=shivankg@amd.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox