On Thu, Aug 29, 2019 at 05:03:46PM +0530, Viresh Kumar wrote: > From: Will Deacon <will.deacon@xxxxxxx> > > commit 669474e772b952b14f4de4845a1558fd4c0414a4 upstream. > > For CPUs capable of data value prediction, CSDB waits for any outstanding > predictions to architecturally resolve before allowing speculative execution > to continue. Provide macros to expose it to the arch code. > > Reviewed-by: Mark Rutland <mark.rutland@xxxxxxx> > Signed-off-by: Will Deacon <will.deacon@xxxxxxx> > Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx> > Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx> Reviewed-by: Mark Rutland <mark.rutland@xxxxxxx> [v4.4 backport] Mark. > --- > arch/arm64/include/asm/assembler.h | 7 +++++++ > arch/arm64/include/asm/barrier.h | 2 ++ > 2 files changed, 9 insertions(+) > > diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h > index f68abb17aa4b..683c2875278f 100644 > --- a/arch/arm64/include/asm/assembler.h > +++ b/arch/arm64/include/asm/assembler.h > @@ -95,6 +95,13 @@ > dmb \opt > .endm > > +/* > + * Value prediction barrier > + */ > + .macro csdb > + hint #20 > + .endm > + > #define USER(l, x...) \ > 9999: x; \ > .section __ex_table,"a"; \ > diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h > index f2d2c0bbe21b..574486634c62 100644 > --- a/arch/arm64/include/asm/barrier.h > +++ b/arch/arm64/include/asm/barrier.h > @@ -28,6 +28,8 @@ > #define dmb(opt) asm volatile("dmb " #opt : : : "memory") > #define dsb(opt) asm volatile("dsb " #opt : : : "memory") > > +#define csdb() asm volatile("hint #20" : : : "memory") > + > #define mb() dsb(sy) > #define rmb() dsb(ld) > #define wmb() dsb(st) > -- > 2.21.0.rc0.269.g1a574e7a288b >