]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
LoongArch: Move __arch_cpu_idle() to .cpuidle.text section
authorHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 May 2025 14:17:52 +0000 (22:17 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 May 2025 14:17:52 +0000 (22:17 +0800)
Now arch_cpu_idle() is annotated with __cpuidle which means it is in
the .cpuidle.text section, but __arch_cpu_idle() isn't. Thus, fix the
missing .cpuidle.text section assignment for __arch_cpu_idle() in order
to correct backtracing with nmi_backtrace().

The principle is similar to the commit 97c8580e85cf81c ("MIPS: Annotate
cpu_wait implementations with __cpuidle")

Cc: stable@vger.kernel.org
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kernel/genex.S

index 4f09121417818d2ed1a064ab3e95b4ab3c3a2fd7..733a7665e434dc7a2570039bf813f0eb96f661d8 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/stackframe.h>
 #include <asm/thread_info.h>
 
+       .section .cpuidle.text, "ax"
        .align  5
 SYM_FUNC_START(__arch_cpu_idle)
        /* start of idle interrupt region */
@@ -31,14 +32,16 @@ SYM_FUNC_START(__arch_cpu_idle)
         */
        idle    0
        /* end of idle interrupt region */
-1:     jr      ra
+idle_exit:
+       jr      ra
 SYM_FUNC_END(__arch_cpu_idle)
+       .previous
 
 SYM_CODE_START(handle_vint)
        UNWIND_HINT_UNDEFINED
        BACKUP_T0T1
        SAVE_ALL
-       la_abs  t1, 1b
+       la_abs  t1, idle_exit
        LONG_L  t0, sp, PT_ERA
        /* 3 instructions idle interrupt region */
        ori     t0, t0, 0b1100