arm64: cpufeature: Relocate PAN emulation report
authorKees Cook <keescook@chromium.org>
Wed, 21 Feb 2018 18:18:21 +0000 (10:18 -0800)
committerWill Deacon <will.deacon@arm.com>
Mon, 5 Mar 2018 12:06:43 +0000 (12:06 +0000)
The PAN emulation notification was only happening for non-boot CPUs
if CPU capabilities had already been configured. This seems to be the
wrong place, as it's system-wide and isn't attached to capabilities,
so its reporting didn't normally happen. Instead, report it once from
the boot CPU.

Before (missing PAN emulation report):

 SMP: Total of 4 processors activated.
 CPU features: detected feature: 32-bit EL0 Support
 CPU features: detected feature: Kernel page table isolation (KPTI)
 CPU: All CPU(s) started at EL2

After:

 SMP: Total of 4 processors activated.
 CPU features: detected feature: 32-bit EL0 Support
 CPU features: detected feature: Kernel page table isolation (KPTI)
 CPU features: emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching
 CPU: All CPU(s) started at EL2

Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/cpufeature.c

index 2985a067fc131c468b7213ed1a5b0ec6548fb1c8..64a711c493e07a2e3b3f7b58b82b991f0afb1bfc 100644 (file)
@@ -1335,9 +1335,6 @@ static void verify_local_cpu_capabilities(void)
 
        if (system_supports_sve())
                verify_sve_features();
-
-       if (system_uses_ttbr0_pan())
-               pr_info("Emulating Privileged Access Never (PAN) using TTBR0_EL1 switching\n");
 }
 
 void check_local_cpu_capabilities(void)
@@ -1396,6 +1393,9 @@ void __init setup_cpu_features(void)
        if (system_supports_32bit_el0())
                setup_elf_hwcaps(compat_elf_hwcaps);
 
+       if (system_uses_ttbr0_pan())
+               pr_info("emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching\n");
+
        sve_setup();
 
        /* Advertise that we have computed the system capabilities */