@@ -184,6 +184,15 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr1[] = {
184184 ARM64_FTR_END ,
185185};
186186
187+ static const struct arm64_ftr_bits ftr_id_aa64zfr0 [] = {
188+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_SM4_SHIFT , 4 , 0 ),
189+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_SHA3_SHIFT , 4 , 0 ),
190+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_BITPERM_SHIFT , 4 , 0 ),
191+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_AES_SHIFT , 4 , 0 ),
192+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_SVEVER_SHIFT , 4 , 0 ),
193+ ARM64_FTR_END ,
194+ };
195+
187196static const struct arm64_ftr_bits ftr_id_aa64mmfr0 [] = {
188197 S_ARM64_FTR_BITS (FTR_HIDDEN , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64MMFR0_TGRAN4_SHIFT , 4 , ID_AA64MMFR0_TGRAN4_NI ),
189198 S_ARM64_FTR_BITS (FTR_HIDDEN , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64MMFR0_TGRAN64_SHIFT , 4 , ID_AA64MMFR0_TGRAN64_NI ),
@@ -392,7 +401,7 @@ static const struct __ftr_reg_entry {
392401 /* Op1 = 0, CRn = 0, CRm = 4 */
393402 ARM64_FTR_REG (SYS_ID_AA64PFR0_EL1 , ftr_id_aa64pfr0 ),
394403 ARM64_FTR_REG (SYS_ID_AA64PFR1_EL1 , ftr_id_aa64pfr1 ),
395- ARM64_FTR_REG (SYS_ID_AA64ZFR0_EL1 , ftr_raz ),
404+ ARM64_FTR_REG (SYS_ID_AA64ZFR0_EL1 , ftr_id_aa64zfr0 ),
396405
397406 /* Op1 = 0, CRn = 0, CRm = 5 */
398407 ARM64_FTR_REG (SYS_ID_AA64DFR0_EL1 , ftr_id_aa64dfr0 ),
@@ -1610,6 +1619,12 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
16101619 HWCAP_CAP (SYS_ID_AA64MMFR2_EL1 , ID_AA64MMFR2_AT_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_USCAT ),
16111620#ifdef CONFIG_ARM64_SVE
16121621 HWCAP_CAP (SYS_ID_AA64PFR0_EL1 , ID_AA64PFR0_SVE_SHIFT , FTR_UNSIGNED , ID_AA64PFR0_SVE , CAP_HWCAP , KERNEL_HWCAP_SVE ),
1622+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SVEVER_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SVEVER_SVE2 , CAP_HWCAP , KERNEL_HWCAP_SVE2 ),
1623+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_AES_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_AES , CAP_HWCAP , KERNEL_HWCAP_SVEAES ),
1624+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_AES_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_AES_PMULL , CAP_HWCAP , KERNEL_HWCAP_SVEPMULL ),
1625+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_BITPERM_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_BITPERM , CAP_HWCAP , KERNEL_HWCAP_SVEBITPERM ),
1626+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SHA3_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SHA3 , CAP_HWCAP , KERNEL_HWCAP_SVESHA3 ),
1627+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SM4_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SM4 , CAP_HWCAP , KERNEL_HWCAP_SVESM4 ),
16131628#endif
16141629 HWCAP_CAP (SYS_ID_AA64PFR1_EL1 , ID_AA64PFR1_SSBS_SHIFT , FTR_UNSIGNED , ID_AA64PFR1_SSBS_PSTATE_INSNS , CAP_HWCAP , KERNEL_HWCAP_SSBS ),
16151630#ifdef CONFIG_ARM64_PTR_AUTH
0 commit comments