From: sashiko-bot@kernel.org
To: "Sean Christopherson" <seanjc@google.com>
Cc: "Marc Zyngier" <maz@kernel.org>,
kvmarm@lists.linux.dev, "Oliver Upton" <oupton@kernel.org>,
kvm@vger.kernel.org
Subject: Re: [PATCH v2 03/12] KVM: selftests: Pre-set threads affinity in hardware disable test when possible
Date: Fri, 31 Jul 2026 17:20:52 +0000 [thread overview]
Message-ID: <20260731172052.9FE901F00AC4@smtp.kernel.org> (raw)
In-Reply-To: <20260731170619.2620845-4-seanjc@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The return value of `pthread_attr_setaffinity_np()` is ignored, leading to silent failures and divergent error-handling between libcs.
- [Low] The test incorrectly uses the internal glibc macro `__USE_GNU` to detect GNU extension availability.
--
--- Patch [3]: [PATCH v2 03/12] KVM: selftests: Pre-set threads affinity in hardware disable test when possible ---
commit e87ff4fe7aad8c6f99e1f03d8e09fe9b5ceed69d
Author: Sean Christopherson <seanjc@google.com>
KVM: selftests: Pre-set threads affinity in hardware disable test when possible
This commit attempts to reduce the perceived latency of pthread_create() on
large NUMA systems by pre-setting the CPU affinity for grandchildren threads
using pthread_attr_setaffinity_np() when building against a compatible libc.
> diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/testing/selftests/kvm/hardware_disable_test.c
> index f088b4af3ccc7..d8288147b0a69 100644
> --- a/tools/testing/selftests/kvm/hardware_disable_test.c
> +++ b/tools/testing/selftests/kvm/hardware_disable_test.c
> @@ -36,7 +36,9 @@ static void *run_vcpu(void *arg)
> struct kvm_vcpu *vcpu = arg;
> struct kvm_run *run = vcpu->run;
>
> +#ifndef __USE_GNU
[Severity: Low]
Does checking __USE_GNU correctly detect the availability of this API across
different libc implementations?
__USE_GNU is an internal glibc macro. Other implementations like musl provide
pthread_attr_setaffinity_np() and support _GNU_SOURCE, but do not define
__USE_GNU, which would unnecessarily disable this optimization for them.
Should this code check for _GNU_SOURCE or rely on a standard feature test
macro instead?
> + kvm_sched_setaffinity(0, sizeof(cpu_set_t), &threads_cpu_set);
> +#endif
>
> vcpu_run(vcpu);
>
[ ... ]
> @@ -80,22 +84,28 @@ static inline void check_join(pthread_t thread, void **retval)
> static void run_test(u32 run)
> {
> struct kvm_vcpu *vcpu;
> + pthread_attr_t attr;
> struct kvm_vm *vm;
> pthread_t threads[VCPU_NUM];
> pthread_t throw_away;
> void *b;
> u32 i, j;
>
> + pthread_attr_init(&attr);
> +#ifdef __USE_GNU
> + pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &threads_cpu_set);
[Severity: Medium]
Is it intentional to ignore the return value of pthread_attr_setaffinity_np()
here?
If this fails (for example, due to cgroup CPU mask restrictions), it silently
leaves the attribute unmodified and the optimization is missed. Meanwhile, the
fallback path in run_vcpu() using kvm_sched_setaffinity() explicitly asserts
and fails the test on error.
Should the return value be checked to maintain consistent test behavior and
error handling between the two paths?
> +#endif
> +
> vm = vm_create(VCPU_NUM);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260731170619.2620845-1-seanjc@google.com?part=3
next prev parent reply other threads:[~2026-07-31 17:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-31 17:06 [PATCH v2 00/12] KVM: selftests: Add more syscall wrappers, fix hardware_disable_test Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 01/12] KVM: selftests: Add a KVM syscall wrapper for sched_setaffinity() Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 02/12] KVM: selftests: Set threads CPU affinity before doing work in hardware disable test Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 03/12] KVM: selftests: Pre-set threads affinity in hardware disable test when possible Sean Christopherson
2026-07-31 17:20 ` sashiko-bot [this message]
2026-07-31 17:06 ` [PATCH v2 04/12] KVM: selftests: Return the target CPU from pin_task_to_random_cpu() Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 05/12] KVM: selftests: Extract picking of random CPU from cpu_set_t to separate API Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 06/12] KVM: selftests: Affine threads to random CPUs in hardware disable test Sean Christopherson
2026-07-31 17:15 ` sashiko-bot
2026-07-31 17:27 ` Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 07/12] KVM: selftests: Drop unreachable, dead code from " Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 08/12] KVM: selftests: Add KVM syscall wrapper for pthread_create() Sean Christopherson
2026-07-31 17:20 ` sashiko-bot
2026-07-31 17:06 ` [PATCH v2 09/12] KVM: selftests: Add KVM syscall wrappers for pthread_{cancel,join}() Sean Christopherson
2026-07-31 17:18 ` sashiko-bot
2026-07-31 17:06 ` [PATCH v2 10/12] KVM: selftests: Add helper APIs to cancel+join pthreads Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 11/12] KVM: selftests: Add KVM syscall wrappers for pthread_{g,s}etaffinity_np() Sean Christopherson
2026-07-31 17:06 ` [PATCH v2 12/12] KVM: selftests: Clean up global constants in hardware disable test Sean Christopherson
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=20260731172052.9FE901F00AC4@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oupton@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.