Nicholas Piggin <npig...@gmail.com> writes:

> This will get a bit more complicated in future patches. Move it
> into the helper function.
>
> Signed-off-by: Nicholas Piggin <npig...@gmail.com>

Reviewed-by: Fabiano Rosas <faro...@linux.ibm.com>

> ---
>  arch/powerpc/kvm/book3s_hv_nested.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c 
> b/arch/powerpc/kvm/book3s_hv_nested.c
> index 0cd0e7aad588..2fe1fea4c934 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -134,6 +134,16 @@ static void save_hv_return_state(struct kvm_vcpu *vcpu, 
> int trap,
>
>  static void sanitise_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state 
> *hr)
>  {
> +     struct kvmppc_vcore *vc = vcpu->arch.vcore;
> +     u64 mask;
> +
> +     /*
> +      * Don't let L1 change LPCR bits for the L2 except these:
> +      */
> +     mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
> +             LPCR_LPES | LPCR_MER;
> +     hr->lpcr = (vc->lpcr & ~mask) | (hr->lpcr & mask);
> +
>       /*
>        * Don't let L1 enable features for L2 which we've disabled for L1,
>        * but preserve the interrupt cause field.
> @@ -271,8 +281,6 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>       u64 hv_ptr, regs_ptr;
>       u64 hdec_exp;
>       s64 delta_purr, delta_spurr, delta_ic, delta_vtb;
> -     u64 mask;
> -     unsigned long lpcr;
>
>       if (vcpu->kvm->arch.l1_ptcr == 0)
>               return H_NOT_AVAILABLE;
> @@ -321,9 +329,7 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>       vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
>       vcpu->arch.regs = l2_regs;
>       vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
> -     mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
> -             LPCR_LPES | LPCR_MER;
> -     lpcr = (vc->lpcr & ~mask) | (l2_hv.lpcr & mask);
> +
>       sanitise_hv_regs(vcpu, &l2_hv);
>       restore_hv_regs(vcpu, &l2_hv);
>
> @@ -335,7 +341,7 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>                       r = RESUME_HOST;
>                       break;
>               }
> -             r = kvmhv_run_single_vcpu(vcpu, hdec_exp, lpcr);
> +             r = kvmhv_run_single_vcpu(vcpu, hdec_exp, l2_hv.lpcr);
>       } while (is_kvmppc_resume_guest(r));
>
>       /* save L2 state for return */

Reply via email to