]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
KVM: arm64: Don't treat HCRX_EL2 as a FGT register
authorMarc Zyngier <maz@kernel.org>
Fri, 24 Jan 2025 15:36:17 +0000 (15:36 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 6 May 2025 16:35:19 +0000 (17:35 +0100)
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>
arch/arm64/kvm/hyp/include/hyp/switch.h

index 3150e42d793412bb46d8d636603e908897217249..027d05f308f75b2d3a940919e1c0e8a91c10a0e0 100644 (file)
@@ -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);