arm64: KVM: enable trapping of all debug registers
authorMarc Zyngier <marc.zyngier@arm.com>
Thu, 24 Apr 2014 09:32:03 +0000 (10:32 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 11 Jul 2014 11:57:46 +0000 (04:57 -0700)
Enable trapping of the debug registers, preventing the guests to
mess with the host state (and allowing guests to use the debug
infrastructure as well).

Reviewed-by: Anup Patel <anup.patel@linaro.org>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/kvm/hyp.S

index 100494b..b72aa9f 100644 (file)
        mrs     x2, mdcr_el2
        and     x2, x2, #MDCR_EL2_HPMN_MASK
        orr     x2, x2, #(MDCR_EL2_TPM | MDCR_EL2_TPMCR)
+       orr     x2, x2, #(MDCR_EL2_TDRA | MDCR_EL2_TDOSA)
+
+       // Check for KVM_ARM64_DEBUG_DIRTY, and set debug to trap
+       // if not dirty.
+       ldr     x3, [x0, #VCPU_DEBUG_FLAGS]
+       tbnz    x3, #KVM_ARM64_DEBUG_DIRTY_SHIFT, 1f
+       orr     x2, x2,  #MDCR_EL2_TDA
+1:
        msr     mdcr_el2, x2
 .endm