This patch series adds debug support, a key feature missing from the KVM/arm64 port. The main idea is to keep track of whether the debug registers are "dirty" (changed by the guest) or not. In this case, perform the usual save/restore dance, for one run only. It means we only have a penalty if a guest is actively using the debug registers. The amount of registers is properly frightening, but CPUs actually only implement a subset of them. Also, there is a number of registers we don't bother emulating (things having to do with external debug and OSlock). This has been tested on a Cortex-A53/A57 platform, running both 32 and 64bit guests, on top of 3.15-rc4. This code also lives in my tree in the kvm-arm64/debug-trap branch. >From v1 [1]: - Renamed trap_wi_raz to trap_raz_wi - Renamed skip_clean_debug_state to skip_debug_state - Simplified debug state computing, moved to its own macro - Added some comment to make the logic more obvious [1]: https://lists.cs.columbia.edu/pipermail/kvmarm/2014-May/009332.html Marc Zyngier (9): arm64: KVM: rename pm_fake handler to trap_raz_wi arm64: move DBG_MDSCR_* to asm/debug-monitors.h arm64: KVM: add trap handlers for AArch64 debug registers arm64: KVM: common infrastructure for handling AArch32 CP14/CP15 arm64: KVM: use separate tables for AArch32 32 and 64bit traps arm64: KVM: check ordering of all system register tables arm64: KVM: add trap handlers for AArch32 debug registers arm64: KVM: implement lazy world switch for debug registers arm64: KVM: enable trapping of all debug registers arch/arm64/include/asm/debug-monitors.h | 19 +- arch/arm64/include/asm/kvm_asm.h | 39 ++- arch/arm64/include/asm/kvm_coproc.h | 3 +- arch/arm64/include/asm/kvm_host.h | 12 +- arch/arm64/kernel/asm-offsets.c | 1 + arch/arm64/kernel/debug-monitors.c | 9 - arch/arm64/kvm/handle_exit.c | 4 +- arch/arm64/kvm/hyp.S | 470 +++++++++++++++++++++++++++++- arch/arm64/kvm/sys_regs.c | 494 +++++++++++++++++++++++++++----- 9 files changed, 953 insertions(+), 98 deletions(-) -- 1.8.3.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html