From: Ridong Chen <ridong.chen@linux.dev>
To: "Waiman Long" <longman@redhat.com>, "Tejun Heo" <tj@kernel.org>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Michal Koutný" <mkoutny@suse.com>
Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
Hui Peng <benquike@gmail.com>,
Guopeng Zhang <guopeng.zhang@linux.dev>
Subject: Re: [PATCH-next v2 2/2] cgroup/cpuset: Remove CS_CPU_EXCLUSIVE handling code from v2
Date: Mon, 28 Sep 2026 15:53:26 +0800 [thread overview]
Message-ID: <300d6ff2-78dd-4f7e-81f1-ca98a620292d@linux.dev> (raw)
In-Reply-To: <20260927215319.382422-3-longman@redhat.com>
On 9/28/2026 5:53 AM, Waiman Long wrote:
> As the is_cpu_exclusive() function is only used for DEADLINE shrink
> test with v1 there is no need to have the CS_CPU_EXCLUSIVE flag set on
> valid partition root anymore. Remove update_partition_exclusive_flag()
> and other CS_CPU_EXCLUSIVE flag handling code in cpuset.c.
>
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> kernel/cgroup/cpuset.c | 52 ++++--------------------------------------
> 1 file changed, 4 insertions(+), 48 deletions(-)
>
> diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
> index 104fe10c336d..4a915da37bb3 100644
> --- a/kernel/cgroup/cpuset.c
> +++ b/kernel/cgroup/cpuset.c
> @@ -1174,25 +1174,6 @@ enum partition_cmd {
> static void update_sibling_cpumasks(struct cpuset *parent, struct cpuset *cs,
> struct tmpmasks *tmp);
>
> -/*
> - * Update partition exclusive flag
> - *
> - * Return: 0 if successful, an error code otherwise
> - */
> -static int update_partition_exclusive_flag(struct cpuset *cs, int new_prs)
> -{
> - bool exclusive = (new_prs > PRS_MEMBER);
> -
> - if (exclusive && !is_cpu_exclusive(cs)) {
> - if (cpuset_update_flag(CS_CPU_EXCLUSIVE, cs, 1))
> - return PERR_NOTEXCL;
> - } else if (!exclusive && is_cpu_exclusive(cs)) {
> - /* Turning off CS_CPU_EXCLUSIVE will not return error */
> - cpuset_update_flag(CS_CPU_EXCLUSIVE, cs, 0);
> - }
> - return 0;
> -}
> -
> /*
> * Update partition load balance flag and/or rebuild sched domain
> *
> @@ -1248,11 +1229,9 @@ static void reset_partition_data(struct cpuset *cs)
>
> lockdep_assert_held(&callback_lock);
>
> - if (cpumask_empty(cs->exclusive_cpus)) {
> + if (cpumask_empty(cs->exclusive_cpus))
> cpumask_clear(cs->effective_xcpus);
> - if (is_cpu_exclusive(cs))
> - clear_bit(CS_CPU_EXCLUSIVE, &cs->flags);
> - }
> +
> if (!cpumask_and(cs->effective_cpus, parent->effective_cpus, cs->cpus_allowed))
> cpumask_copy(cs->effective_cpus, parent->effective_cpus);
> }
> @@ -2028,19 +2007,6 @@ static int update_parent_effective_cpumask(struct cpuset *cs, int cmd,
> if (!adding && !deleting && (new_prs == old_prs))
> return 0;
>
> - /*
> - * Transitioning between invalid to valid or vice versa may require
> - * changing CS_CPU_EXCLUSIVE. In the case of partcmd_update,
> - * validate_change() has already been successfully called and
> - * CPU lists in cs haven't been updated yet. So defer it to later.
> - */
> - if ((old_prs != new_prs) && (cmd != partcmd_update)) {
> - int err = update_partition_exclusive_flag(cs, new_prs);
> -
> - if (err)
> - return err;
> - }
> -
> /*
> * Change the parent's effective_cpus & effective_xcpus (top cpuset
> * only).
> @@ -2063,9 +2029,6 @@ static int update_parent_effective_cpumask(struct cpuset *cs, int cmd,
>
> spin_unlock_irq(&callback_lock);
>
> - if ((old_prs != new_prs) && (cmd == partcmd_update))
> - update_partition_exclusive_flag(cs, new_prs);
> -
> if (adding || deleting) {
> cpuset_update_tasks_cpumask(parent, tmp->addmask);
> update_sibling_cpumasks(parent, cs, tmp);
> @@ -2942,10 +2905,6 @@ static int update_prstate(struct cpuset *cs, int new_prs)
> if (alloc_tmpmasks(&tmpmask))
> return -ENOMEM;
>
> - err = update_partition_exclusive_flag(cs, new_prs);
> - if (err)
> - goto out;
> -
> if (!old_prs) {
> /*
> * cpus_allowed and exclusive_cpus cannot be both empty.
> @@ -3009,13 +2968,10 @@ static int update_prstate(struct cpuset *cs, int new_prs)
> }
> out:
> /*
> - * Make partition invalid & disable CS_CPU_EXCLUSIVE if an error
> - * happens.
> + * Make partition invalid if an error happens.
> */
> - if (err) {
> + if (err)
> new_prs = -new_prs;
> - update_partition_exclusive_flag(cs, new_prs);
> - }
>
> spin_lock_irq(&callback_lock);
> cs->partition_root_state = new_prs;
Nice.
Reviewed-by: Ridong Chen <ridong.chen@linux.dev>
--
Best regards
Ridong
next prev parent reply other threads:[~2026-09-28 7:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-27 21:53 [PATCH-next v2 0/2] cgroup/cpuset: Run SCHED_DEADLINE shrink test on valid partition root only Waiman Long
2026-09-27 21:53 ` [PATCH-next v2 1/2] " Waiman Long
2026-09-28 7:46 ` Ridong Chen
2026-09-28 9:32 ` Guopeng Zhang
2026-09-27 21:53 ` [PATCH-next v2 2/2] cgroup/cpuset: Remove CS_CPU_EXCLUSIVE handling code from v2 Waiman Long
2026-09-28 7:53 ` Ridong Chen [this message]
2026-09-28 9:32 ` Guopeng Zhang
2026-09-28 17:41 ` [PATCH-next v2 0/2] cgroup/cpuset: Run SCHED_DEADLINE shrink test on valid partition root only Tejun Heo
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=300d6ff2-78dd-4f7e-81f1-ca98a620292d@linux.dev \
--to=ridong.chen@linux.dev \
--cc=benquike@gmail.com \
--cc=cgroups@vger.kernel.org \
--cc=guopeng.zhang@linux.dev \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mkoutny@suse.com \
--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.