linux_dsm_epyc7002/arch/arm64/kvm/hyp
James Morse c97e166e54 KVM: arm64: Change hyp_panic()s dependency on tpidr_el2
Make tpidr_el2 a cpu-offset for per-cpu variables in the same way the
host uses tpidr_el1. This lets tpidr_el{1,2} have the same value, and
on VHE they can be the same register.

KVM calls hyp_panic() when anything unexpected happens. This may occur
while a guest owns the EL1 registers. KVM stashes the vcpu pointer in
tpidr_el2, which it uses to find the host context in order to restore
the host EL1 registers before parachuting into the host's panic().

The host context is a struct kvm_cpu_context allocated in the per-cpu
area, and mapped to hyp. Given the per-cpu offset for this CPU, this is
easy to find. Change hyp_panic() to take a pointer to the
struct kvm_cpu_context. Wrap these calls with an asm function that
retrieves the struct kvm_cpu_context from the host's per-cpu area.

Copy the per-cpu offset from the hosts tpidr_el1 into tpidr_el2 during
kvm init. (Later patches will make this unnecessary for VHE hosts)

We print out the vcpu pointer as part of the panic message. Add a back
reference to the 'running vcpu' in the host cpu context to preserve this.

Signed-off-by: James Morse <james.morse@arm.com>
Reviewed-by: Christoffer Dall <cdall@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2018-01-13 10:44:22 +00:00
..
debug-sr.c arm64: sysreg: Move SPE registers and PSB into common header files 2017-10-18 12:53:32 +01:00
entry.S KVM: arm64: Store vcpu on the stack during __guest_enter() 2018-01-13 10:44:04 +00:00
fpsimd.S arm64: KVM: Implement fpsimd save/restore 2015-12-14 11:30:41 +00:00
hyp-entry.S KVM: arm64: Change hyp_panic()s dependency on tpidr_el2 2018-01-13 10:44:22 +00:00
Makefile Fixes for interrupt controller emulation in ARM/ARM64 and x86, plus a one-liner 2017-11-04 11:44:55 -07:00
s2-setup.c KVM: arm64: Change hyp_panic()s dependency on tpidr_el2 2018-01-13 10:44:22 +00:00
switch.c KVM: arm64: Change hyp_panic()s dependency on tpidr_el2 2018-01-13 10:44:22 +00:00
sysreg-sr.c arm64: KVM: VHE: Context switch MDSCR_EL1 2016-07-23 18:07:12 +02:00
tlb.c arm64: KVM: Add support for VPIPT I-caches 2017-03-20 16:25:45 +00:00