v2 can be found at [1]. Patch #1 in this series is new. Tested on an odroid-c4 with VHE. vcpu->arch.mdcr_el2 is calculated to be 0x84e66. Without this patch, reading MDCR_EL2 after the first vcpu_load() in kvm_arch_vcpu_ioctl_run() returns 0, subsequent reads return 0xe66 (FEAT_TFF and FEAT_SPE are not implemented by the PE). With this patch, all reads, including the first time the VCPU is run, return 0xe66. Also tested on the odroid-c4 board with a host compiled with CONFIG_DEBUG_PREEMPT=y by running 2 VMs in parallel, saw no errors in dmesg. Changes in v3: * Patch #1 ("Documentation: KVM: Document KVM_GUESTDBG_USE_HW control flag for arm64") is new. * Rebased on top of v5.12-rc6. * kvm_arm_setup_mdcr_el2() uses __this_cpu_read() to read the host's MDCR_EL2 value and kvm_arm_vcpu_init_debug() calls it with preemption disabled. * Rewrote the condition for setting MDCR_EL2.TDA with the intention to make it clearer (to be decided if that's indeed the case). Changes in v2: * Moved kvm_arm_vcpu_init_debug() earlier in kvm_vcpu_first_run_init() so vcpu->arch.mdcr_el2 is calculated even if kvm_vgic_map_resources() fails. * Added comment to kvm_arm_setup_mdcr_el2 to explain what testing vcpu->guest_debug means. v1 can be found at [2]. [1] https://www.spinics.net/lists/kvm-arm/msg45999.html [2] https://www.spinics.net/lists/kvm-arm/msg42959.html Alexandru Elisei (2): Documentation: KVM: Document KVM_GUESTDBG_USE_HW control flag for arm64 KVM: arm64: Initialize VCPU mdcr_el2 before loading it Documentation/virt/kvm/api.rst | 3 +- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/arm.c | 2 + arch/arm64/kvm/debug.c | 88 +++++++++++++++++++++---------- 4 files changed, 65 insertions(+), 29 deletions(-) -- 2.31.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm