]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
LoongArch: Use physical addresses for CSR_MERRENTRY/CSR_TLBRENTRY
authorHuacai Chen <chenhuacai@loongson.cn>
Sun, 9 Nov 2025 08:02:00 +0000 (16:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:36:02 +0000 (10:36 +0100)
commit 4e67526840fc55917581b90f6a4b65849a616dd8 upstream.

Now we use virtual addresses to fill CSR_MERRENTRY/CSR_TLBRENTRY, but
hardware hope physical addresses. Now it works well because the high
bits are ignored above PA_BITS (48 bits), but explicitly use physical
addresses can avoid potential bugs. So fix it.

Cc: stable@vger.kernel.org
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/loongarch/kernel/traps.c

index 00424b7e34c1559b87b42c859d9ea4d0e9de5752..d827ed3178b029bd1098909932c93414cc919753 100644 (file)
@@ -1123,8 +1123,8 @@ static void configure_exception_vector(void)
        tlbrentry = (unsigned long)exception_handlers + 80*VECSIZE;
 
        csr_write64(eentry, LOONGARCH_CSR_EENTRY);
-       csr_write64(eentry, LOONGARCH_CSR_MERRENTRY);
-       csr_write64(tlbrentry, LOONGARCH_CSR_TLBRENTRY);
+       csr_write64(__pa(eentry), LOONGARCH_CSR_MERRENTRY);
+       csr_write64(__pa(tlbrentry), LOONGARCH_CSR_TLBRENTRY);
 }
 
 void per_cpu_trap_init(int cpu)