summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-12-11 12:26:47 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2015-12-11 12:26:47 +0100
commite307beca2e24b58afa836d69ebbfecdd9cb832f1 (patch)
treeffcc5136c7706dfb5f21fd51a2a3a0630d3099d4 /arch
parentkvm: x86: move tracepoints outside extended quiescent state (diff)
parentKVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR (diff)
downloadlinux-e307beca2e24b58afa836d69ebbfecdd9cb832f1.tar.xz
linux-e307beca2e24b58afa836d69ebbfecdd9cb832f1.zip
Merge branch 'kvm-ppc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into kvm-master
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kvm/book3s_hv.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 54b45b73195f..a7352b59e6f9 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -224,6 +224,12 @@ static void kvmppc_core_vcpu_put_hv(struct kvm_vcpu *vcpu)
static void kvmppc_set_msr_hv(struct kvm_vcpu *vcpu, u64 msr)
{
+ /*
+ * Check for illegal transactional state bit combination
+ * and if we find it, force the TS field to a safe state.
+ */
+ if ((msr & MSR_TS_MASK) == MSR_TS_MASK)
+ msr &= ~MSR_TS_MASK;
vcpu->arch.shregs.msr = msr;
kvmppc_end_cede(vcpu);
}