]> www.infradead.org Git - users/hch/misc.git/commitdiff
KVM: arm64: Allow EL1 control registers to be accessed from the CPU state
authorMarc Zyngier <maz@kernel.org>
Mon, 25 Aug 2025 14:20:06 +0000 (15:20 +0100)
committerMarc Zyngier <maz@kernel.org>
Sat, 20 Sep 2025 10:05:13 +0000 (11:05 +0100)
As we are about to plug the SW PTW into the EL1-only code, we can
no longer assume that the EL1 state is not resident on the CPU,
as we don't necessarily get there from EL2 traps.

Turn the __vcpu_sys_reg() access on the EL1 state into calls to
the vcpu_read_sys_reg() helper, which is guaranteed to do the
right thing.

Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/at.c

index 9baa929c102f54ccbe2220f133ffb3cb0bb7a399..4efa2167116fe9143a4cb2b48cd6ef347577a1ed 100644 (file)
@@ -105,7 +105,7 @@ static u64 effective_tcr2(struct kvm_vcpu *vcpu, enum trans_regime regime)
                    !(__vcpu_sys_reg(vcpu, HCRX_EL2) & HCRX_EL2_TCR2En))
                        return 0;
 
-               return __vcpu_sys_reg(vcpu, TCR2_EL1);
+               return vcpu_read_sys_reg(vcpu, TCR2_EL1);
        }
 
        return vcpu_read_sys_reg(vcpu, TCR2_EL2);
@@ -956,7 +956,7 @@ static void compute_s1_direct_permissions(struct kvm_vcpu *vcpu,
                wxn = (vcpu_read_sys_reg(vcpu, SCTLR_EL2) & SCTLR_ELx_WXN);
                break;
        case TR_EL10:
-               wxn = (__vcpu_sys_reg(vcpu, SCTLR_EL1) & SCTLR_ELx_WXN);
+               wxn = (vcpu_read_sys_reg(vcpu, SCTLR_EL1) & SCTLR_ELx_WXN);
                break;
        }