]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64s: Improve RFI L1-D cache flush fallback
authorNicholas Piggin <npiggin@gmail.com>
Wed, 17 Jan 2018 13:58:18 +0000 (23:58 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 23 Jan 2018 05:16:33 +0000 (16:16 +1100)
commitd76baaa0eef52b115e275db6630276c1e343340a
tree28cdc8c18891bc84f17877cfc3ed1c3dbf7b197f
parent870b96cbf032ff9c5ea8a38b7e71c9a04f6b2e27
powerpc/64s: Improve RFI L1-D cache flush fallback

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>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/paca.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/setup_64.c
arch/powerpc/xmon/xmon.c