Hi Paul, On Tue, Jan 23, 2018 at 08:36:44PM +1100, Paul Mackerras wrote: > On Thu, Jan 11, 2018 at 06:11:35PM +0800, wei.guo.simon@xxxxxxxxx wrote: > > From: Simon Guo <wei.guo.simon@xxxxxxxxx> > > > > This patch adds host emulation when guest PR KVM executes "trechkpt.", > > which is a privileged instruction and will trap into host. > > > > We firstly copy vcpu ongoing content into vcpu tm checkpoint > > content, then perform kvmppc_restore_tm_pr() to do trechkpt. > > with updated vcpu tm checkpoint vals. > > > > Signed-off-by: Simon Guo <wei.guo.simon@xxxxxxxxx> > > [snip] > > > +static void kvmppc_emulate_trchkpt(struct kvm_vcpu *vcpu) > > +{ > > + unsigned long guest_msr = kvmppc_get_msr(vcpu); > > + > > + preempt_disable(); > > + vcpu->arch.save_msr_tm = MSR_TS_S; > > + vcpu->arch.save_msr_tm &= ~(MSR_FP | MSR_VEC | MSR_VSX); > > This looks odd, since you are clearing bits when you have just set > save_msr_tm to a constant value that doesn't have these bits set. > This could be taken as a sign that the previous line has a bug and you > meant "|=" or something similar instead of "=". I think you probably > did mean "=", in which case you should remove the line clearing > FP/VEC/VSX. I will rework and remove "save_msr_tm" from the code. Thanks, - Simon