arm64: enable Permission Indirection Extension (PIE)
authorJoey Gouly <joey.gouly@arm.com>
Tue, 6 Jun 2023 14:58:55 +0000 (15:58 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 6 Jun 2023 15:52:41 +0000 (16:52 +0100)
Now that the necessary changes have been made, set the Permission Indirection
registers and enable the Permission Indirection Extension.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20230606145859.697944-17-joey.gouly@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/proc.S

index 9513a8d2ce0e15ab01b12444893c0589b1908b03..2baeec419f62d19e4c0196a11dce83618aa08065 100644 (file)
@@ -454,6 +454,21 @@ SYM_FUNC_START(__cpu_setup)
 #endif /* CONFIG_ARM64_HW_AFDBM */
        msr     mair_el1, mair
        msr     tcr_el1, tcr
+
+       mrs_s   x1, SYS_ID_AA64MMFR3_EL1
+       ubfx    x1, x1, #ID_AA64MMFR3_EL1_S1PIE_SHIFT, #4
+       cbz     x1, .Lskip_indirection
+
+       mov_q   x0, PIE_E0
+       msr     REG_PIRE0_EL1, x0
+       mov_q   x0, PIE_E1
+       msr     REG_PIR_EL1, x0
+
+       mov     x0, TCR2_EL1x_PIE
+       msr     REG_TCR2_EL1, x0
+
+.Lskip_indirection:
+
        /*
         * Prepare SCTLR
         */