Subject: Re: [PATCH] powerpc/pseries: Kill all prefetch streams on context switch

From: Michael Ellerman <[email-masked]>
Date: Sun, 2 Jun 2013 01:13:28 +1000

On Thu, May 30, 2013 at 03:34:27PM +1000, Michael Neuling wrote:
> On context switch, we should have no prefetch streams leak from one
> userspace process to another.  This frees up prefetch resources for the
> next process.
> 
> Based on patch from Milton Miller.
> 
> Signed-off-by: Michael Neuling <[email-masked]>
> 
> diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
> index cea8496..2f1b6c5 100644
> --- a/arch/powerpc/include/asm/ppc_asm.h
> +++ b/arch/powerpc/include/asm/ppc_asm.h
> @@ -523,6 +523,17 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
>  #define PPC440EP_ERR42
>  #endif
>  
> +/* The following stops all load and store data streams associated with stream
> + * ID (ie. streams created explicitly).  The embedded and server mnemonics for
> + * dcbt are different so we use machine "power4" here explicitly.
> + */
> +#define DCBT_STOP_ALL_STREAM_IDS(scratch)	\
> +.machine push ;					\
> +.machine "power4" ;				\
> +       lis     scratch,0x60000000@h;		\
> +       dcbt    r0,scratch,0b01010;		\
> +.machine pop

I don't see why we need the macro, ie. just stick this code in
entry_64.S directly.

cheers