public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] RFC: ARM: do not handle Spectre V2 on Vexpress CA9
@ 2018-11-01 12:54 Linus Walleij
  2018-11-01 13:56 ` Robin Murphy
  0 siblings, 1 reply; 6+ messages in thread
From: Linus Walleij @ 2018-11-01 12:54 UTC (permalink / raw)
  To: linux-arm-kernel

Since the introduction of the Spectre V2 fixes for ARMv7,
especially the BPIALL workaround, the Versatile Express CA9
with its fragile CA9 core tile simply doesn't boot for me
anymore.

If I turn on low level debugging the boot log stops short
at:

smp: Bringing up secondary CPUs ...
GIC: PPI13 is secure or misconfigured
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU1: Spectre v2: using BPIALL workaround
GIC: PPI13 is secure or misconfigured
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU1: Spectre v2: using BPIALL workaround

This is pretty much consistent behaviour, I think it managed
to boot at one point but these fixes are definately rubbing
this CPU the wrong way.

This (not elegant) workaround tries to work around it by
simply not applying any Spectre v2 fixes on the ARM
Vexpress CA9. My other A9 platforms seem to work fine
with the fixes, so this appears to be related to the
fragility of the core tile on this one reference design,
so maybe it would be acceptable to mitigate it like this.

I don't know how much this could be related to my particular
specimen, it would be great if others with this machine
could verify the problem.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 arch/arm/mm/proc-v7-bugs.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mm/proc-v7-bugs.c b/arch/arm/mm/proc-v7-bugs.c
index 5544b82a2e7a..10b9eedc3b37 100644
--- a/arch/arm/mm/proc-v7-bugs.c
+++ b/arch/arm/mm/proc-v7-bugs.c
@@ -3,6 +3,7 @@
 #include <linux/kernel.h>
 #include <linux/psci.h>
 #include <linux/smp.h>
+#include <linux/of.h>
 
 #include <asm/cp15.h>
 #include <asm/cputype.h>
@@ -42,6 +43,11 @@ static void cpu_v7_spectre_init(void)
 	const char *spectre_v2_method = NULL;
 	int cpu = smp_processor_id();
 
+	if (of_machine_is_compatible("arm,vexpress,v2p-ca9")) {
+		pr_err("CPU%u: Spectre v2: can't handle mitigations, CPU is vulnerable\n", cpu);
+		return;
+	}
+
 	if (per_cpu(harden_branch_predictor_fn, cpu))
 		return;
 
-- 
2.17.2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-11-01 21:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-01 12:54 [PATCH] RFC: ARM: do not handle Spectre V2 on Vexpress CA9 Linus Walleij
2018-11-01 13:56 ` Robin Murphy
2018-11-01 14:01   ` Sudeep Holla
2018-11-01 15:11     ` Linus Walleij
2018-11-01 17:25   ` Russell King - ARM Linux
2018-11-01 21:36     ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox