Re: [PATCH 6.6 059/150] mips/smp: Call rcutree_report_cpu_starting() earlier

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Greg,

As I said before, this patch cannot be backported because rcutree_report_cpu_starting() only exist in 6.7+.

Huacai


> -----原始邮件-----
> 发件人: "Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>
> 发送时间:2024-01-18 18:48:01 (星期四)
> 收件人: stable@xxxxxxxxxxxxxxx
> 抄送: "Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>, patches@xxxxxxxxxxxxxxx, "Stefan Wiehler" <stefan.wiehler@xxxxxxxxx>, "Huacai Chen" <chenhuacai@xxxxxxxxxxx>, "Thomas Bogendoerfer" <tsbogend@xxxxxxxxxxxxxxxx>, "Sasha Levin" <sashal@xxxxxxxxxx>
> 主题: [PATCH 6.6 059/150] mips/smp: Call rcutree_report_cpu_starting() earlier
> 
> 6.6-stable review patch.  If anyone has any objections, please let me know.
> 
> ------------------
> 
> From: Stefan Wiehler <stefan.wiehler@xxxxxxxxx>
> 
> [ Upstream commit 55702ec9603ebeffb15e6f7b113623fe1d8872f4 ]
> 
> rcutree_report_cpu_starting() must be called before
> clockevents_register_device() to avoid the following lockdep splat triggered by
> calling list_add() when CONFIG_PROVE_RCU_LIST=y:
> 
>   WARNING: suspicious RCU usage
>   ...
>   -----------------------------
>   kernel/locking/lockdep.c:3680 RCU-list traversed in non-reader section!!
> 
>   other info that might help us debug this:
> 
>   RCU used illegally from offline CPU!
>   rcu_scheduler_active = 1, debug_locks = 1
>   no locks held by swapper/1/0.
>   ...
>   Call Trace:
>   [<ffffffff8012a434>] show_stack+0x64/0x158
>   [<ffffffff80a93d98>] dump_stack_lvl+0x90/0xc4
>   [<ffffffff801c9e9c>] __lock_acquire+0x1404/0x2940
>   [<ffffffff801cbf3c>] lock_acquire+0x14c/0x448
>   [<ffffffff80aa4260>] _raw_spin_lock_irqsave+0x50/0x88
>   [<ffffffff8021e0c8>] clockevents_register_device+0x60/0x1e8
>   [<ffffffff80130ff0>] r4k_clockevent_init+0x220/0x3a0
>   [<ffffffff801339d0>] start_secondary+0x50/0x3b8
> 
> raw_smp_processor_id() is required in order to avoid calling into lockdep
> before RCU has declared the CPU to be watched for readers.
> 
> See also commit 29368e093921 ("x86/smpboot:  Move rcu_cpu_starting() earlier"),
> commit de5d9dae150c ("s390/smp: move rcu_cpu_starting() earlier") and commit
> 99f070b62322 ("powerpc/smp: Call rcu_cpu_starting() earlier").
> 
> Signed-off-by: Stefan Wiehler <stefan.wiehler@xxxxxxxxx>
> Reviewed-by: Huacai Chen <chenhuacai@xxxxxxxxxxx>
> Signed-off-by: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
> ---
>  arch/mips/kernel/smp.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
> index 8fbef537fb88..82e2e051b416 100644
> --- a/arch/mips/kernel/smp.c
> +++ b/arch/mips/kernel/smp.c
> @@ -351,10 +351,11 @@ early_initcall(mips_smp_ipi_init);
>   */
>  asmlinkage void start_secondary(void)
>  {
> -	unsigned int cpu;
> +	unsigned int cpu = raw_smp_processor_id();
>  
>  	cpu_probe();
>  	per_cpu_trap_init(false);
> +	rcutree_report_cpu_starting(cpu);
>  	mips_clockevent_init();
>  	mp_ops->init_secondary();
>  	cpu_report();
> @@ -366,7 +367,6 @@ asmlinkage void start_secondary(void)
>  	 */
>  
>  	calibrate_delay();
> -	cpu = smp_processor_id();
>  	cpu_data[cpu].udelay_val = loops_per_jiffy;
>  
>  	set_cpu_sibling_map(cpu);
> -- 
> 2.43.0
> 
> 


本邮件及其附件含有龙芯中科的商业秘密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制或散发)本邮件及其附件中的信息。如果您错收本邮件,请您立即电话或邮件通知发件人并删除本邮件。 
This email and its attachments contain confidential information from Loongson Technology , which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this email in error, please notify the sender by phone or email immediately and delete it. 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux