All of lore.kernel.org
 help / color / mirror / Atom feed
From: Waiman Long <longman@redhat.com>
To: sashiko@lists.linux.dev
Cc: tj@kernel.org, mkoutny@suse.com, linux-hwmon@vger.kernel.org,
	hannes@cmpxchg.org
Subject: Re: [PATCH 15/23] Drivers: hv: Use RCU to protect access of HK_TYPE_MANAGED_IRQ cpumask
Date: Thu, 23 Apr 2026 13:14:18 -0400	[thread overview]
Message-ID: <de014167-693d-418c-a814-dc498ac89ba0@redhat.com> (raw)
In-Reply-To: <20260422030903.E1BFCC2BCB0@smtp.kernel.org>


On 4/21/26 11:09 PM, sashiko-bot@kernel.org wrote:
> Sashiko AI review found 3 potential issue(s):
> - [High] Infinite loop causing RCU stall when a NUMA node lacks housekeeping CPUs.
> - [Medium] Mixing `goto`-based cleanup with scope-based `guard()` violates subsystem guidelines.
> - [Low] Unnecessary unconditional memory allocation for non-performance channels.
> --
>
> [Note: Due to recitation restrictions, this report uses a free-form summary
> format rather than quoting the original patch lines directly.]
>
> commit bc4398753271c194097795d20b6095f594c74b4c
> Author: Waiman Long <longman@redhat.com>
> Drivers: hv: Use RCU to protect access of HK_TYPE_MANAGED_IRQ cpumask
>
> This commit uses RCU to protect the HK_TYPE_MANAGED_IRQ cpumask during access,
> moving the cpumask allocation before taking the RCU read lock since the
> allocation can sleep.
>
> I noticed a few potential regressions in this patch:
>
> First, looking at the loop in init_vp_index(), if a selected NUMA node has
> no CPUs present in the housekeeping mask (for example, if the entire node is
> isolated), the intersection of available_mask and hk_mask becomes empty.
> The code then clears allocated_mask and jumps back to the retry label.
>
> Since the variables do not change state across retries, does this create
> an infinite loop? Because this patch places the loop inside an RCU
> read-side critical section via guard(rcu)(), would this spin result in
> an RCU stall?

Yes, it is possible that it becomes an infinite retry loop if the 
HK_TYPE_MANAGED_IRQ housekeeping cpumask does not contain any CPU in 
that particular node. I will post a patch in the next version to fix that.

>
> Second, the patch introduces guard(rcu)() in init_vp_index() while retaining
> the goto out_free cleanup path for free_cpumask_var(). According to the
> kernel's cleanup guidelines, mixing goto-based error handling with
> scope-based cleanups like guard() in the same function creates confusing
> ownership semantics.
Will remove the added goto instruction in the next version.
>
> Should this function be fully converted to scope-based cleanup, or
> alternatively, use explicit rcu_read_lock() and rcu_read_unlock() calls
> to avoid this mix?
>
> Finally, before this patch, the code used short-circuit logic to skip
> allocating the cpumask if the channel was not performance-critical. The
> patch refactors this to unconditionally call alloc_cpumask_var() at the top
> of the function before evaluating the channel type.
>
> Does this introduce unnecessary sleepable memory allocation and deallocation
> cycles for non-performance channels?

Will add the check for perf_chn before doing memory allocation in the 
next version. That should keep the current behavior.

Cheers,
Longman

>


  reply	other threads:[~2026-04-23 17:14 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-21  3:03 [PATCH-next 00/23] cgroup/cpuset: Enable runtime update of nohz_full and managed_irq CPUs Waiman Long
2026-04-21  3:03 ` [PATCH 01/23] sched/isolation: Add HK_TYPE_KERNEL_NOISE_BOOT & HK_TYPE_MANAGED_IRQ_BOOT Waiman Long
2026-04-21  3:03 ` [PATCH 02/23] sched/isolation: Enhance housekeeping_update() to support updating more than one HK cpumask Waiman Long
2026-04-22  3:08   ` sashiko-bot
2026-04-22  6:39   ` Chen Ridong
2026-04-21  3:03 ` [PATCH 03/23] tick/nohz: Make nohz_full parameter optional Waiman Long
2026-04-21  8:32   ` Thomas Gleixner
2026-04-21 14:14     ` Waiman Long
2026-04-24 15:57       ` Frederic Weisbecker
2026-04-22  3:08   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 04/23] tick/nohz: Allow runtime changes in full dynticks CPUs Waiman Long
2026-04-21  8:50   ` Thomas Gleixner
2026-04-21 14:24     ` Waiman Long
2026-05-13 13:04     ` Frederic Weisbecker
2026-04-22  3:08   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 05/23] tick: Pass timer tick job to an online HK CPU in tick_cpu_dying() Waiman Long
2026-04-21  8:55   ` Thomas Gleixner
2026-04-21 14:22     ` Waiman Long
2026-04-21  3:03 ` [PATCH 06/23] rcu/nocbs: Allow runtime changes in RCU NOCBS cpumask Waiman Long
2026-04-22  3:08   ` sashiko-bot
2026-04-23  2:05     ` Waiman Long
2026-04-21  3:03 ` [PATCH 07/23] watchdog: Sync up with runtime change of isolated CPUs Waiman Long
2026-04-22  3:08   ` sashiko-bot
2026-04-23  2:14     ` Waiman Long
2026-04-21  3:03 ` [PATCH 08/23] arm64: topology: Use RCU to protect access to HK_TYPE_TICK cpumask Waiman Long
2026-04-22  3:08   ` sashiko-bot
2026-04-22  9:34   ` Chen Ridong
2026-05-13 16:19   ` Frederic Weisbecker
2026-04-21  3:03 ` [PATCH 09/23] workqueue: Use RCU to protect access of HK_TYPE_TIMER cpumask Waiman Long
2026-04-21  3:03 ` [PATCH 10/23] cpu: " Waiman Long
2026-04-21  8:57   ` Thomas Gleixner
2026-04-21 14:25     ` Waiman Long
2026-04-21  3:03 ` [PATCH 11/23] hrtimer: " Waiman Long
2026-04-21  8:59   ` Thomas Gleixner
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 12/23] net: Use boot time housekeeping cpumask settings for now Waiman Long
2026-04-21  3:03 ` [PATCH 13/23] sched/core: Use RCU to protect access of HK_TYPE_KERNEL_NOISE cpumask Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-23 14:37     ` Waiman Long
2026-04-21  3:03 ` [PATCH 14/23] hwmon/coretemp: Use RCU to protect access of HK_TYPE_MISC cpumask Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 15/23] Drivers: hv: Use RCU to protect access of HK_TYPE_MANAGED_IRQ cpumask Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-23 17:14     ` Waiman Long [this message]
2026-04-21  3:03 ` [PATCH 16/23] genirq/cpuhotplug: " Waiman Long
2026-04-21  9:02   ` Thomas Gleixner
2026-04-21 14:29     ` Waiman Long
2026-04-21  3:03 ` [PATCH 17/23] sched/isolation: Extend housekeeping_dereference_check() to cover changes in nohz_full or manged_irqs cpumasks Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-23 17:30     ` Waiman Long
2026-04-21  3:03 ` [PATCH 18/23] cpu/hotplug: Add a new cpuhp_offline_cb() API Waiman Long
2026-04-21 16:17   ` Thomas Gleixner
2026-04-21 17:29     ` Waiman Long
2026-04-21 18:43       ` Thomas Gleixner
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 19/23] cgroup/cpuset: Improve check for calling housekeeping_update() Waiman Long
2026-04-23  1:10   ` Chen Ridong
2026-04-24 18:32     ` Waiman Long
2026-04-21  3:03 ` [PATCH 20/23] cgroup/cpuset: Enable runtime update of HK_TYPE_{KERNEL_NOISE,MANAGED_IRQ} cpumasks Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 21/23] cgroup/cpuset: Limit the side effect of using CPU hotplug on isolated partition Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 22/23] cgroup/cpuset: Prevent offline_disabled CPUs from being used in " Waiman Long
2026-04-22  3:09   ` sashiko-bot
2026-04-21  3:03 ` [PATCH 23/23] cgroup/cpuset: Documentation and kselftest updates Waiman Long
2026-04-22  3:09   ` sashiko-bot

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=de014167-693d-418c-a814-dc498ac89ba0@redhat.com \
    --to=longman@redhat.com \
    --cc=hannes@cmpxchg.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=mkoutny@suse.com \
    --cc=sashiko@lists.linux.dev \
    --cc=tj@kernel.org \
    /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.