summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm/book3s.h
diff options
context:
space:
mode:
authorSimon Guo2018-05-23 09:02:06 +0200
committerPaul Mackerras2018-06-01 02:30:39 +0200
commit68ab07b985764ec5be816e7054a84b7ad121afc7 (patch)
treeffbbcc23ebd5a6dff17e29fd1b0da97fc0b40f00 /arch/powerpc/kvm/book3s.h
parentKVM: PPC: Book3S PR: Add emulation for tabort. in privileged state (diff)
downloadkernel-qcow2-linux-68ab07b985764ec5be816e7054a84b7ad121afc7.tar.gz
kernel-qcow2-linux-68ab07b985764ec5be816e7054a84b7ad121afc7.tar.xz
kernel-qcow2-linux-68ab07b985764ec5be816e7054a84b7ad121afc7.zip
KVM: PPC: Book3S PR: Add guard code to prevent returning to guest with PR=0 and Transactional state
Currently PR KVM doesn't support transaction memory in guest privileged state. This patch adds a check at setting guest msr, so that we can never return to guest with PR=0 and TS=0b10. A tabort will be emulated to indicate this and fail transaction immediately. [paulus@ozlabs.org - don't change the TM_CAUSE_MISC definition, instead use TM_CAUSE_KVM_FAC_UNAV.] Signed-off-by: Simon Guo <wei.guo.simon@gmail.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Diffstat (limited to 'arch/powerpc/kvm/book3s.h')
-rw-r--r--arch/powerpc/kvm/book3s.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/book3s.h b/arch/powerpc/kvm/book3s.h
index 4ad5e287b8bc..14ef03501d21 100644
--- a/arch/powerpc/kvm/book3s.h
+++ b/arch/powerpc/kvm/book3s.h
@@ -31,4 +31,10 @@ extern int kvmppc_core_emulate_mfspr_pr(struct kvm_vcpu *vcpu,
extern int kvmppc_book3s_init_pr(void);
extern void kvmppc_book3s_exit_pr(void);
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+extern void kvmppc_emulate_tabort(struct kvm_vcpu *vcpu, int ra_val);
+#else
+static inline void kvmppc_emulate_tabort(struct kvm_vcpu *vcpu, int ra_val) {}
+#endif
+
#endif