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 <th...@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

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to