@@ -1462,9 +1462,18 @@ u64 limit_nv_id_reg(struct kvm *kvm, u32 reg, u64 val)
14621462
14631463 case SYS_ID_AA64PFR1_EL1 :
14641464 /* Only support BTI, SSBS, CSV2_frac */
1465- val &= (ID_AA64PFR1_EL1_BT |
1466- ID_AA64PFR1_EL1_SSBS |
1467- ID_AA64PFR1_EL1_CSV2_frac );
1465+ val &= ~(ID_AA64PFR1_EL1_PFAR |
1466+ ID_AA64PFR1_EL1_DF2 |
1467+ ID_AA64PFR1_EL1_MTEX |
1468+ ID_AA64PFR1_EL1_THE |
1469+ ID_AA64PFR1_EL1_GCS |
1470+ ID_AA64PFR1_EL1_MTE_frac |
1471+ ID_AA64PFR1_EL1_NMI |
1472+ ID_AA64PFR1_EL1_SME |
1473+ ID_AA64PFR1_EL1_RES0 |
1474+ ID_AA64PFR1_EL1_MPAM_frac |
1475+ ID_AA64PFR1_EL1_RAS_frac |
1476+ ID_AA64PFR1_EL1_MTE );
14681477 break ;
14691478
14701479 case SYS_ID_AA64MMFR0_EL1 :
@@ -1517,12 +1526,16 @@ u64 limit_nv_id_reg(struct kvm *kvm, u32 reg, u64 val)
15171526 break ;
15181527
15191528 case SYS_ID_AA64MMFR1_EL1 :
1520- val &= (ID_AA64MMFR1_EL1_HCX |
1521- ID_AA64MMFR1_EL1_PAN |
1522- ID_AA64MMFR1_EL1_LO |
1523- ID_AA64MMFR1_EL1_HPDS |
1524- ID_AA64MMFR1_EL1_VH |
1525- ID_AA64MMFR1_EL1_VMIDBits );
1529+ val &= ~(ID_AA64MMFR1_EL1_ECBHB |
1530+ ID_AA64MMFR1_EL1_CMOW |
1531+ ID_AA64MMFR1_EL1_TIDCP1 |
1532+ ID_AA64MMFR1_EL1_nTLBPA |
1533+ ID_AA64MMFR1_EL1_AFP |
1534+ ID_AA64MMFR1_EL1_ETS |
1535+ ID_AA64MMFR1_EL1_TWED |
1536+ ID_AA64MMFR1_EL1_XNX |
1537+ ID_AA64MMFR1_EL1_SpecSEI |
1538+ ID_AA64MMFR1_EL1_HAFDBS );
15261539 /* FEAT_E2H0 implies no VHE */
15271540 if (test_bit (KVM_ARM_VCPU_HAS_EL2_E2H0 , kvm -> arch .vcpu_features ))
15281541 val &= ~ID_AA64MMFR1_EL1_VH ;
@@ -1564,11 +1577,17 @@ u64 limit_nv_id_reg(struct kvm *kvm, u32 reg, u64 val)
15641577
15651578 case SYS_ID_AA64DFR0_EL1 :
15661579 /* Only limited support for PMU, Debug, BPs, WPs, and HPMN0 */
1567- val &= (ID_AA64DFR0_EL1_PMUVer |
1568- ID_AA64DFR0_EL1_WRPs |
1569- ID_AA64DFR0_EL1_BRPs |
1570- ID_AA64DFR0_EL1_DebugVer |
1571- ID_AA64DFR0_EL1_HPMN0 );
1580+ val &= ~(ID_AA64DFR0_EL1_ExtTrcBuff |
1581+ ID_AA64DFR0_EL1_BRBE |
1582+ ID_AA64DFR0_EL1_MTPMU |
1583+ ID_AA64DFR0_EL1_TraceBuffer |
1584+ ID_AA64DFR0_EL1_TraceFilt |
1585+ ID_AA64DFR0_EL1_DoubleLock |
1586+ ID_AA64DFR0_EL1_PMSVer |
1587+ ID_AA64DFR0_EL1_CTX_CMPs |
1588+ ID_AA64DFR0_EL1_SEBEP |
1589+ ID_AA64DFR0_EL1_PMSS |
1590+ ID_AA64DFR0_EL1_TraceVer );
15721591
15731592 /* Cap Debug to ARMv8.1 */
15741593 val = ID_REG_LIMIT_FIELD_ENUM (val , ID_AA64DFR0_EL1 , DebugVer , VHE );
0 commit comments