linux/arch/powerpc/kvm
Michael Ellerman d976f6807e KVM: PPC: Book3S HV: Context switch AMR on Power9
kvmhv_p9_guest_entry() implements a fast-path guest entry for Power9
when guest and host are both running with the Radix MMU.

Currently in that path we don't save the host AMR (Authority Mask
Register) value, and we always restore 0 on return to the host. That
is OK at the moment because the AMR is not used for storage keys with
the Radix MMU.

However we plan to start using the AMR on Radix to prevent the kernel
from reading/writing to userspace outside of copy_to/from_user(). In
order to make that work we need to save/restore the AMR value.

We only restore the value if it is different from the guest value,
which is already in the register when we exit to the host. This should
mean we rarely need to actually restore the value when running a
modern Linux as a guest, because it will be using the same value as
us.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Tested-by: Russell Currey <ruscur@russell.cc>
2019-02-21 13:19:52 +11:00
..
book3s_32_mmu_host.c
book3s_32_mmu.c powerpc: remove unnecessary inclusion of asm/tlbflush.h 2018-07-30 22:48:20 +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 Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
book3s_64_mmu_radix.c KVM: PPC: Book3S HV: radix: Fix uninitialized var build error 2018-12-30 14:05:13 +11:00
book3s_64_mmu.c powerpc: remove unnecessary inclusion of asm/tlbflush.h 2018-07-30 22:48:20 +10:00
book3s_64_slb.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
book3s_64_vio_hv.c KVM: PPC: Optimize clearing TCEs for sparse tables 2018-10-20 20:47:02 +11:00
book3s_64_vio.c powerpc/vfio/iommu/kvm: Do not pin device memory 2018-12-21 16:20:46 +11:00
book3s_emulate.c KVM: PPC: Book3S HV: Implement H_TLB_INVALIDATE hcall 2018-10-09 16:04:27 +11:00
book3s_exports.c
book3s_hv_builtin.c KVM: PPC: Book3S HV: Use XICS hypercalls when running as a nested hypervisor 2018-10-09 16:04:27 +11:00
book3s_hv_hmi.c
book3s_hv_interrupts.S KVM: PPC: Book3S HV: Extract PMU save/restore operations as C-callable functions 2018-10-09 16:04:27 +11:00
book3s_hv_nested.c KVM: PPC: Book3S HV: Introduce kvmhv_update_nest_rmap_rc_list() 2018-12-21 14:39:35 +11:00
book3s_hv_ras.c KVM: PPC: Book3S HV: Streamlined guest entry/exit path on P9 for radix guests 2018-10-09 16:04:27 +11:00
book3s_hv_rm_mmu.c KVM: PPC: Book3S HV: Cleanups - constify memslots, fix comments 2018-12-17 10:58:43 +11:00
book3s_hv_rm_xics.c KVM: PPC: Book3S HV: Use XICS hypercalls when running as a nested hypervisor 2018-10-09 16:04:27 +11: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 HV: Handle hypercalls correctly when nested 2018-10-09 16:04:27 +11:00
book3s_hv_tm_builtin.c KVM: PPC: Use ccr field in pt_regs struct embedded in vcpu struct 2018-10-09 16:04:27 +11:00
book3s_hv_tm.c KVM: PPC: Use ccr field in pt_regs struct embedded in vcpu struct 2018-10-09 16:04:27 +11:00
book3s_hv.c KVM: PPC: Book3S HV: Context switch AMR on Power9 2019-02-21 13:19:52 +11:00
book3s_interrupts.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10: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
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: Pass change type down to memslot commit function 2018-12-17 10:57:27 +11:00
book3s_rmhandlers.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10: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 powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
book3s_xics.c KVM: PPC: Book3S HV: Change to use DEFINE_SHOW_ATTRIBUTE macro 2018-12-14 15:39:47 +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: Book3S HV: Remove left-over code in XICS-on-XIVE emulation 2018-10-09 16:04:27 +11:00
book3s_xive.c KVM: PPC: Book3S HV: Change to use DEFINE_SHOW_ATTRIBUTE macro 2018-12-14 15:39:47 +11: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: Make kvm_set_spte_hva() return int 2018-12-21 11:28:41 +01:00
book3s.h KVM: PPC: Book3S PR: Add guard code to prevent returning to guest with PR=0 and Transactional state 2018-06-01 10:30:39 +10: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
booke.c KVM: PPC: Pass change type down to memslot commit function 2018-12-17 10:57:27 +11:00
booke.h
bookehv_interrupts.S powerpc/fsl: Flush branch predictor when entering KVM 2018-12-20 22:59:03 +11:00
e500_emulate.c powerpc/fsl: Emulate SPRN_BUCSR register 2018-12-20 22:59:03 +11:00
e500_mmu_host.c KVM: Make kvm_set_spte_hva() return int 2018-12-21 11:28:41 +01: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 powerpc: remove unnecessary inclusion of asm/tlbflush.h 2018-07-30 22:48:20 +10:00
e500.h powerpc/mm: move platform specific mmu-xxx.h in platform directories 2018-12-04 19:45:01 +11:00
e500mc.c powerpc: remove unnecessary inclusion of asm/tlbflush.h 2018-07-30 22:48:20 +10:00
emulate_loadstore.c KVM: PPC: Use ccr field in pt_regs struct embedded in vcpu struct 2018-10-09 16:04:27 +11:00
emulate.c KVM: PPC: Use exported tb_to_ns() function in decrementer emulation 2018-10-26 21:58:58 +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 treewide: surround Kconfig file paths with double quotes 2018-12-22 00:25:54 +09:00
Makefile powerpc updates for 4.20 2018-10-26 14:36:21 -07:00
mpic.c
powerpc.c PPC KVM update for 4.21 2018-12-20 14:54:09 +01:00
timing.c KVM: PPC: Use seq_puts() in kvmppc_exit_timing_show() 2018-01-11 20:36:06 +11:00
timing.h
tm.S KVM: PPC: Book3S: Rework TM save/restore code and make it C-callable 2018-10-09 16:04:27 +11:00
trace_book3s.h KVM: PPC: Book3S: Simplify external interrupt handling 2018-10-09 16:04:27 +11:00
trace_booke.h KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE 2018-11-07 23:04:38 +11:00
trace_hv.h KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE 2018-11-07 23:04:38 +11:00
trace_pr.h KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE 2018-11-07 23:04:38 +11:00
trace.h KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE 2018-11-07 23:04:38 +11:00