arm64: Make the Meltdown mitigation state available
authorMarc Zyngier <maz@kernel.org>
Thu, 26 Nov 2020 17:25:30 +0000 (17:25 +0000)
committerMarc Zyngier <maz@kernel.org>
Sat, 28 Nov 2020 12:02:44 +0000 (12:02 +0000)
Our Meltdown mitigation state isn't exposed outside of cpufeature.c,
contrary to the rest of the Spectre mitigation state. As we are going
to use it in KVM, expose a arm64_get_meltdown_state() helper which
returns the same possible values as arm64_get_spectre_v?_state().

Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/spectre.h
arch/arm64/kernel/cpufeature.c

index fcdfbce302bdfb9fec12cef198139b4814e9642d..52e788981f4a268d8b087e6825203b76d922f262 100644 (file)
@@ -29,4 +29,6 @@ bool has_spectre_v4(const struct arm64_cpu_capabilities *cap, int scope);
 void spectre_v4_enable_mitigation(const struct arm64_cpu_capabilities *__unused);
 void spectre_v4_enable_task_mitigation(struct task_struct *tsk);
 
+enum mitigation_state arm64_get_meltdown_state(void);
+
 #endif /* __ASM_SPECTRE_H */
index 6f36c4f62f6945f1e74323b4987f4e2684445dcd..280b10762f6b77e15138019ac5c4d905ecd365cb 100644 (file)
@@ -2846,14 +2846,28 @@ static int __init enable_mrs_emulation(void)
 
 core_initcall(enable_mrs_emulation);
 
+enum mitigation_state arm64_get_meltdown_state(void)
+{
+       if (__meltdown_safe)
+               return SPECTRE_UNAFFECTED;
+
+       if (arm64_kernel_unmapped_at_el0())
+               return SPECTRE_MITIGATED;
+
+       return SPECTRE_VULNERABLE;
+}
+
 ssize_t cpu_show_meltdown(struct device *dev, struct device_attribute *attr,
                          char *buf)
 {
-       if (__meltdown_safe)
+       switch (arm64_get_meltdown_state()) {
+       case SPECTRE_UNAFFECTED:
                return sprintf(buf, "Not affected\n");
 
-       if (arm64_kernel_unmapped_at_el0())
+       case SPECTRE_MITIGATED:
                return sprintf(buf, "Mitigation: PTI\n");
 
-       return sprintf(buf, "Vulnerable\n");
+       default:
+               return sprintf(buf, "Vulnerable\n");
+       }
 }