@@ -1038,42 +1038,34 @@ static bool access_pmuserenr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
10381038 { SYS_DESC(SYS_PMEVTYPERn_EL0(n)), \
10391039 access_pmu_evtyper, reset_unknown, (PMEVTYPER0_EL0 + n), }
10401040
1041- static bool access_amu (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
1042- const struct sys_reg_desc * r )
1041+ static bool undef_access (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
1042+ const struct sys_reg_desc * r )
10431043{
10441044 kvm_inject_undefined (vcpu );
10451045
10461046 return false;
10471047}
10481048
10491049/* Macro to expand the AMU counter and type registers*/
1050- #define AMU_AMEVCNTR0_EL0 (n ) { SYS_DESC(SYS_AMEVCNTR0_EL0(n)), access_amu }
1051- #define AMU_AMEVTYPER0_EL0 (n ) { SYS_DESC(SYS_AMEVTYPER0_EL0(n)), access_amu }
1052- #define AMU_AMEVCNTR1_EL0 (n ) { SYS_DESC(SYS_AMEVCNTR1_EL0(n)), access_amu }
1053- #define AMU_AMEVTYPER1_EL0 (n ) { SYS_DESC(SYS_AMEVTYPER1_EL0(n)), access_amu }
1054-
1055- static bool trap_ptrauth (struct kvm_vcpu * vcpu ,
1056- struct sys_reg_params * p ,
1057- const struct sys_reg_desc * rd )
1058- {
1059- /*
1060- * If we land here, that is because we didn't fixup the access on exit
1061- * by allowing the PtrAuth sysregs. The only way this happens is when
1062- * the guest does not have PtrAuth support enabled.
1063- */
1064- kvm_inject_undefined (vcpu );
1065-
1066- return false;
1067- }
1050+ #define AMU_AMEVCNTR0_EL0 (n ) { SYS_DESC(SYS_AMEVCNTR0_EL0(n)), undef_access }
1051+ #define AMU_AMEVTYPER0_EL0 (n ) { SYS_DESC(SYS_AMEVTYPER0_EL0(n)), undef_access }
1052+ #define AMU_AMEVCNTR1_EL0 (n ) { SYS_DESC(SYS_AMEVCNTR1_EL0(n)), undef_access }
1053+ #define AMU_AMEVTYPER1_EL0 (n ) { SYS_DESC(SYS_AMEVTYPER1_EL0(n)), undef_access }
10681054
10691055static unsigned int ptrauth_visibility (const struct kvm_vcpu * vcpu ,
10701056 const struct sys_reg_desc * rd )
10711057{
10721058 return vcpu_has_ptrauth (vcpu ) ? 0 : REG_HIDDEN ;
10731059}
10741060
1061+ /*
1062+ * If we land here on a PtrAuth access, that is because we didn't
1063+ * fixup the access on exit by allowing the PtrAuth sysregs. The only
1064+ * way this happens is when the guest does not have PtrAuth support
1065+ * enabled.
1066+ */
10751067#define __PTRAUTH_KEY (k ) \
1076- { SYS_DESC(SYS_## k), trap_ptrauth , reset_unknown, k, \
1068+ { SYS_DESC(SYS_## k), undef_access , reset_unknown, k, \
10771069 .visibility = ptrauth_visibility}
10781070
10791071#define PTRAUTH_KEY (k ) \
@@ -1374,13 +1366,6 @@ static bool access_ccsidr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
13741366 return true;
13751367}
13761368
1377- static bool access_mte_regs (struct kvm_vcpu * vcpu , struct sys_reg_params * p ,
1378- const struct sys_reg_desc * r )
1379- {
1380- kvm_inject_undefined (vcpu );
1381- return false;
1382- }
1383-
13841369/* sys_reg_desc initialiser for known cpufeature ID registers */
13851370#define ID_SANITISED (name ) { \
13861371 SYS_DESC(SYS_##name), \
@@ -1549,8 +1534,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
15491534 { SYS_DESC (SYS_ACTLR_EL1 ), access_actlr , reset_actlr , ACTLR_EL1 },
15501535 { SYS_DESC (SYS_CPACR_EL1 ), NULL , reset_val , CPACR_EL1 , 0 },
15511536
1552- { SYS_DESC (SYS_RGSR_EL1 ), access_mte_regs },
1553- { SYS_DESC (SYS_GCR_EL1 ), access_mte_regs },
1537+ { SYS_DESC (SYS_RGSR_EL1 ), undef_access },
1538+ { SYS_DESC (SYS_GCR_EL1 ), undef_access },
15541539
15551540 { SYS_DESC (SYS_ZCR_EL1 ), NULL , reset_val , ZCR_EL1 , 0 , .visibility = sve_visibility },
15561541 { SYS_DESC (SYS_TTBR0_EL1 ), access_vm_reg , reset_unknown , TTBR0_EL1 },
@@ -1576,8 +1561,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
15761561 { SYS_DESC (SYS_ERXMISC0_EL1 ), trap_raz_wi },
15771562 { SYS_DESC (SYS_ERXMISC1_EL1 ), trap_raz_wi },
15781563
1579- { SYS_DESC (SYS_TFSR_EL1 ), access_mte_regs },
1580- { SYS_DESC (SYS_TFSRE0_EL1 ), access_mte_regs },
1564+ { SYS_DESC (SYS_TFSR_EL1 ), undef_access },
1565+ { SYS_DESC (SYS_TFSRE0_EL1 ), undef_access },
15811566
15821567 { SYS_DESC (SYS_FAR_EL1 ), access_vm_reg , reset_unknown , FAR_EL1 },
15831568 { SYS_DESC (SYS_PAR_EL1 ), NULL , reset_unknown , PAR_EL1 },
@@ -1641,14 +1626,14 @@ static const struct sys_reg_desc sys_reg_descs[] = {
16411626 { SYS_DESC (SYS_TPIDR_EL0 ), NULL , reset_unknown , TPIDR_EL0 },
16421627 { SYS_DESC (SYS_TPIDRRO_EL0 ), NULL , reset_unknown , TPIDRRO_EL0 },
16431628
1644- { SYS_DESC (SYS_AMCR_EL0 ), access_amu },
1645- { SYS_DESC (SYS_AMCFGR_EL0 ), access_amu },
1646- { SYS_DESC (SYS_AMCGCR_EL0 ), access_amu },
1647- { SYS_DESC (SYS_AMUSERENR_EL0 ), access_amu },
1648- { SYS_DESC (SYS_AMCNTENCLR0_EL0 ), access_amu },
1649- { SYS_DESC (SYS_AMCNTENSET0_EL0 ), access_amu },
1650- { SYS_DESC (SYS_AMCNTENCLR1_EL0 ), access_amu },
1651- { SYS_DESC (SYS_AMCNTENSET1_EL0 ), access_amu },
1629+ { SYS_DESC (SYS_AMCR_EL0 ), undef_access },
1630+ { SYS_DESC (SYS_AMCFGR_EL0 ), undef_access },
1631+ { SYS_DESC (SYS_AMCGCR_EL0 ), undef_access },
1632+ { SYS_DESC (SYS_AMUSERENR_EL0 ), undef_access },
1633+ { SYS_DESC (SYS_AMCNTENCLR0_EL0 ), undef_access },
1634+ { SYS_DESC (SYS_AMCNTENSET0_EL0 ), undef_access },
1635+ { SYS_DESC (SYS_AMCNTENCLR1_EL0 ), undef_access },
1636+ { SYS_DESC (SYS_AMCNTENSET1_EL0 ), undef_access },
16521637 AMU_AMEVCNTR0_EL0 (0 ),
16531638 AMU_AMEVCNTR0_EL0 (1 ),
16541639 AMU_AMEVCNTR0_EL0 (2 ),
0 commit comments