Subject: [PATCH] arm64: kvm: Prevent restoring stale PMSCR_EL1 for vcpu

From: [email-masked] (Will Deacon)
Date: Wed, 6 Dec 2017 17:25:51 +0000

On Wed, Dec 06, 2017 at 05:09:49PM +0000, Julien Thierry wrote:
> When VHE is not present, KVM needs to save and restores PMSCR_EL1 when
> possible. If SPE is used by the host, value of PMSCR_EL1 cannot be saved
> for the guest.
> If the host starts using SPE between two save+restore on the same vcpu,
> restore will write the value of PMSCR_EL1 read during the first save.
> 
> Make sure __debug_save_spe_nvhe clears the value of the saved PMSCR_EL1
> when the guest cannot use SPE.

Ok, so the problem is that we have a stale (non-zero) saved pmscr_el1,
and therefore the restore code unconditionally restores that even though
SPE is no longer in use by the host. Well spotted!

> Signed-off-by: Julien Thierry <[email-masked]>
> Cc: Christoffer Dall <[email-masked]>
> Cc: Marc Zyngier <[email-masked]>
> Cc: Catalin Marinas <[email-masked]>
> Cc: Will Deacon <[email-masked]>
> Cc: <[email-masked]>
> ---
>  arch/arm64/kvm/hyp/debug-sr.c | 3 +++
>  1 file changed, 3 insertions(+)

Reviewed-by: Will Deacon <[email-masked]>

Will