netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frederic Weisbecker <frederic@kernel.org>
To: Chen Ridong <chenridong@huaweicloud.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	"Michal Koutný" <mkoutny@suse.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"David S . Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Gabriele Monaco" <gmonaco@redhat.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Johannes Weiner" <hannes@cmpxchg.org>,
	"Lai Jiangshan" <jiangshanlai@gmail.com>,
	"Marco Crivellari" <marco.crivellari@suse.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Muchun Song" <muchun.song@linux.dev>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Phil Auld" <pauld@redhat.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	"Roman Gushchin" <roman.gushchin@linux.dev>,
	"Shakeel Butt" <shakeel.butt@linux.dev>,
	"Simon Horman" <horms@kernel.org>, "Tejun Heo" <tj@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Vlastimil Babka" <vbabka@suse.cz>,
	"Waiman Long" <longman@redhat.com>,
	"Will Deacon" <will@kernel.org>,
	cgroups@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	linux-pci@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH 17/31] cpuset: Propagate cpuset isolation update to workqueue through housekeeping
Date: Tue, 23 Dec 2025 16:17:55 +0100	[thread overview]
Message-ID: <aUqyo58-CDReEm10@localhost.localdomain> (raw)
In-Reply-To: <e0b3f050-ef2e-478e-9e22-5f800b86ee42@huaweicloud.com>

Le Thu, Nov 06, 2025 at 08:55:42AM +0800, Chen Ridong a écrit :
> 
> 
> On 2025/11/6 5:03, Frederic Weisbecker wrote:
> > Until now, cpuset would propagate isolated partition changes to
> > workqueues so that unbound workers get properly reaffined.
> > 
> > Since housekeeping now centralizes, synchronize and propagates isolation
> > cpumask changes, perform the work from that subsystem for consolidation
> > and consistency purposes.
> > 
> > For simplification purpose, the target function is adapted to take the
> > new housekeeping mask instead of the isolated mask.
> > 
> > Suggested-by: Tejun Heo <tj@kernel.org>
> > Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> > ---
> >  include/linux/workqueue.h |  2 +-
> >  init/Kconfig              |  1 +
> >  kernel/cgroup/cpuset.c    | 14 ++++++--------
> >  kernel/sched/isolation.c  |  4 +++-
> >  kernel/workqueue.c        | 17 ++++++++++-------
> >  5 files changed, 21 insertions(+), 17 deletions(-)
> > 
> > diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
> > index dabc351cc127..a4749f56398f 100644
> > --- a/include/linux/workqueue.h
> > +++ b/include/linux/workqueue.h
> > @@ -588,7 +588,7 @@ struct workqueue_attrs *alloc_workqueue_attrs_noprof(void);
> >  void free_workqueue_attrs(struct workqueue_attrs *attrs);
> >  int apply_workqueue_attrs(struct workqueue_struct *wq,
> >  			  const struct workqueue_attrs *attrs);
> > -extern int workqueue_unbound_exclude_cpumask(cpumask_var_t cpumask);
> > +extern int workqueue_unbound_housekeeping_update(const struct cpumask *hk);
> >  
> >  extern bool queue_work_on(int cpu, struct workqueue_struct *wq,
> >  			struct work_struct *work);
> > diff --git a/init/Kconfig b/init/Kconfig
> > index cab3ad28ca49..a1b3a3b66bfc 100644
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -1247,6 +1247,7 @@ config CPUSETS
> >  	bool "Cpuset controller"
> >  	depends on SMP
> >  	select UNION_FIND
> > +	select CPU_ISOLATION
> >  	help
> >  	  This option will let you create and manage CPUSETs which
> >  	  allow dynamically partitioning a system into sets of CPUs and
> > diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
> > index b04a4242f2fa..ea102e4695a5 100644
> > --- a/kernel/cgroup/cpuset.c
> > +++ b/kernel/cgroup/cpuset.c
> > @@ -1392,7 +1392,7 @@ static bool partition_xcpus_del(int old_prs, struct cpuset *parent,
> >  	return isolcpus_updated;
> >  }
> >  
> > -static void update_unbound_workqueue_cpumask(bool isolcpus_updated)
> > +static void update_housekeeping_cpumask(bool isolcpus_updated)
> >  {
> >  	int ret;
> >  
> > @@ -1401,8 +1401,6 @@ static void update_unbound_workqueue_cpumask(bool isolcpus_updated)
> >  	if (!isolcpus_updated)
> >  		return;
> >  
> > -	ret = workqueue_unbound_exclude_cpumask(isolated_cpus);
> > -	WARN_ON_ONCE(ret < 0);
> >  	ret = housekeeping_update(isolated_cpus, HK_TYPE_DOMAIN);
> >  	WARN_ON_ONCE(ret < 0);
> >  }
> > @@ -1558,7 +1556,7 @@ static int remote_partition_enable(struct cpuset *cs, int new_prs,
> >  	list_add(&cs->remote_sibling, &remote_children);
> >  	cpumask_copy(cs->effective_xcpus, tmp->new_cpus);
> >  	spin_unlock_irq(&callback_lock);
> > -	update_unbound_workqueue_cpumask(isolcpus_updated);
> > +	update_housekeeping_cpumask(isolcpus_updated);
> >  	cpuset_force_rebuild();
> >  	cs->prs_err = 0;
> >  
> > @@ -1599,7 +1597,7 @@ static void remote_partition_disable(struct cpuset *cs, struct tmpmasks *tmp)
> >  	compute_excpus(cs, cs->effective_xcpus);
> >  	reset_partition_data(cs);
> >  	spin_unlock_irq(&callback_lock);
> > -	update_unbound_workqueue_cpumask(isolcpus_updated);
> > +	update_housekeeping_cpumask(isolcpus_updated);
> >  	cpuset_force_rebuild();
> >  
> >  	/*
> > @@ -1668,7 +1666,7 @@ static void remote_cpus_update(struct cpuset *cs, struct cpumask *xcpus,
> >  	if (xcpus)
> >  		cpumask_copy(cs->exclusive_cpus, xcpus);
> >  	spin_unlock_irq(&callback_lock);
> > -	update_unbound_workqueue_cpumask(isolcpus_updated);
> > +	update_housekeeping_cpumask(isolcpus_updated);
> >  	if (adding || deleting)
> >  		cpuset_force_rebuild();
> >  
> > @@ -2027,7 +2025,7 @@ static int update_parent_effective_cpumask(struct cpuset *cs, int cmd,
> >  		WARN_ON_ONCE(parent->nr_subparts < 0);
> >  	}
> >  	spin_unlock_irq(&callback_lock);
> > -	update_unbound_workqueue_cpumask(isolcpus_updated);
> > +	update_housekeeping_cpumask(isolcpus_updated);
> >  
> >  	if ((old_prs != new_prs) && (cmd == partcmd_update))
> >  		update_partition_exclusive_flag(cs, new_prs);
> > @@ -3047,7 +3045,7 @@ static int update_prstate(struct cpuset *cs, int new_prs)
> >  	else if (isolcpus_updated)
> >  		isolated_cpus_update(old_prs, new_prs, cs->effective_xcpus);
> >  	spin_unlock_irq(&callback_lock);
> > -	update_unbound_workqueue_cpumask(isolcpus_updated);
> > +	update_housekeeping_cpumask(isolcpus_updated);
> >  
> 
> The patch [1] has been applied to cgroup/for-next, you may have to adapt it.
> 
> [1]:
> https://lore.kernel.org/cgroups/20251105043848.382703-6-longman@redhat.com/T/#u

Right, I just waited for -rc1 to pop-up before doing that.
v5 will follow shortly.

Thanks.

> 
> -- 
> Best regards,
> Ridong
> 

-- 
Frederic Weisbecker
SUSE Labs

  reply	other threads:[~2025-12-23 15:17 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-05 21:03 [PATCH 00/31 v4] cpuset/isolation: Honour kthreads preferred affinity Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 01/31] PCI: Prepare to protect against concurrent isolated cpuset change Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 02/31] cpu: Revert "cpu/hotplug: Prevent self deadlock on CPU hot-unplug" Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 03/31] memcg: Prepare to protect against concurrent isolated cpuset change Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 04/31] mm: vmstat: " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 05/31] sched/isolation: Save boot defined domain flags Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 06/31] cpuset: Convert boot_hk_cpus to use HK_TYPE_DOMAIN_BOOT Frederic Weisbecker
2025-11-06  1:20   ` Chen Ridong
2025-11-05 21:03 ` [PATCH 07/31] driver core: cpu: Convert /sys/devices/system/cpu/isolated " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 08/31] net: Keep ignoring isolated cpuset change Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 09/31] block: Protect against concurrent " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 10/31] cpu: Provide lockdep check for CPU hotplug lock write-held Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 11/31] cpuset: Provide lockdep check for cpuset lock held Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 12/31] sched/isolation: Convert housekeeping cpumasks to rcu pointers Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 13/31] cpuset: Update HK_TYPE_DOMAIN cpumask from cpuset Frederic Weisbecker
2025-11-08  9:05   ` Chen Ridong
2025-12-23 15:16     ` Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 14/31] sched/isolation: Flush memcg workqueues on cpuset isolated partition change Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 15/31] sched/isolation: Flush vmstat " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 16/31] PCI: Flush PCI probe workqueue " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 17/31] cpuset: Propagate cpuset isolation update to workqueue through housekeeping Frederic Weisbecker
2025-11-06  0:55   ` Chen Ridong
2025-12-23 15:17     ` Frederic Weisbecker [this message]
2025-11-05 21:03 ` [PATCH 18/31] cpuset: Remove cpuset_cpu_is_isolated() Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 19/31] sched/isolation: Remove HK_TYPE_TICK test from cpu_is_isolated() Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 20/31] PCI: Remove superfluous HK_TYPE_WQ check Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 21/31] kthread: Refine naming of affinity related fields Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 22/31] kthread: Include unbound kthreads in the managed affinity list Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 23/31] kthread: Include kthreadd to " Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 24/31] kthread: Rely on HK_TYPE_DOMAIN for preferred affinity management Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 25/31] sched: Switch the fallback task allowed cpumask to HK_TYPE_DOMAIN Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 26/31] cgroup/cpuset: Fail if isolated and nohz_full don't leave any housekeeping Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 27/31] sched/arm64: Move fallback task cpumask to HK_TYPE_DOMAIN Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 28/31] kthread: Honour kthreads preferred affinity after cpuset changes Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 29/31] kthread: Comment on the purpose and placement of kthread_affine_node() call Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 30/31] kthread: Document kthread_affine_preferred() Frederic Weisbecker
2025-11-05 21:03 ` [PATCH 31/31] doc: Add housekeeping documentation Frederic Weisbecker

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=aUqyo58-CDReEm10@localhost.localdomain \
    --to=frederic@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=cgroups@vger.kernel.org \
    --cc=chenridong@huaweicloud.com \
    --cc=dakr@kernel.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gmonaco@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=horms@kernel.org \
    --cc=jiangshanlai@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=marco.crivellari@suse.com \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=muchun.song@linux.dev \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pauld@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).