From: Chen Yu <yu.c.chen@intel.com>
To: Yang Yingliang <yangyingliang@huawei.com>
Cc: <linux-kernel@vger.kernel.org>, <mingo@redhat.com>,
<peterz@infradead.org>, <juri.lelli@redhat.com>,
<vincent.guittot@linaro.org>, <dietmar.eggemann@arm.com>,
<rostedt@goodmis.org>, <bsegall@google.com>, <mgorman@suse.de>,
<bristot@redhat.com>, <vschneid@redhat.com>, <tglx@linutronix.de>
Subject: Re: [PATCH] sched/smt: fix unbalance sched_smt_present dec/inc
Date: Mon, 4 Sep 2023 10:26:20 +0800 [thread overview]
Message-ID: <ZPVATM5xfmiFKWtk@chenyu5-mobl2> (raw)
In-Reply-To: <20230902074609.1757507-1-yangyingliang@huawei.com>
Hi Yingliang,
On 2023-09-02 at 15:46:09 +0800, Yang Yingliang wrote:
> I got the following warn report while doing stress test:
>
May I know if the test is to run many deadline tasks while offline the CPUs,
so as to trigger the failing case that removing one CPU gets us below the total
allocated bandwidth?
> jump label: negative count!
> WARNING: CPU: 3 PID: 38 at kernel/jump_label.c:263 static_key_slow_try_dec+0x9d/0xb0
> Call Trace:
> <TASK>
> __static_key_slow_dec_cpuslocked+0x16/0x70
> sched_cpu_deactivate+0x26e/0x2a0
> cpuhp_invoke_callback+0x3ad/0x10d0
> cpuhp_thread_fun+0x3f5/0x680
> smpboot_thread_fn+0x56d/0x8d0
> kthread+0x309/0x400
> ret_from_fork+0x41/0x70
> ret_from_fork_asm+0x1b/0x30
> </TASK>
>
> Becaus when cpuset_cpu_inactive() fails in sched_cpu_deactivate(),
s/Becaus/Because/
> the cpu offline failed, but sched_smt_present is decreased before
> calling sched_cpu_deactivate, it leads unbalance dec/inc, so fix
s/calling sched_cpu_deactivate/calling cpuset_cpu_inactive() ?
> it by increasing sched_smt_present in the error path.
>
> Fixes: c5511d03ec09 ("sched/smt: Make sched_smt_present track topology")
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> ---
> kernel/sched/core.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 2299a5cfbfb9..b7ef2df36b75 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -9745,6 +9745,10 @@ int sched_cpu_deactivate(unsigned int cpu)
> sched_update_numa(cpu, false);
> ret = cpuset_cpu_inactive(cpu);
> if (ret) {
> +#ifdef CONFIG_SCHED_SMT
> + if (cpumask_weight(cpu_smt_mask(cpu)) == 2)
> + static_branch_inc_cpuslocked(&sched_smt_present);
> +#endif
While checking the code, it seems that the core scheduling also missed
the error path, maybe we should also invoke sched_core_cpu_starting() to
restore the context. I'll have a check.
Other than above typo, it looks good to me,
Reviewed-by: Chen Yu <yu.c.chen@intel.com>
thanks,
Chenyu
next prev parent reply other threads:[~2023-09-04 2:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-02 7:46 [PATCH] sched/smt: fix unbalance sched_smt_present dec/inc Yang Yingliang
2023-09-04 2:26 ` Chen Yu [this message]
2023-09-05 3:59 ` Chen Yu
2023-09-07 22:11 ` Tim Chen
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=ZPVATM5xfmiFKWtk@chenyu5-mobl2 \
--to=yu.c.chen@intel.com \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=yangyingliang@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox