linux/arch/powerpc/platforms
Michael Neuling 5080332c2c powerpc/64s: Add workaround for P9 vector CI load issue
POWER9 DD2.1 and earlier has an issue where some cache inhibited
vector load will return bad data. The workaround is two part, one
firmware/microcode part triggers HMI interrupts when hitting such
loads, the other part is this patch which then emulates the
instructions in Linux.

The affected instructions are limited to lxvd2x, lxvw4x, lxvb16x and
lxvh8x.

When an instruction triggers the HMI, all threads in the core will be
sent to the HMI handler, not just the one running the vector load.

In general, these spurious HMIs are detected by the emulation code and
we just return back to the running process. Unfortunately, if a
spurious interrupt occurs on a vector load that's to normal memory we
have no way to detect that it's spurious (unless we walk the page
tables, which is very expensive). In this case we emulate the load but
we need do so using a vector load itself to ensure 128bit atomicity is
preserved.

Some additional debugfs emulated instruction counters are added also.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[mpe: Switch CONFIG_PPC_BOOK3S_64 to CONFIG_VSX to unbreak the build]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-09-27 08:23:22 +10:00
..
4xx powerpc/4xx: Constify cpm_suspend_ops 2017-08-31 19:56:33 +10:00
8xx powerpc/8xx: Fix two CONFIG_8xx left behind 2017-08-14 21:57:33 +10:00
40x powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
44x powerpc/44x: Move 44x machine check handlers into platforms/44x 2017-08-10 23:31:24 +10:00
52xx powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
82xx powerpc/e8248e: Select PHYLIB only if NETDEVICES is enabled 2016-09-24 23:59:47 -05:00
83xx powerpc/83xx: Use sizeof correct type when ioremapping 2017-08-31 14:26:05 +10:00
85xx powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
86xx powerpc: Add struct smp_ops_t.cause_nmi_ipi operation 2017-04-28 21:02:25 +10:00
512x powerpc/512x: Constify clk_div_tables 2017-08-31 14:26:06 +10:00
amigaone powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
cell powerpc updates for 4.14 2017-09-07 10:15:40 -07:00
chrp powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
embedded6xx powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
maple powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
pasemi powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
powermac powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
powernv powerpc/64s: Add workaround for P9 vector CI load issue 2017-09-27 08:23:22 +10:00
ps3 powerpc: Squash lines for simple wrapper functions 2017-08-31 14:26:42 +10:00
pseries powerpc/pseries: Fix parent_dn reference leak in add_dt_node() 2017-09-21 19:33:16 +10:00
fsl_uli1575.c of/irq: Refactor interrupt-map parsing 2013-10-24 11:43:04 +01:00
Kconfig powerpc/book3s64: Move PPC_DT_CPU_FTRs and enable it by default 2017-06-08 20:42:57 +10:00
Kconfig.cputype powerpc/8xx: remove CONFIG_8xx 2017-08-10 23:32:17 +10:00
Makefile powerpc/4xx: Create 4xx pseudo-platform in platforms/4xx 2017-08-10 23:31:30 +10:00