From: Sudeep Holla <sudeep.holla@xxxxxxx> On VHE systems, the kernel executes at EL2 and configures the profiling buffer to use the EL2&0 translation regime and to trap accesses from the guest by clearing MDCR_EL2.E2PB. In vcpu_put(), KVM does a bitwise or with the E2PB mask, preserving its value. This has been correct so far, since MDCR_EL2.E2B has the same value (0b00) for all VMs. However, this will change when KVM enables support for SPE in guests. For such guests KVM will configure the profiling buffer to use the EL1&0 translation regime, a setting that is obviously undesirable to be preserved for the host running at EL2. Let's avoid this situation by explicitly clearing E2PB in vcpu_put(). [ Alexandru E: Rebased on top of 5.10-rc1, reworded commit ] Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx> Signed-off-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> --- arch/arm64/kvm/hyp/vhe/switch.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/arm64/kvm/hyp/vhe/switch.c b/arch/arm64/kvm/hyp/vhe/switch.c index fe69de16dadc..3f4db1fa388b 100644 --- a/arch/arm64/kvm/hyp/vhe/switch.c +++ b/arch/arm64/kvm/hyp/vhe/switch.c @@ -97,9 +97,7 @@ void deactivate_traps_vhe_put(void) { u64 mdcr_el2 = read_sysreg(mdcr_el2); - mdcr_el2 &= MDCR_EL2_HPMN_MASK | - MDCR_EL2_E2PB_MASK << MDCR_EL2_E2PB_SHIFT | - MDCR_EL2_TPMS; + mdcr_el2 &= MDCR_EL2_HPMN_MASK | MDCR_EL2_TPMS; write_sysreg(mdcr_el2, mdcr_el2); -- 2.29.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm