diff options
author | Marc Zyngier <maz@kernel.org> | 2025-01-24 15:36:17 +0000 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2025-05-06 17:35:19 +0100 |
commit | 09be03c6b54dd8959eba6cb25051c20a475ecde9 (patch) | |
tree | 555f229bdad56de2bfaf56bca62d4fb0ec84f38f | |
parent | 9308d0b1d7abe36f0ee2052b0ffceb7869e83f8e (diff) |
KVM: arm64: Don't treat HCRX_EL2 as a FGT register
Treating HCRX_EL2 as yet another FGT register seems excessive, and
gets in a way of further improvements. It is actually simpler to
just be explicit about the masking, so just to that.
Signed-off-by: Marc Zyngier <maz@kernel.org>
-rw-r--r-- | arch/arm64/kvm/hyp/include/hyp/switch.h | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/arm64/kvm/hyp/include/hyp/switch.h b/arch/arm64/kvm/hyp/include/hyp/switch.h index 3150e42d7934..027d05f308f7 100644 --- a/arch/arm64/kvm/hyp/include/hyp/switch.h +++ b/arch/arm64/kvm/hyp/include/hyp/switch.h @@ -261,12 +261,9 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu) if (cpus_have_final_cap(ARM64_HAS_HCX)) { u64 hcrx = vcpu->arch.hcrx_el2; if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) { - u64 clr = 0, set = 0; - - compute_clr_set(vcpu, HCRX_EL2, clr, set); - - hcrx |= set; - hcrx &= ~clr; + u64 val = __vcpu_sys_reg(vcpu, HCRX_EL2); + hcrx |= val & __HCRX_EL2_MASK; + hcrx &= ~(~val & __HCRX_EL2_nMASK); } write_sysreg_s(hcrx, SYS_HCRX_EL2); |