Message ID | 20210323010305.1045293-12-npiggin@gmail.com |
---|---|
State | New |
Headers | show |
Series | KVM: PPC: Book3S: C-ify the P9 entry/exit code | expand |
On Tue, Mar 23, 2021 at 11:02:30AM +1000, Nicholas Piggin wrote: > 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's not present. Will warn if it *is* present, surely? > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Acked-by: Paul Mackerras <paulus@ozlabs.org>
Excerpts from Paul Mackerras's message of March 31, 2021 2:58 pm: > On Tue, Mar 23, 2021 at 11:02:30AM +1000, Nicholas Piggin wrote: >> 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's not present. > > Will warn if it *is* present, surely? Just making sure you were awake, definitely wasn't a copy-paste bug... Thanks, Nick > >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > Acked-by: Paul Mackerras <paulus@ozlabs.org> >
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 886c7fa86add..d192e799c0af 100644 --- a/arch/powerpc/kvm/book3s_hv_nested.c +++ b/arch/powerpc/kvm/book3s_hv_nested.c @@ -329,8 +329,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);
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's not present. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/kvm/book3s_hv_builtin.c | 4 ++-- arch/powerpc/kvm/book3s_hv_nested.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)