[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251105210348.35256-1-frederic@kernel.org>
Date: Wed, 5 Nov 2025 22:03:16 +0100
From: Frederic Weisbecker <frederic@...nel.org>
To: LKML <linux-kernel@...r.kernel.org>
Cc: Frederic Weisbecker <frederic@...nel.org>,
linux-arm-kernel@...ts.infradead.org,
Thomas Gleixner <tglx@...utronix.de>,
Michal Koutný <mkoutny@...e.com>,
Eric Dumazet <edumazet@...gle.com>,
Will Deacon <will@...nel.org>,
Gabriele Monaco <gmonaco@...hat.com>,
Lai Jiangshan <jiangshanlai@...il.com>,
Shakeel Butt <shakeel.butt@...ux.dev>,
Phil Auld <pauld@...hat.com>,
Paolo Abeni <pabeni@...hat.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Johannes Weiner <hannes@...xchg.org>,
Ingo Molnar <mingo@...hat.com>,
cgroups@...r.kernel.org,
"Rafael J . Wysocki" <rafael@...nel.org>,
Roman Gushchin <roman.gushchin@...ux.dev>,
Jakub Kicinski <kuba@...nel.org>,
Danilo Krummrich <dakr@...nel.org>,
Marco Crivellari <marco.crivellari@...e.com>,
linux-mm@...ck.org,
Michal Hocko <mhocko@...e.com>,
linux-pci@...r.kernel.org,
Simon Horman <horms@...nel.org>,
Catalin Marinas <catalin.marinas@....com>,
"David S . Miller" <davem@...emloft.net>,
Peter Zijlstra <peterz@...radead.org>,
Waiman Long <longman@...hat.com>,
linux-block@...r.kernel.org,
Bjorn Helgaas <bhelgaas@...gle.com>,
Tejun Heo <tj@...nel.org>,
Vlastimil Babka <vbabka@...e.cz>,
Andrew Morton <akpm@...ux-foundation.org>,
Jens Axboe <axboe@...nel.dk>,
netdev@...r.kernel.org,
Muchun Song <muchun.song@...ux.dev>
Subject: [PATCH 00/31 v4] cpuset/isolation: Honour kthreads preferred affinity
Hi,
The kthread code was enhanced lately to provide an infrastructure which
manages the preferred affinity of unbound kthreads (node or custom
cpumask) against housekeeping constraints and CPU hotplug events.
One crucial missing piece is cpuset: when an isolated partition is
created, deleted, or its CPUs updated, all the unbound kthreads in the
top cpuset are affine to _all_ the non-isolated CPUs, possibly breaking
their preferred affinity along the way
Solve this with performing the kthreads affinity update from cpuset to
the kthreads consolidated relevant code instead so that preferred
affinities are honoured.
The dispatch of the new cpumasks to workqueues and kthreads is performed
by housekeeping, as per the nice Tejun's suggestion.
As a welcome side effect, HK_TYPE_DOMAIN then integrates both the set
from isolcpus= and cpuset isolated partitions. Housekeeping cpumasks are
now modifyable with specific synchronization. A big step toward making
nohz_full= also mutable through cpuset in the future.
Changes since v3:
- Spelling issues all over the place (Bjorn Helgaas, Simon Horman
- Comment each HK_TYPE_* (Valentin Schneider)
- Keep static branch in housekeeping_test_cpu() (Waiman Long)
- Use rcu_dereference_all_check() to also check preemption disabled
(Chen Ridong)
- Use cpumask_size() for allocation (Waiman Long)
- Fix inverted branch on update (Phil Auld)
- Set WQ_PERCPU to memcg workqueue (Waiman Long)
- Remove linux/cpuset.h include from include/linux/sched/isolation.h
(Waiman Long)
- Comment why unbound kthreads aren't updated on CPU online (Waiman Long)
- Remove genirq related patches (handled in another patch after discussion
with Thomas Gleixner)
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
kthread/core-v4
HEAD: 9ba457a61e09fb17a4698879367b7e6593c256d2
Thanks,
Frederic
---
Frederic Weisbecker (30):
PCI: Prepare to protect against concurrent isolated cpuset change
cpu: Revert "cpu/hotplug: Prevent self deadlock on CPU hot-unplug"
memcg: Prepare to protect against concurrent isolated cpuset change
mm: vmstat: Prepare to protect against concurrent isolated cpuset change
sched/isolation: Save boot defined domain flags
cpuset: Convert boot_hk_cpus to use HK_TYPE_DOMAIN_BOOT
driver core: cpu: Convert /sys/devices/system/cpu/isolated to use HK_TYPE_DOMAIN_BOOT
net: Keep ignoring isolated cpuset change
block: Protect against concurrent isolated cpuset change
cpu: Provide lockdep check for CPU hotplug lock write-held
cpuset: Provide lockdep check for cpuset lock held
sched/isolation: Convert housekeeping cpumasks to rcu pointers
cpuset: Update HK_TYPE_DOMAIN cpumask from cpuset
sched/isolation: Flush memcg workqueues on cpuset isolated partition change
sched/isolation: Flush vmstat workqueues on cpuset isolated partition change
PCI: Flush PCI probe workqueue on cpuset isolated partition change
cpuset: Propagate cpuset isolation update to workqueue through housekeeping
cpuset: Remove cpuset_cpu_is_isolated()
sched/isolation: Remove HK_TYPE_TICK test from cpu_is_isolated()
PCI: Remove superfluous HK_TYPE_WQ check
kthread: Refine naming of affinity related fields
kthread: Include unbound kthreads in the managed affinity list
kthread: Include kthreadd to the managed affinity list
kthread: Rely on HK_TYPE_DOMAIN for preferred affinity management
sched: Switch the fallback task allowed cpumask to HK_TYPE_DOMAIN
sched/arm64: Move fallback task cpumask to HK_TYPE_DOMAIN
kthread: Honour kthreads preferred affinity after cpuset changes
kthread: Comment on the purpose and placement of kthread_affine_node() call
kthread: Document kthread_affine_preferred()
doc: Add housekeeping documentation
Gabriele Monaco (1):
cgroup/cpuset: Fail if isolated and nohz_full don't leave any housekeeping
Documentation/cpu_isolation/housekeeping.rst | 111 +++++++++++++++++++
arch/arm64/kernel/cpufeature.c | 18 ++-
block/blk-mq.c | 6 +-
drivers/base/cpu.c | 2 +-
drivers/pci/pci-driver.c | 71 ++++++++----
include/linux/cpu.h | 4 +
include/linux/cpuhplock.h | 1 +
include/linux/cpuset.h | 8 +-
include/linux/kthread.h | 1 +
include/linux/memcontrol.h | 4 +
include/linux/mmu_context.h | 2 +-
include/linux/pci.h | 3 +
include/linux/percpu-rwsem.h | 1 +
include/linux/sched/isolation.h | 16 ++-
include/linux/vmstat.h | 2 +
include/linux/workqueue.h | 2 +-
init/Kconfig | 1 +
kernel/cgroup/cpuset.c | 134 +++++++++++++++-------
kernel/cpu.c | 42 +++----
kernel/kthread.c | 160 ++++++++++++++++++---------
kernel/sched/isolation.c | 138 ++++++++++++++++++-----
kernel/sched/sched.h | 4 +
kernel/workqueue.c | 17 +--
mm/memcontrol.c | 25 ++++-
mm/vmstat.c | 15 ++-
net/core/net-sysfs.c | 2 +-
26 files changed, 596 insertions(+), 194 deletions(-)
Powered by blists - more mailing lists