Hi Gustavo, On Thu, Jan 11, 2018 at 11:56:59AM -0200, Gustavo Romero wrote: > Hi Simon, > > On 01/11/2018 08:11 AM, wei.guo.simon@xxxxxxxxx wrote: > > From: Simon Guo <wei.guo.simon@xxxxxxxxx> > > > > In current days, many OS distributions have utilized transaction > > memory functionality. In PowerPC, HV KVM supports TM. But PR KVM > > does not. > > > > The drive for the transaction memory support of PR KVM is the > > openstack Continuous Integration testing - They runs a HV(hypervisor) > > KVM(as level 1) and then run PR KVM(as level 2) on top of that. > > > > This patch set add transaction memory support on PR KVM. > > Is this correct to assume that this emulation mode will just kick in on P9 > with kernel TM workarounds and HV KVM will continue to be used on POWER8 > since HV KVM is supported on POWER8 hosts? As Ben mentioned, this patch set aims to enhancement PR KVM on Power8 to support transaction memory. Thanks, - Simon > > > Regards, > Gustavo > > > Test cases performed: > > linux/tools/testing/selftests/powerpc/tm/tm-syscall > > linux/tools/testing/selftests/powerpc/tm/tm-fork > > linux/tools/testing/selftests/powerpc/tm/tm-vmx-unavail > > linux/tools/testing/selftests/powerpc/tm/tm-tmspr > > linux/tools/testing/selftests/powerpc/tm/tm-signal-msr-resv > > linux/tools/testing/selftests/powerpc/math/vsx_preempt > > linux/tools/testing/selftests/powerpc/math/fpu_signal > > linux/tools/testing/selftests/powerpc/math/vmx_preempt > > linux/tools/testing/selftests/powerpc/math/fpu_syscall > > linux/tools/testing/selftests/powerpc/math/vmx_syscall > > linux/tools/testing/selftests/powerpc/math/fpu_preempt > > linux/tools/testing/selftests/powerpc/math/vmx_signal > > linux/tools/testing/selftests/powerpc/ptrace/ptrace-tm-gpr > > linux/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-gpr > > linux/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spd-vsx > > linux/tools/testing/selftests/powerpc/ptrace/ptrace-tm-spr > > linux/tools/testing/selftests/powerpc/ptrace/ptrace-tm-vsx > > https://github.com/justdoitqd/publicFiles/blob/master/test_tbegin_pr.c > > https://github.com/justdoitqd/publicFiles/blob/master/test_tabort.c > > https://github.com/justdoitqd/publicFiles/blob/master/test_kvm_htm_cap.c > > > > Simon Guo (25): > > KVM: PPC: Book3S PR: Move kvmppc_save_tm/kvmppc_restore_tm to separate > > file > > KVM: PPC: Book3S PR: add new parameter (guest MSR) for > > kvmppc_save_tm()/kvmppc_restore_tm() > > KVM: PPC: Book3S PR: turn on FP/VSX/VMX MSR bits in kvmppc_save_tm() > > KVM: PPC: Book3S PR: add C function wrapper for > > _kvmppc_save/restore_tm() > > KVM: PPC: Book3S PR: In PR KVM suspends Transactional state when > > inject an interrupt. > > KVM: PPC: Book3S PR: PR KVM pass through MSR TM/TS bits to shadow_msr. > > KVM: PPC: Book3S PR: add TEXASR related macros > > KVM: PPC: Book3S PR: Sync TM bits to shadow msr for problem state > > guest > > KVM: PPC: Book3S PR: implement RFID TM behavior to suppress change > > from S0 to N0 > > KVM: PPC: Book3S PR: set MSR HV bit accordingly for PPC970 and others. > > KVM: PPC: Book3S PR: prevent TS bits change in kvmppc_interrupt_pr() > > powerpc: export symbol msr_check_and_set(). > > KVM: PPC: Book3S PR: adds new > > kvmppc_copyto_vcpu_tm/kvmppc_copyfrom_vcpu_tm API for PR KVM. > > KVM: PPC: Book3S PR: export tm_enable()/tm_disable/tm_abort() APIs > > KVM: PPC: Book3S PR: add kvmppc_save/restore_tm_sprs() APIs > > KVM: PPC: Book3S PR: add transaction memory save/restore skeleton for > > PR KVM > > KVM: PPC: Book3S PR: add math support for PR KVM HTM > > KVM: PPC: Book3S PR: make mtspr/mfspr emulation behavior based on > > active TM SPRs > > KVM: PPC: Book3S PR: always fail transaction in guest privilege state > > KVM: PPC: Book3S PR: enable NV reg restore for reading TM SPR at guest > > privilege state > > KVM: PPC: Book3S PR: adds emulation for treclaim. > > KVM: PPC: Book3S PR: add emulation for trechkpt in PR KVM. > > KVM: PPC: Book3S PR: add emulation for tabort. for privilege guest > > KVM: PPC: Book3S PR: add guard code to prevent returning to guest with > > PR=0 and Transactional state > > KVM: PPC: Book3S PR: enable HTM for PR KVM for KVM_CHECK_EXTENSION > > ioctl > > > > arch/powerpc/include/asm/asm-prototypes.h | 10 + > > arch/powerpc/include/asm/kvm_book3s.h | 8 + > > arch/powerpc/include/asm/kvm_host.h | 3 + > > arch/powerpc/include/asm/reg.h | 25 +- > > arch/powerpc/include/asm/tm.h | 2 - > > arch/powerpc/include/uapi/asm/tm.h | 2 +- > > arch/powerpc/kernel/process.c | 1 + > > arch/powerpc/kernel/tm.S | 12 + > > arch/powerpc/kvm/Makefile | 3 + > > arch/powerpc/kvm/book3s.h | 1 + > > arch/powerpc/kvm/book3s_64_mmu.c | 11 +- > > arch/powerpc/kvm/book3s_emulate.c | 279 +++++++++++++++++++- > > arch/powerpc/kvm/book3s_hv_rmhandlers.S | 259 ++----------------- > > arch/powerpc/kvm/book3s_pr.c | 256 +++++++++++++++++-- > > arch/powerpc/kvm/book3s_segment.S | 13 + > > arch/powerpc/kvm/powerpc.c | 3 +- > > arch/powerpc/kvm/tm.S | 379 ++++++++++++++++++++++++++++ > > arch/powerpc/mm/hash_utils_64.c | 1 + > > arch/powerpc/platforms/powernv/copy-paste.h | 3 +- > > 19 files changed, 982 insertions(+), 289 deletions(-) > > create mode 100644 arch/powerpc/kvm/tm.S > > >