[PATCH] powerpc: Fix definition of SIAR register

Thomas Huth thuth at redhat.com
Mon Apr 25 16:50:08 AEST 2016


On 08.04.2016 17:54, Thomas Huth wrote:
> The SIAR register is available twice, one time as SPR 780 (unprivileged,
> but read-only), and one time as SPR 796 (privileged, but read and write).
> The Linux kernel code currently uses SPR 780 - and while this is OK for
> reading, writing to that register of course does not work.
> Since the KVM code tries to write to this register, too (see the mtspr
> in book3s_hv_rmhandlers.S), the contents of this register sometimes get
> lost for the guests, e.g. during migration of a VM.
> To fix this issue, simply switch to the other SPR numer 796 instead.
> 
> Signed-off-by: Thomas Huth <thuth at redhat.com>
> ---
>  Note: The perf code in core-book3s.c also seems to write to the SIAR
>        SPR, so that might be affected by this issue, too - but I did
>        not test the perf code, so I'm not sure about that part.
> 
>  arch/powerpc/include/asm/reg.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
> index f5f4c66..6630420 100644
> --- a/arch/powerpc/include/asm/reg.h
> +++ b/arch/powerpc/include/asm/reg.h
> @@ -752,13 +752,13 @@
>  #define SPRN_PMC6	792
>  #define SPRN_PMC7	793
>  #define SPRN_PMC8	794
> -#define SPRN_SIAR	780
>  #define SPRN_SDAR	781
>  #define SPRN_SIER	784
>  #define   SIER_SIPR		0x2000000	/* Sampled MSR_PR */
>  #define   SIER_SIHV		0x1000000	/* Sampled MSR_HV */
>  #define   SIER_SIAR_VALID	0x0400000	/* SIAR contents valid */
>  #define   SIER_SDAR_VALID	0x0200000	/* SDAR contents valid */
> +#define SPRN_SIAR	796
>  #define SPRN_TACR	888
>  #define SPRN_TCSCR	889
>  #define SPRN_CSIGR	890

Ping!

Anybody any comments?

 Thomas



More information about the Linuxppc-dev mailing list