[PATCH v1 12/12] KVM: PPC: Book3S HV: Ensure MSR[HV] is always clear in guest MSR
Fabiano Rosas
farosas at linux.ibm.com
Sat Apr 17 04:34:49 AEST 2021
Nicholas Piggin <npiggin at gmail.com> writes:
> Rather than clear the HV bit from the MSR at guest entry, make it clear
> that the hypervisor does not allow the guest to set the bit.
>
> The HV clear is kept in guest entry for now, but a future patch will
> warn if it is set.
>
> Acked-by: Paul Mackerras <paulus at ozlabs.org>
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
Reviewed-by: Fabiano Rosas <farosas at linux.ibm.com>
> ---
> arch/powerpc/kvm/book3s_hv_builtin.c | 4 ++--
> arch/powerpc/kvm/book3s_hv_nested.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_builtin.c b/arch/powerpc/kvm/book3s_hv_builtin.c
> index 41cb03d0bde4..7a0e33a9c980 100644
> --- a/arch/powerpc/kvm/book3s_hv_builtin.c
> +++ b/arch/powerpc/kvm/book3s_hv_builtin.c
> @@ -662,8 +662,8 @@ static void kvmppc_end_cede(struct kvm_vcpu *vcpu)
>
> void kvmppc_set_msr_hv(struct kvm_vcpu *vcpu, u64 msr)
> {
> - /* Guest must always run with ME enabled. */
> - msr = msr | MSR_ME;
> + /* Guest must always run with ME enabled, HV disabled. */
> + msr = (msr | MSR_ME) & ~MSR_HV;
>
> /*
> * Check for illegal transactional state bit combination
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index fb03085c902b..60724f674421 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -344,8 +344,8 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
> vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
> vcpu->arch.regs = l2_regs;
>
> - /* Guest must always run with ME enabled. */
> - vcpu->arch.shregs.msr = vcpu->arch.regs.msr | MSR_ME;
> + /* Guest must always run with ME enabled, HV disabled. */
> + vcpu->arch.shregs.msr = (vcpu->arch.regs.msr | MSR_ME) & ~MSR_HV;
>
> sanitise_hv_regs(vcpu, &l2_hv);
> restore_hv_regs(vcpu, &l2_hv);
More information about the Linuxppc-dev
mailing list