linux/arch/powerpc/kvm
Simon Guo 5706340a33 KVM: PPC: Book3S PR: Always fail transactions in guest privileged state
Currently the kernel doesn't use transaction memory.
And there is an issue for privileged state in the guest that:
tbegin/tsuspend/tresume/tabort TM instructions can impact MSR TM bits
without trapping into the PR host. So following code will lead to a
false mfmsr result:
	tbegin	<- MSR bits update to Transaction active.
	beq 	<- failover handler branch
	mfmsr	<- still read MSR bits from magic page with
		transaction inactive.

It is not an issue for non-privileged guest state since its mfmsr is
not patched with magic page and will always trap into the PR host.

This patch will always fail tbegin attempt for privileged state in the
guest, so that the above issue is prevented. It is benign since
currently (guest) kernel doesn't initiate a transaction.

Test case:
https://github.com/justdoitqd/publicFiles/blob/master/test_tbegin_pr.c

Signed-off-by: Simon Guo <wei.guo.simon@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2018-06-01 10:30:10 +10:00
..
book3s_32_mmu_host.c powerpc/mm: Move hash related mmu-*.h headers to book3s/ 2016-03-03 21:19:21 +11:00
book3s_32_mmu.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
book3s_32_sr.S
book3s_64_mmu_host.c * ARM: HYP mode stub supports kexec/kdump on 32-bit; improved PMU 2017-05-08 12:37:56 -07:00
book3s_64_mmu_hv.c KVM: PPC: Book3S HV: Lockless tlbie for HPT hcalls 2018-05-18 15:38:23 +10:00
book3s_64_mmu_radix.c KVM: PPC: Book3S HV: radix: Do not clear partition PTE when RC or write bits do not match 2018-05-18 15:38:23 +10:00
book3s_64_mmu.c KVM: PPC: Book3S PR: Transition to Suspended state when injecting interrupt 2018-06-01 10:29:22 +10:00
book3s_64_slb.S KVM: PPC: Book3S: Fix gas warning due to using r0 as immediate 0 2017-11-01 15:17:25 +11:00
book3s_64_vio_hv.c KVM: PPC: Add pt_regs into kvm_vcpu_arch and move vcpu->arch.gpr[] into it 2018-05-18 15:38:23 +10:00
book3s_64_vio.c KVM: PPC: Book3S: Change return type to vm_fault_t 2018-05-17 16:41:51 +10:00
book3s_emulate.c KVM: PPC: Book3S PR: Always fail transactions in guest privileged state 2018-06-01 10:30:10 +10:00
book3s_exports.c KVM: PPC: Make shared struct aka magic page guest endian 2014-05-30 14:26:21 +02:00
book3s_hv_builtin.c KVM: PPC: Book3S HV: Send kvmppc_bad_interrupt NMIs to Linux handlers 2018-05-18 15:38:23 +10:00
book3s_hv_hmi.c powerpc: move hmi.c to arch/powerpc/kvm/ 2016-09-09 16:18:07 +10:00
book3s_hv_interrupts.S KVM: PPC: Book3S HV: Fix inaccurate comment 2018-05-17 16:36:56 +10:00
book3s_hv_ras.c Merge branch 'topic/ppc-kvm' into next 2018-01-21 22:43:43 +11:00
book3s_hv_rm_mmu.c KVM: PPC: Book3S HV: Lockless tlbie for HPT hcalls 2018-05-18 15:38:23 +10:00
book3s_hv_rm_xics.c KVM: PPC: Add pt_regs into kvm_vcpu_arch and move vcpu->arch.gpr[] into it 2018-05-18 15:38:23 +10:00
book3s_hv_rm_xive.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
book3s_hv_rmhandlers.S KVM: PPC: Book3S PR: Add C function wrapper for _kvmppc_save/restore_tm() 2018-06-01 10:29:17 +10:00
book3s_hv_tm_builtin.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
book3s_hv_tm.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
book3s_hv.c KVM: PPC: Book3S HV: Make radix handle process scoped LPID flush in C, with relocation on 2018-05-18 15:38:23 +10:00
book3s_interrupts.S KVM: PPC: Book3S PR: Fix svcpu copying with preemption enabled 2018-02-01 13:35:33 +11:00
book3s_mmu_hpte.c sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h> 2017-03-02 08:42:38 +01:00
book3s_paired_singles.c powerpc: Create disable_kernel_{fp,altivec,vsx,spe}() 2015-12-01 13:52:25 +11:00
book3s_pr_papr.c KVM: PPC: Book3S PR: Enable in-kernel TCE handlers for PR KVM 2017-10-14 16:38:19 +11:00
book3s_pr.c KVM: PPC: Book3S PR: Always fail transactions in guest privileged state 2018-06-01 10:30:10 +10:00
book3s_rmhandlers.S powerpc/64s: Simple RFI macro conversions 2018-01-10 03:07:30 +11:00
book3s_rtas.c KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller 2017-04-27 21:37:29 +10:00
book3s_segment.S KVM: PPC: Book3S PR: Avoid changing TS bits when exiting guest 2018-06-01 10:29:42 +10:00
book3s_xics.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
book3s_xics.h KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller 2017-04-27 21:37:29 +10:00
book3s_xive_template.c KVM: PPC: Add pt_regs into kvm_vcpu_arch and move vcpu->arch.gpr[] into it 2018-05-18 15:38:23 +10:00
book3s_xive.c treewide/trivial: Remove ';;$' typo noise 2018-02-22 10:59:33 +01:00
book3s_xive.h KVM: PPC: Book3S HV: Enable use of the new XIVE "single escalation" feature 2018-01-19 12:10:21 +11:00
book3s.c KVM: PPC: Reimplement non-SIMD LOAD/STORE instruction mmio emulation with analyse_instr() input 2018-05-22 19:51:08 +10:00
book3s.h KVM: PPC: Remove unused kvm_unmap_hva callback 2018-03-19 10:08:29 +11:00
booke_emulate.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
booke_interrupts.S KVM: PPC: Remove 440 support 2014-07-28 15:23:15 +02:00
booke.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
booke.h KVM: PPC: Book3e: Add AltiVec support 2014-09-22 10:11:32 +02:00
bookehv_interrupts.S powerpc/kvm: common sw breakpoint instr across ppc 2014-09-22 10:11:36 +02:00
e500_emulate.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
e500_mmu_host.c KVM: PPC: Reimplement non-SIMD LOAD/STORE instruction mmio emulation with analyse_instr() input 2018-05-22 19:51:08 +10:00
e500_mmu_host.h
e500_mmu.c KVM: PPC: Move nip/ctr/lr/xer registers to pt_regs in kvm_vcpu_arch 2018-05-18 15:38:23 +10:00
e500.c KVM: PPC: e500: Fix some NULL dereferences on error 2017-08-31 12:36:44 +10:00
e500.h kvm: rename pfn_t to kvm_pfn_t 2016-01-15 17:56:32 -08:00
e500mc.c KVM: PPC: e500mc: Fix a NULL dereference 2017-08-31 12:36:44 +10:00
emulate_loadstore.c KVM: PPC: Reimplement LOAD_VMX/STORE_VMX instruction mmio emulation with analyse_instr() input 2018-05-22 19:53:00 +10:00
emulate.c powerpc/64s: Remove POWER4 support 2018-04-01 00:47:50 +11:00
fpu.S
irq.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig Second PPC KVM update for 4.16 2018-02-09 22:03:06 +01:00
Makefile KVM: PPC: Book3S PR: Move kvmppc_save_tm/kvmppc_restore_tm to separate file 2018-05-31 11:35:12 +10:00
mpic.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
powerpc.c KVM: PPC: Reimplement LOAD_VMX/STORE_VMX instruction mmio emulation with analyse_instr() input 2018-05-22 19:53:00 +10:00
timing.c KVM: PPC: Use seq_puts() in kvmppc_exit_timing_show() 2018-01-11 20:36:06 +11:00
timing.h KVM: PPC: Remove DCR handling 2014-07-28 19:29:15 +02:00
tm.S KVM: PPC: Book3S PR: Add C function wrapper for _kvmppc_save/restore_tm() 2018-06-01 10:29:17 +10:00
trace_book3s.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace_booke.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace_hv.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace_pr.h KVM: PPC: Remove unused kvm_unmap_hva callback 2018-03-19 10:08:29 +11:00
trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00