On Thu, Jan 11, 2018 at 06:11:36PM +0800, wei.guo.simon@xxxxxxxxx wrote: > From: Simon Guo <wei.guo.simon@xxxxxxxxx> > > Currently privilege guest will be run with TM disabled. > > Although the privilege guest cannot initiate a new transaction, > it can use tabort to terminate its problem state's transaction. > So it is still necessary to emulate tabort. for privilege guest. > > This patch adds emulation for tabort. of privilege guest. > > Tested with: > https://github.com/justdoitqd/publicFiles/blob/master/test_tabort.c > > Signed-off-by: Simon Guo <wei.guo.simon@xxxxxxxxx> > --- > arch/powerpc/include/asm/kvm_book3s.h | 1 + > arch/powerpc/kvm/book3s_emulate.c | 31 +++++++++++++++++++++++++++++++ > arch/powerpc/kvm/book3s_pr.c | 2 +- > 3 files changed, 33 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h > index 524cd82..8bd454c 100644 > --- a/arch/powerpc/include/asm/kvm_book3s.h > +++ b/arch/powerpc/include/asm/kvm_book3s.h > @@ -258,6 +258,7 @@ extern void kvmppc_copy_from_svcpu(struct kvm_vcpu *vcpu, > void kvmppc_save_tm_pr(struct kvm_vcpu *vcpu); > void kvmppc_restore_tm_pr(struct kvm_vcpu *vcpu); > void kvmppc_restore_tm_sprs(struct kvm_vcpu *vcpu); > +void kvmppc_save_tm_sprs(struct kvm_vcpu *vcpu); Why do you add this declaration, and change it from "static inline" to "inline" below, when this patch doesn't use it? Also, making it "inline" is pointless if it has a caller outside the source file where it's defined (if gcc wants to inline uses of it inside the same source file, it will do so anyway even without the "inline" keyword.) Paul.