]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Define helper for EL2 registers with custom visibility
authorMark Brown <broonie@kernel.org>
Wed, 23 Oct 2024 14:53:31 +0000 (15:53 +0100)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 31 Oct 2024 02:44:21 +0000 (02:44 +0000)
In preparation for adding more visibility filtering for EL2 registers add
a helper macro like EL2_REG() which allows specification of a custom
visibility operation.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20240822-kvm-arm64-hide-pie-regs-v2-1-376624fa829c@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241023145345.1613824-24-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/sys_regs.c

index 9938c768c5acf16b3af7f83bb1bbae3ea15a4ed5..a2648a66b88dfbd35ea95186456b17681c4bde62 100644 (file)
@@ -2171,6 +2171,15 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
        .val = v,                               \
 }
 
+#define EL2_REG_FILTERED(name, acc, rst, v, filter) {  \
+       SYS_DESC(SYS_##name),                   \
+       .access = acc,                          \
+       .reset = rst,                           \
+       .reg = name,                            \
+       .visibility = filter,                   \
+       .val = v,                               \
+}
+
 #define EL2_REG_VNCR(name, rst, v)     EL2_REG(name, bad_vncr_trap, rst, v)
 #define EL2_REG_REDIR(name, rst, v)    EL2_REG(name, bad_redir_trap, rst, v)
 
@@ -2887,8 +2896,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
        EL2_REG_VNCR(HFGITR_EL2, reset_val, 0),
        EL2_REG_VNCR(HACR_EL2, reset_val, 0),
 
-       { SYS_DESC(SYS_ZCR_EL2), .access = access_zcr_el2, .reset = reset_val,
-         .visibility = sve_el2_visibility, .reg = ZCR_EL2 },
+       EL2_REG_FILTERED(ZCR_EL2, access_zcr_el2, reset_val, 0,
+                        sve_el2_visibility),
 
        EL2_REG_VNCR(HCRX_EL2, reset_val, 0),