1
0
Fork 0
remarkable-linux/arch/powerpc
Nicholas Piggin ec0084d082 powerpc/64s: Improve RFI L1-D cache flush fallback
commit bdcb1aefc5 upstream.

The fallback RFI flush is used when firmware does not provide a way
to flush the cache. It's a "displacement flush" that evicts useful
data by displacing it with an uninteresting buffer.

The flush has to take care to work with implementation specific cache
replacment policies, so the recipe has been in flux. The initial
slow but conservative approach is to touch all lines of a congruence
class, with dependencies between each load. It has since been
determined that a linear pattern of loads without dependencies is
sufficient, and is significantly faster.

Measuring the speed of a null syscall with RFI fallback flush enabled
gives the relative improvement:

P8 - 1.83x
P9 - 1.75x

The flush also becomes simpler and more adaptable to different cache
geometries.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Backport to 4.9]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-02-25 11:05:50 +01:00
..
boot powerpc/corenet: explicitly disable the SDHC controller on kmcoge4 2017-11-15 15:53:13 +01:00
configs Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux into next 2016-10-11 20:07:56 +11:00
crypto crypto: hash - annotate algorithms taking optional key 2018-02-25 11:05:43 +01:00
include powerpc/64s: Improve RFI L1-D cache flush fallback 2018-02-25 11:05:50 +01:00
kernel powerpc/64s: Improve RFI L1-D cache flush fallback 2018-02-25 11:05:50 +01:00
kvm powerpc/64s: Simple RFI macro conversions 2018-02-25 11:05:50 +01:00
lib powerpc/64s: Add support for RFI flush of L1-D cache 2018-02-13 12:35:54 +01:00
math-emu
mm powerpc/64: Invalidate process table caching after setting process table 2017-12-14 09:28:17 +01:00
net powerpc/bpf: Add support for bpf constant blinding 2016-10-04 20:33:20 +11:00
oprofile powerpc/sparse: Make a bunch of things static 2016-09-13 17:35:47 +10:00
perf powerpc/perf: Fix oops when grouping different pmu events 2018-02-25 11:05:47 +01:00
platforms powerpc/powernv: Check device-tree for RFI flush settings 2018-02-13 12:35:55 +01:00
scripts powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel 2016-03-07 14:53:56 +11:00
sysdev powerpc/ipic: Fix status get and status clear 2017-12-20 10:07:28 +01:00
xmon powerpc/xmon: Don't use ld on 32-bit 2016-09-13 17:37:02 +10:00
Kconfig powerpc/64s: Wire up cpu_show_meltdown() 2018-02-13 12:35:55 +01:00
Kconfig.debug powerpc/mm: Catch usage of cpu/mmu_has_feature() before jump label init 2016-08-01 11:15:06 +10:00
Makefile powerpc: Fix compiling a BE kernel with a powerpc64le toolchain 2017-12-14 09:28:17 +01:00
relocs_check.sh powerpc/64: whitelist unresolved modversions CRCs 2016-09-22 14:46:31 +02:00