@@ -1038,42 +1038,34 @@ static bool access_pmuserenr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
1038
1038
{ SYS_DESC(SYS_PMEVTYPERn_EL0(n)), \
1039
1039
access_pmu_evtyper, reset_unknown, (PMEVTYPER0_EL0 + n), }
1040
1040
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 )
1043
1043
{
1044
1044
kvm_inject_undefined (vcpu );
1045
1045
1046
1046
return false;
1047
1047
}
1048
1048
1049
1049
/* 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 }
1068
1054
1069
1055
static unsigned int ptrauth_visibility (const struct kvm_vcpu * vcpu ,
1070
1056
const struct sys_reg_desc * rd )
1071
1057
{
1072
1058
return vcpu_has_ptrauth (vcpu ) ? 0 : REG_HIDDEN ;
1073
1059
}
1074
1060
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
+ */
1075
1067
#define __PTRAUTH_KEY (k ) \
1076
- { SYS_DESC(SYS_## k), trap_ptrauth , reset_unknown, k, \
1068
+ { SYS_DESC(SYS_## k), undef_access , reset_unknown, k, \
1077
1069
.visibility = ptrauth_visibility}
1078
1070
1079
1071
#define PTRAUTH_KEY (k ) \
@@ -1374,13 +1366,6 @@ static bool access_ccsidr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
1374
1366
return true;
1375
1367
}
1376
1368
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
-
1384
1369
/* sys_reg_desc initialiser for known cpufeature ID registers */
1385
1370
#define ID_SANITISED (name ) { \
1386
1371
SYS_DESC(SYS_##name), \
@@ -1549,8 +1534,8 @@ static const struct sys_reg_desc sys_reg_descs[] = {
1549
1534
{ SYS_DESC (SYS_ACTLR_EL1 ), access_actlr , reset_actlr , ACTLR_EL1 },
1550
1535
{ SYS_DESC (SYS_CPACR_EL1 ), NULL , reset_val , CPACR_EL1 , 0 },
1551
1536
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 },
1554
1539
1555
1540
{ SYS_DESC (SYS_ZCR_EL1 ), NULL , reset_val , ZCR_EL1 , 0 , .visibility = sve_visibility },
1556
1541
{ 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[] = {
1576
1561
{ SYS_DESC (SYS_ERXMISC0_EL1 ), trap_raz_wi },
1577
1562
{ SYS_DESC (SYS_ERXMISC1_EL1 ), trap_raz_wi },
1578
1563
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 },
1581
1566
1582
1567
{ SYS_DESC (SYS_FAR_EL1 ), access_vm_reg , reset_unknown , FAR_EL1 },
1583
1568
{ SYS_DESC (SYS_PAR_EL1 ), NULL , reset_unknown , PAR_EL1 },
@@ -1641,14 +1626,14 @@ static const struct sys_reg_desc sys_reg_descs[] = {
1641
1626
{ SYS_DESC (SYS_TPIDR_EL0 ), NULL , reset_unknown , TPIDR_EL0 },
1642
1627
{ SYS_DESC (SYS_TPIDRRO_EL0 ), NULL , reset_unknown , TPIDRRO_EL0 },
1643
1628
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 },
1652
1637
AMU_AMEVCNTR0_EL0 (0 ),
1653
1638
AMU_AMEVCNTR0_EL0 (1 ),
1654
1639
AMU_AMEVCNTR0_EL0 (2 ),
0 commit comments