KVM: arm64: Write arch.mdcr_el2 changes since last vcpu_load on VHE
authorAndrew Murray <andrew.murray@arm.com>
Fri, 17 Jan 2020 13:43:24 +0000 (13:43 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 22 Jan 2020 18:38:04 +0000 (18:38 +0000)
commit4942dc6638b07b5326b6d2faa142635c559e7cd5
tree7bcc444ca4f3d2dd63e0176d28b7a8b1596deae4
parentdef9d2780727cec3313ed3522d0123158d87224d
KVM: arm64: Write arch.mdcr_el2 changes since last vcpu_load on VHE

On VHE systems arch.mdcr_el2 is written to mdcr_el2 at vcpu_load time to
set options for self-hosted debug and the performance monitors
extension.

Unfortunately the value of arch.mdcr_el2 is not calculated until
kvm_arm_setup_debug() in the run loop after the vcpu has been loaded.
This means that the initial brief iterations of the run loop use a zero
value of mdcr_el2 - until the vcpu is preempted. This also results in a
delay between changes to vcpu->guest_debug taking effect.

Fix this by writing to mdcr_el2 in kvm_arm_setup_debug() on VHE systems
when a change to arch.mdcr_el2 has been detected.

Fixes: d5a21bcc2995 ("KVM: arm64: Move common VHE/non-VHE trap config in separate functions")
Cc: <stable@vger.kernel.org> # 4.17.x-
Suggested-by: James Morse <james.morse@arm.com>
Acked-by: Will Deacon <will@kernel.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Andrew Murray <andrew.murray@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kvm/debug.c