arm64: cpufeature: Fix CPU_OUT_OF_SPEC taint for uniform systems
authorWill Deacon <will.deacon@arm.com>
Mon, 5 Jun 2017 10:40:23 +0000 (11:40 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 5 Jun 2017 10:40:23 +0000 (11:40 +0100)
Commit 3fde2999fac5 ("arm64: cpufeature: Don't dump useless backtrace on
CPU_OUT_OF_SPEC") changed the cpufeature detection code to use add_taint
instead of WARN_TAINT_ONCE when detecting a heterogeneous system with
mismatched feature support. Unfortunately, this resulted in all systems
getting the taint, regardless of any feature mismatch.

This patch fixes the problem by conditionalising the taint on detecting
a feature mismatch.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/cpufeature.c

index 22f554320581a18490ed2ea3594d607d6f7df948..55d5c72a507d167f1bbb72dd15b55d1627b5f154 100644 (file)
@@ -639,8 +639,10 @@ void update_cpu_features(int cpu,
         * Mismatched CPU features are a recipe for disaster. Don't even
         * pretend to support them.
         */
-       pr_warn_once("Unsupported CPU feature variation detected.\n");
-       add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK);
+       if (taint) {
+               pr_warn_once("Unsupported CPU feature variation detected.\n");
+               add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK);
+       }
 }
 
 u64 read_sanitised_ftr_reg(u32 id)