[PATCH] LoongArch: warn when per-CPU TLB vector allocation fails

Song Hu posted 1 patch 1 week, 1 day ago
arch/loongarch/mm/tlb.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH] LoongArch: warn when per-CPU TLB vector allocation fails
Posted by Song Hu 1 week, 1 day ago
On a secondary CPU, setup_tlb_handler() allocates a NUMA-local page
for the per-CPU TLB exception vectors and silently returns if the
allocation fails.  The CPU keeps running on the shared vectors that
configure_exception_vector() installed earlier in per_cpu_trap_init(),
losing NUMA locality with nothing logged.  Warn so the fallback is
observable.

Signed-off-by: Song Hu <husong@kylinos.cn>
---
 arch/loongarch/mm/tlb.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/loongarch/mm/tlb.c b/arch/loongarch/mm/tlb.c
index aaf7d685cc2a..e5220653279c 100644
--- a/arch/loongarch/mm/tlb.c
+++ b/arch/loongarch/mm/tlb.c
@@ -297,8 +297,11 @@ static void setup_tlb_handler(int cpu)
 			return;
 
 		page = alloc_pages_node(cpu_to_node(cpu), GFP_ATOMIC, get_order(vec_sz));
-		if (!page)
+		if (!page) {
+			pr_warn("CPU%d: TLB vector allocation failed; "
+				"using shared vectors\n", cpu);
 			return;
+		}
 
 		addr = page_address(page);
 		pcpu_handlers[cpu] = (unsigned long)addr;
-- 
2.43.0
Re: [PATCH] LoongArch: warn when per-CPU TLB vector allocation fails
Posted by Huacai Chen 1 week, 1 day ago
Hi, Song,

On Fri, Jul 17, 2026 at 10:38 AM Song Hu <husong@kylinos.cn> wrote:
>
> On a secondary CPU, setup_tlb_handler() allocates a NUMA-local page
> for the per-CPU TLB exception vectors and silently returns if the
> allocation fails.  The CPU keeps running on the shared vectors that
> configure_exception_vector() installed earlier in per_cpu_trap_init(),
> losing NUMA locality with nothing logged.  Warn so the fallback is
> observable.
>
> Signed-off-by: Song Hu <husong@kylinos.cn>
> ---
>  arch/loongarch/mm/tlb.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/arch/loongarch/mm/tlb.c b/arch/loongarch/mm/tlb.c
> index aaf7d685cc2a..e5220653279c 100644
> --- a/arch/loongarch/mm/tlb.c
> +++ b/arch/loongarch/mm/tlb.c
> @@ -297,8 +297,11 @@ static void setup_tlb_handler(int cpu)
>                         return;
>
>                 page = alloc_pages_node(cpu_to_node(cpu), GFP_ATOMIC, get_order(vec_sz));
> -               if (!page)
> +               if (!page) {
> +                       pr_warn("CPU%d: TLB vector allocation failed; "
> +                               "using shared vectors\n", cpu);
>                         return;
> +               }
A warning usually make users nervous, this failure completely doesn't
hurt anything, why you want to shout loudly here?

Huacai

>
>                 addr = page_address(page);
>                 pcpu_handlers[cpu] = (unsigned long)addr;
> --
> 2.43.0
>
Re: [PATCH] LoongArch: warn when per-CPU TLB vector allocation fails
Posted by Song Hu 1 week, 1 day ago
在 2026/7/17 11:33, Huacai Chen 写道:
> Hi, Song,
>
> On Fri, Jul 17, 2026 at 10:38 AM Song Hu <husong@kylinos.cn> wrote:
>> On a secondary CPU, setup_tlb_handler() allocates a NUMA-local page
>> for the per-CPU TLB exception vectors and silently returns if the
>> allocation fails.  The CPU keeps running on the shared vectors that
>> configure_exception_vector() installed earlier in per_cpu_trap_init(),
>> losing NUMA locality with nothing logged.  Warn so the fallback is
>> observable.
>>
>> Signed-off-by: Song Hu <husong@kylinos.cn>
>> ---
>>  arch/loongarch/mm/tlb.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/loongarch/mm/tlb.c b/arch/loongarch/mm/tlb.c
>> index aaf7d685cc2a..e5220653279c 100644
>> --- a/arch/loongarch/mm/tlb.c
>> +++ b/arch/loongarch/mm/tlb.c
>> @@ -297,8 +297,11 @@ static void setup_tlb_handler(int cpu)
>>                         return;
>>
>>                 page = alloc_pages_node(cpu_to_node(cpu), GFP_ATOMIC, get_order(vec_sz));
>> -               if (!page)
>> +               if (!page) {
>> +                       pr_warn("CPU%d: TLB vector allocation failed; "
>> +                               "using shared vectors\n", cpu);
>>                         return;
>> +               }
> A warning usually make users nervous, this failure completely doesn't
> hurt anything, why you want to shout loudly here?
You're right — the fallback is completely benign and a pr_warn is too
loud for something that doesn't affect functionality.  I'll drop this
patch.

Thanks,
Song Hu
> Huacai
>
>>                 addr = page_address(page);
>>                 pcpu_handlers[cpu] = (unsigned long)addr;
>> --
>> 2.43.0
>>