All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sean Christopherson" <seanjc@google.com>
Cc: kvmarm@lists.linux.dev, "Oliver Upton" <oupton@kernel.org>,
	"Marc Zyngier" <maz@kernel.org>,
	kvm@vger.kernel.org
Subject: Re: [PATCH 3/9] KVM: selftests: Affine child tasks to other pCPUs in hardware disable test
Date: Thu, 30 Jul 2026 19:33:49 +0000	[thread overview]
Message-ID: <20260730193350.60B801F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260730191908.2084803-4-seanjc@google.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Thread initialization race causing severe CPU contention on the parent's single CPU, defeating the patch's purpose.
--

--- Patch [3]: [PATCH 3/9] KVM: selftests: Affine child tasks to other pCPUs in hardware disable test ---
commit b00682d387a4f6e1d76a822e983d388f7469a322
Author: Sean Christopherson <seanjc@google.com>

KVM: selftests: Affine child tasks to other pCPUs in hardware disable test

This commit modifies the hardware disable test to affine child tasks to
different pCPUs than the parent task. This is intended to prevent the
child tasks from starving the parent task on preemptible kernels.

> diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/testing/selftests/kvm/hardware_disable_test.c
> index 3147f5c97e943..1bcbd13e99947 100644
> --- a/tools/testing/selftests/kvm/hardware_disable_test.c
> +++ b/tools/testing/selftests/kvm/hardware_disable_test.c
[ ... ]
> @@ -84,16 +85,11 @@ static void run_test(u32 run)
[ ... ]
>  		check_create_thread(&threads[i], NULL, run_vcpu, vcpu);
> -		check_set_affinity(threads[i], &cpu_set);
> +		check_set_affinity(threads[i], &child_cpu_set);
>  
>  		for (j = 0; j < SLEEPING_THREAD_NUM; ++j) {
>  			check_create_thread(&throw_away, NULL, sleeping_thread,
>  					    (void *)NULL);
> -			check_set_affinity(throw_away, &cpu_set);
> +			check_set_affinity(throw_away, &child_cpu_set);
>  		}
>  	}
[ ... ]
> @@ -147,12 +143,30 @@ void wait_for_child_setup(pid_t pid)
[ ... ]
> +static void setup_child_cpu_set(void)
> +{
> +	int cpu;
> +
> +	kvm_sched_getaffinity(0, sizeof(child_cpu_set), &child_cpu_set);
> +
> +	if (CPU_COUNT(&child_cpu_set) < 2)
> +		return;
> +
> +	cpu = pin_task_to_random_cpu(pthread_self(), &child_cpu_set);
> +	CPU_CLR(cpu, &child_cpu_set);
> +
> +	while (CPU_COUNT(&child_cpu_set) > VCPU_NUM)
> +		CPU_CLR(kvm_pick_random_cpu(&child_cpu_set), &child_cpu_set);
> +}

[Severity: Medium]
Since setup_child_cpu_set() pins the parent thread to a single random CPU
prior to spawning children, won't the newly created threads in run_test()
inherit this single-CPU affinity upon creation?

Because check_create_thread() spawns the threads before their affinity is
explicitly updated to child_cpu_set, they might immediately begin executing
on the exact same CPU as the parent.

Could this result in the child threads starving the parent on that single CPU
before the parent gets a chance to execute check_set_affinity()? This seems
like it might heavily delay the migration and trigger the same CPU contention
that this patch aims to fix.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260730191908.2084803-1-seanjc@google.com?part=3

  reply	other threads:[~2026-07-30 19:33 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-30 19:18 [PATCH 0/9] KVM: selftests: Add more syscall wrappers, fix hardware_disable_test Sean Christopherson
2026-07-30 19:19 ` [PATCH 1/9] KVM: selftests: Return the target CPU from pin_task_to_random_cpu() Sean Christopherson
2026-07-30 19:19 ` [PATCH 2/9] KVM: selftests: Extract picking of random CPU from cpu_set_t to separate API Sean Christopherson
2026-07-30 19:19 ` [PATCH 3/9] KVM: selftests: Affine child tasks to other pCPUs in hardware disable test Sean Christopherson
2026-07-30 19:33   ` sashiko-bot [this message]
2026-07-30 19:19 ` [PATCH 4/9] KVM: selftests: Drop unreachable, dead code from " Sean Christopherson
2026-07-30 19:30   ` sashiko-bot
2026-07-30 19:19 ` [PATCH 5/9] KVM: selftests: Add KVM syscall wrapper for pthread_create() Sean Christopherson
2026-07-30 19:30   ` sashiko-bot
2026-07-30 19:19 ` [PATCH 6/9] KVM: selftests: Add KVM syscall wrappers for pthread_{cancel,join}() Sean Christopherson
2026-07-30 19:19 ` [PATCH 7/9] KVM: selftests: Add helper APIs to cancel+join pthreads Sean Christopherson
2026-07-30 19:19 ` [PATCH 8/9] KVM: selftests: Add KVM syscall wrappers for pthread_{g,s}etaffinity_np() Sean Christopherson
2026-07-30 19:29   ` sashiko-bot
2026-07-30 20:24     ` Sean Christopherson
2026-07-30 19:19 ` [PATCH 9/9] 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=20260730193350.60B801F000E9@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.