FAILED: patch "[PATCH] LoongArch/smp: Call rcutree_report_cpu_starting() at" failed to apply to 6.1-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x 5056c596c3d1848021a4eaa76ee42f4c05c50346
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024012911-outright-violin-e677@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
5056c596c3d1 ("LoongArch/smp: Call rcutree_report_cpu_starting() at tlb_init()")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 5056c596c3d1848021a4eaa76ee42f4c05c50346 Mon Sep 17 00:00:00 2001
From: Huacai Chen <[email protected]>
Date: Fri, 26 Jan 2024 16:22:07 +0800
Subject: [PATCH] LoongArch/smp: Call rcutree_report_cpu_starting() at
tlb_init()
Machines which have more than 8 nodes fail to boot SMP after commit a2ccf46333d7b2cf96 ("LoongArch/smp: Call rcutree_report_cpu_starting() earlier"). Because such machines use tlb-based per-cpu base address rather than dmw-based per-cpu base address, resulting per-cpu variables can only be accessed after tlb_init(). But rcutree_report_cpu_starting() is now called before tlb_init() and accesses per-cpu variables indeed.
Since the original patch want to avoid the lockdep warning caused by page allocation in tlb_init(), we can move rcutree_report_cpu_starting() to tlb_init() where after tlb exception configuration but before page allocation.
arch/loongarch/kernel/smp.c +0 -1
@@ -509,7 +509,6 @@ asmlinkage void start_secondary(void)sync_counter (); cpu =raw_smp_processor_id ();set_my_cpu_offset (per_cpu_offset (cpu)); -rcutree_report_cpu_starting (cpu);cpu_probe ();constant_clockevent_init ();
arch/loongarch/mm/tlb.c +10 -6
@@ -284,12 +284,16 @@ static void setup_tlb_handler(int cpu)set_handler (EXCCODE_TLBNR *VECSIZE , handle_tlb_protect,VECSIZE );set_handler (EXCCODE_TLBNX *VECSIZE , handle_tlb_protect,VECSIZE );set_handler (EXCCODE_TLBPE *VECSIZE , handle_tlb_protect,VECSIZE ); - } + }else { +int vec_sz__maybe_unused ; +void *addr__maybe_unused ; +struct page *page__maybe_unused ; + +/* Avoid lockdep warning */ +rcutree_report_cpu_starting (cpu); +#ifdef CONFIG_NUMA - else { -void *addr; -struct page *page; -const int vec_sz =sizeof (exception_handlers); + vec_sz =sizeof (exception_handlers);if (pcpu_handlers[cpu])return ;
@@ -305,8 +309,8 @@ static void setup_tlb_handler(int cpu)csr_write64 (pcpu_handlers[cpu],LOONGARCH_CSR_EENTRY );csr_write64 (pcpu_handlers[cpu],LOONGARCH_CSR_MERRENTRY );csr_write64 (pcpu_handlers[cpu] +80 *VECSIZE ,LOONGARCH_CSR_TLBRENTRY ); - }#endif + } }void tlb_init (int cpu)
Huacai Chen
maintainerHi, Greg,
Quoted 16 lines · On Tue, Jan 30, 2024 at 12:53 AM <[email protected]> wrote:
The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkoutFETCH_HEAD
git cherry-pick -x5056c596c3d1848021a4eaa76ee42f4c05c50346
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024012911-outright-violin-e677@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Quoted 3 lines
Possible dependencies:
5056c596c3d1("LoongArch/smp: Callrcutree_report_cpu_starting()attlb_init()")
Similar to the commit which it fixes, please change rcutree_report_cpu_starting() to rcu_cpu_starting() in the code.
Huacai
Quoted 77 lines
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
5056c596c3d1848021a4eaa76ee42f4c05c50346Mon Sep 17 00:00:00 2001
From: Huacai Chen <[email protected]>
Date: Fri, 26 Jan 2024 16:22:07 +0800
Subject: [PATCH] LoongArch/smp: Callrcutree_report_cpu_starting()at
tlb_init()Machines which have more than 8 nodes fail to boot SMP after commit
a2ccf46333d7b2cf96("LoongArch/smp: Callrcutree_report_cpu_starting()earlier"). Because such machines use tlb-based per-cpu base address rather than dmw-based per-cpu base address, resulting per-cpu variables can only be accessed aftertlb_init(). Butrcutree_report_cpu_starting()is now called beforetlb_init()and accesses per-cpu variables indeed.Since the original patch want to avoid the lockdep warning caused by page allocation in
tlb_init(), we can movercutree_report_cpu_starting()totlb_init()where after tlb exception configuration but before page allocation.Fixes a2ccf46333d7b2cf96 ("LoongArch/smp: Call rcutree_report_cpu_starting() earlier")Signed-off-by Huacai Chen <[email protected]>arch/loongarch/kernel/smp.c +0
-1@@ -509,7 +509,6 @@ asmlinkage void start_secondary(void)sync_counter (); cpu =raw_smp_processor_id ();set_my_cpu_offset (per_cpu_offset (cpu)); -rcutree_report_cpu_starting (cpu);cpu_probe ();constant_clockevent_init ();arch/loongarch/mm/tlb.c +10
-6@@ -284,12 +284,16 @@ static void setup_tlb_handler(int cpu)set_handler (EXCCODE_TLBNR *VECSIZE , handle_tlb_protect,VECSIZE );set_handler (EXCCODE_TLBNX *VECSIZE , handle_tlb_protect,VECSIZE );set_handler (EXCCODE_TLBPE *VECSIZE , handle_tlb_protect,VECSIZE ); - } + }else { +int vec_sz__maybe_unused ; +void *addr__maybe_unused ; +struct page *page__maybe_unused ; + +/* Avoid lockdep warning */ +rcutree_report_cpu_starting (cpu); +#ifdef CONFIG_NUMA - else { -void *addr; -struct page *page; -const int vec_sz =sizeof (exception_handlers); + vec_sz =sizeof (exception_handlers);if (pcpu_handlers[cpu])return ;@@ -305,8 +309,8 @@ static void setup_tlb_handler(int cpu)csr_write64 (pcpu_handlers[cpu],LOONGARCH_CSR_EENTRY );csr_write64 (pcpu_handlers[cpu],LOONGARCH_CSR_MERRENTRY );csr_write64 (pcpu_handlers[cpu] +80 *VECSIZE ,LOONGARCH_CSR_TLBRENTRY ); - }#endif + } }void tlb_init (int cpu)
Greg KH
maintainerQuoted 19 lines · Huacai Chen
Hi, Greg,
Quoted 16 lines · On Tue, Jan 30, 2024 at 12:53 AM <[email protected]> wrote:
The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkoutFETCH_HEAD
git cherry-pick -x5056c596c3d1848021a4eaa76ee42f4c05c50346
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024012911-outright-violin-e677@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Quoted 5 lines
Quoted 3 lines
Possible dependencies:
5056c596c3d1("LoongArch/smp: Callrcutree_report_cpu_starting()attlb_init()")Similar to the commit which it fixes, please change
rcutree_report_cpu_starting()torcu_cpu_starting()in the code.
I need a backported patch for that please :)
Huacai Chen
maintainerQuoted 21 lines · Greg KH
Quoted 19 lines · Huacai Chen
Hi, Greg,
Quoted 16 lines · On Tue, Jan 30, 2024 at 12:53 AM <[email protected]> wrote:
The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkoutFETCH_HEAD
git cherry-pick -x5056c596c3d1848021a4eaa76ee42f4c05c50346
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024012911-outright-violin-e677@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Possible dependencies:
5056c596c3d1("LoongArch/smp: Callrcutree_report_cpu_starting()attlb_init()")Similar to the commit which it fixes, please change
rcutree_report_cpu_starting()torcu_cpu_starting()in the code.I need a backported patch for that please :)
OK, wait a minute.
https://lore.kernel.org/loongarch/[email protected]/T/#u
Huacai