OSDN Git Service

powerpc/kuap: Wire-up KUAP on 44x
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 19 Oct 2021 07:29:29 +0000 (09:29 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 9 Dec 2021 11:41:20 +0000 (22:41 +1100)
This adds KUAP support to 44x. This is done by checking
the content of SPRN_PID at the time it is read and written
into SPRN_MMUCR.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/7d6c3f1978a26feada74b084f651e8cf1e3b3a47.1634627931.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/head_44x.S
arch/powerpc/platforms/Kconfig.cputype

index 916f7e9..b73a564 100644 (file)
@@ -334,6 +334,10 @@ interrupt_base:
        mfspr   r12,SPRN_MMUCR
        mfspr   r13,SPRN_PID            /* Get PID */
        rlwimi  r12,r13,0,24,31         /* Set TID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r13,0
+       beq     2f                      /* KUAP Fault */
+#endif
 
 4:
        mtspr   SPRN_MMUCR,r12
@@ -444,6 +448,10 @@ interrupt_base:
        mfspr   r12,SPRN_MMUCR
        mfspr   r13,SPRN_PID            /* Get PID */
        rlwimi  r12,r13,0,24,31         /* Set TID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r13,0
+       beq     2f                      /* KUAP Fault */
+#endif
 
 4:
        mtspr   SPRN_MMUCR,r12
@@ -572,6 +580,10 @@ finish_tlb_load_44x:
 3:     mfspr   r11,SPRN_SPRG3
        lwz     r11,PGDIR(r11)
        mfspr   r12,SPRN_PID            /* Get PID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r12,0
+       beq     2f                      /* KUAP Fault */
+#endif
 4:     mtspr   SPRN_MMUCR,r12          /* Set MMUCR */
 
        /* Mask of required permission bits. Note that while we
@@ -669,6 +681,10 @@ finish_tlb_load_44x:
 3:     mfspr   r11,SPRN_SPRG_THREAD
        lwz     r11,PGDIR(r11)
        mfspr   r12,SPRN_PID            /* Get PID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r12,0
+       beq     2f                      /* KUAP Fault */
+#endif
 4:     mtspr   SPRN_MMUCR,r12          /* Set MMUCR */
 
        /* Make up the required permissions */
index 95eb730..3f00e75 100644 (file)
@@ -64,6 +64,7 @@ config 44x
        select PHYS_64BIT
        select PPC_HAVE_KUEP
        select PPC_KUEP
+       select PPC_HAVE_KUAP
 
 endchoice