xref: /rk3399_ARM-atf/docs/architecture_features.rst (revision 582ebc511b7beb00cf052b9ffc6116af984fe67c)
15548ab9bSManish PandeyArchitecture Features
25548ab9bSManish Pandey=====================
35548ab9bSManish Pandey
45548ab9bSManish PandeyThe Arm architecture evolves through versioning, with new architectural features being introduced
5714a1a93SManish Pandeyalmost every year listed in `Feature_description`_. While most of these features require no control
6714a1a93SManish Pandeyat EL3, some demand explicit configuration of EL3 control registers to enable their use at lower
7714a1a93SManish PandeyException Levels. For features with EL3 controls, it is relatively straightforward to examine the
8714a1a93SManish Pandeycode and determine whether TF-A support them. However, for features that are transparent to EL3, it
9714a1a93SManish Pandeyis more challenging to confirm whether they have been analyzed and verified as not requiring changes
10714a1a93SManish Pandeyin TF-A.
115548ab9bSManish Pandey
125548ab9bSManish PandeyThis document serves as a central reference point to track and clarify the support status of
135548ab9bSManish Pandeyarchitectural features within TF-A.
145548ab9bSManish Pandey
155548ab9bSManish PandeyThis document organizes features according to the yearly updates, while the specific architecture
165548ab9bSManish Pandeyversions (8.X, 9.X) to which they apply can be found in `Feature_description`_
175548ab9bSManish Pandey
185548ab9bSManish Pandey.. note::
195548ab9bSManish Pandey
205548ab9bSManish Pandey   **Status legend** —
215548ab9bSManish Pandey
225548ab9bSManish Pandey   * ``OK``: TF-A has explicit support;
235548ab9bSManish Pandey   * ``NA``: Transparent from EL3 (no EL3 changes required);
245548ab9bSManish Pandey   * ``NO``: Analyzed but decided not to implement;
255548ab9bSManish Pandey   * ``WIP``: Implementation in progress;
265548ab9bSManish Pandey   * *(empty)*: Not analyzed.
275548ab9bSManish Pandey
285548ab9bSManish Pandey2025 Extensions
295548ab9bSManish Pandey---------------
305548ab9bSManish Pandey
315548ab9bSManish Pandey+-------------------------+--------+
325548ab9bSManish Pandey| Feature                 | Status |
335548ab9bSManish Pandey+=========================+========+
345548ab9bSManish Pandey| FEAT_GCIE               |        |
355548ab9bSManish Pandey+-------------------------+--------+
365548ab9bSManish Pandey| FEAT_GCIE_LEGACY        |        |
375548ab9bSManish Pandey+-------------------------+--------+
385548ab9bSManish Pandey| FEAT_F16F32DOT          |        |
395548ab9bSManish Pandey+-------------------------+--------+
405548ab9bSManish Pandey| FEAT_F16F32MM           |        |
415548ab9bSManish Pandey+-------------------------+--------+
425548ab9bSManish Pandey| FEAT_F16MM              |        |
435548ab9bSManish Pandey+-------------------------+--------+
445548ab9bSManish Pandey| FEAT_SVE_B16MM          |        |
455548ab9bSManish Pandey+-------------------------+--------+
465548ab9bSManish Pandey| FEAT_SME2p3             |        |
475548ab9bSManish Pandey+-------------------------+--------+
485548ab9bSManish Pandey| FEAT_MTE_EIRG           |  NA    |
495548ab9bSManish Pandey+-------------------------+--------+
505548ab9bSManish Pandey| FEAT_MTETC              |        |
515548ab9bSManish Pandey+-------------------------+--------+
525548ab9bSManish Pandey| FEAT_SVE2p3             |        |
535548ab9bSManish Pandey+-------------------------+--------+
545548ab9bSManish Pandey| FEAT_SCR2               |        |
555548ab9bSManish Pandey+-------------------------+--------+
565548ab9bSManish Pandey| FEAT_LSCP               |        |
575548ab9bSManish Pandey+-------------------------+--------+
585548ab9bSManish Pandey| FEAT_MPAMv2_VID         |        |
595548ab9bSManish Pandey+-------------------------+--------+
605548ab9bSManish Pandey| FEAT_MPAMv2_MSC         |        |
615548ab9bSManish Pandey+-------------------------+--------+
625548ab9bSManish Pandey| FEAT_MPAMv2_MSC_MON_SEC |        |
635548ab9bSManish Pandey+-------------------------+--------+
645548ab9bSManish Pandey| FEAT_MPAMv2_ALT_ID      |        |
655548ab9bSManish Pandey+-------------------------+--------+
665548ab9bSManish Pandey| FEAT_MPAMv2             |        |
675548ab9bSManish Pandey+-------------------------+--------+
685548ab9bSManish Pandey| FEAT_FDIT               |        |
695548ab9bSManish Pandey+-------------------------+--------+
705548ab9bSManish Pandey| FEAT_CMH                |        |
715548ab9bSManish Pandey+-------------------------+--------+
725548ab9bSManish Pandey| FEAT_EAESR              |        |
735548ab9bSManish Pandey+-------------------------+--------+
745548ab9bSManish Pandey| FEAT_TLBID              |        |
755548ab9bSManish Pandey+-------------------------+--------+
765548ab9bSManish Pandey| FEAT_SRMASK2            |        |
775548ab9bSManish Pandey+-------------------------+--------+
785548ab9bSManish Pandey| FEAT_BBML3              |        |
795548ab9bSManish Pandey+-------------------------+--------+
805548ab9bSManish Pandey| FEAT_NV3                |        |
815548ab9bSManish Pandey+-------------------------+--------+
825548ab9bSManish Pandey| FEAT_PAuth_EnhCtl       |        |
835548ab9bSManish Pandey+-------------------------+--------+
845548ab9bSManish Pandey| FEAT_LORRL              |        |
855548ab9bSManish Pandey+-------------------------+--------+
865548ab9bSManish Pandey
875548ab9bSManish Pandey2024 Extensions
885548ab9bSManish Pandey---------------
895548ab9bSManish Pandey
905548ab9bSManish Pandey+-----------------------+--------+
915548ab9bSManish Pandey| Feature               | Status |
925548ab9bSManish Pandey+=======================+========+
935548ab9bSManish Pandey| FEAT_PMUv3_EXTPMN     |        |
945548ab9bSManish Pandey+-----------------------+--------+
955548ab9bSManish Pandey| FEAT_SPEv1p5          |        |
965548ab9bSManish Pandey+-----------------------+--------+
975548ab9bSManish Pandey| FEAT_SPE_EXC          |        |
985548ab9bSManish Pandey+-----------------------+--------+
995548ab9bSManish Pandey| FEAT_SPE_nVM          |        |
1005548ab9bSManish Pandey+-----------------------+--------+
1015548ab9bSManish Pandey| FEAT_TRBEv1p1         |        |
1025548ab9bSManish Pandey+-----------------------+--------+
1035548ab9bSManish Pandey| FEAT_TRBE_EXC         |        |
1045548ab9bSManish Pandey+-----------------------+--------+
1055548ab9bSManish Pandey| FEAT_SME_MOP4         |        |
1065548ab9bSManish Pandey+-----------------------+--------+
1075548ab9bSManish Pandey| FEAT_SME_TMOP         |        |
1085548ab9bSManish Pandey+-----------------------+--------+
1095548ab9bSManish Pandey| FEAT_PoPS             |        |
1105548ab9bSManish Pandey+-----------------------+--------+
1115548ab9bSManish Pandey| FEAT_SME2p2           |        |
1125548ab9bSManish Pandey+-----------------------+--------+
1135548ab9bSManish Pandey| FEAT_CMPBR            |        |
1145548ab9bSManish Pandey+-----------------------+--------+
1155548ab9bSManish Pandey| FEAT_SSVE_AES         |        |
1165548ab9bSManish Pandey+-----------------------+--------+
1175548ab9bSManish Pandey| FEAT_RME_GPC3         |  WIP   |
1185548ab9bSManish Pandey+-----------------------+--------+
119*ccb107e7SArvind Ram Prakash| FEAT_RME_GDI          |  OK    |
1205548ab9bSManish Pandey+-----------------------+--------+
1215548ab9bSManish Pandey| FEAT_SVE2p2           |        |
1225548ab9bSManish Pandey+-----------------------+--------+
1235548ab9bSManish Pandey| FEAT_SSVE_BitPerm     |        |
1245548ab9bSManish Pandey+-----------------------+--------+
1255548ab9bSManish Pandey| FEAT_SSVE_FEXPA       |        |
1265548ab9bSManish Pandey+-----------------------+--------+
1275548ab9bSManish Pandey| FEAT_SVE_AES2         |        |
1285548ab9bSManish Pandey+-----------------------+--------+
1295548ab9bSManish Pandey| FEAT_LSFE             |        |
1305548ab9bSManish Pandey+-----------------------+--------+
1315548ab9bSManish Pandey| FEAT_FPRCVT           |        |
1325548ab9bSManish Pandey+-----------------------+--------+
1335548ab9bSManish Pandey| FEAT_SVE_F16F32MM     |        |
1345548ab9bSManish Pandey+-----------------------+--------+
1355548ab9bSManish Pandey| FEAT_F8F16MM          |        |
1365548ab9bSManish Pandey+-----------------------+--------+
1375548ab9bSManish Pandey| FEAT_F8F32MM          |        |
1385548ab9bSManish Pandey+-----------------------+--------+
1395548ab9bSManish Pandey| FEAT_SVE_BFSCALE      |        |
1405548ab9bSManish Pandey+-----------------------+--------+
1415548ab9bSManish Pandey| FEAT_OCCMO            |        |
1425548ab9bSManish Pandey+-----------------------+--------+
1435548ab9bSManish Pandey| FEAT_LS64WB           |        |
1445548ab9bSManish Pandey+-----------------------+--------+
1455548ab9bSManish Pandey| FEAT_AMU_EXTACR       |        |
1465548ab9bSManish Pandey+-----------------------+--------+
1475548ab9bSManish Pandey| FEAT_MPAM_MSC_DOMAINS |        |
1485548ab9bSManish Pandey+-----------------------+--------+
1495548ab9bSManish Pandey| FEAT_MPAM_MSC_DCTRL   |        |
1505548ab9bSManish Pandey+-----------------------+--------+
1515548ab9bSManish Pandey| FEAT_MPAM_PE_BW_CTRL  |   OK   |
1525548ab9bSManish Pandey+-----------------------+--------+
1535548ab9bSManish Pandey| FEAT_PCDPHINT         |        |
1545548ab9bSManish Pandey+-----------------------+--------+
1555548ab9bSManish Pandey| FEAT_SRMASK           |        |
1565548ab9bSManish Pandey+-----------------------+--------+
157*ccb107e7SArvind Ram Prakash| FEAT_IDTE3            |   OK   |
1585548ab9bSManish Pandey+-----------------------+--------+
1595548ab9bSManish Pandey| FEAT_UINJ             |   WIP  |
1605548ab9bSManish Pandey+-----------------------+--------+
1615548ab9bSManish Pandey| FEAT_NV2p1            |        |
1625548ab9bSManish Pandey+-----------------------+--------+
1635548ab9bSManish Pandey| FEAT_LSUI             |        |
1645548ab9bSManish Pandey+-----------------------+--------+
1655548ab9bSManish Pandey
1665548ab9bSManish Pandey2023 Extensions
1675548ab9bSManish Pandey---------------
1685548ab9bSManish Pandey
1695548ab9bSManish Pandey+-------------------+--------+
1705548ab9bSManish Pandey| Feature           | Status |
1715548ab9bSManish Pandey+===================+========+
1725548ab9bSManish Pandey| FEAT_E2H0         |   NA   |
1735548ab9bSManish Pandey+-------------------+--------+
1745548ab9bSManish Pandey| FEAT_SME_LUTv2    |   NA   |
1755548ab9bSManish Pandey+-------------------+--------+
1765548ab9bSManish Pandey| FEAT_LUT          |   NA   |
1775548ab9bSManish Pandey+-------------------+--------+
1785548ab9bSManish Pandey| FEAT_FAMINMAX     |   NA   |
1795548ab9bSManish Pandey+-------------------+--------+
1805548ab9bSManish Pandey| FEAT_FPMR         |   OK   |
1815548ab9bSManish Pandey+-------------------+--------+
1825548ab9bSManish Pandey| FEAT_FP8          |   NA   |
1835548ab9bSManish Pandey+-------------------+--------+
1845548ab9bSManish Pandey| FEAT_FP8FMA       |   NA   |
1855548ab9bSManish Pandey+-------------------+--------+
1865548ab9bSManish Pandey| FEAT_SSVE_FP8FMA  |   NA   |
1875548ab9bSManish Pandey+-------------------+--------+
1885548ab9bSManish Pandey| FEAT_FP8DOT4      |   NA   |
1895548ab9bSManish Pandey+-------------------+--------+
1905548ab9bSManish Pandey| FEAT_SSVE_FP8DOT4 |   NA   |
1915548ab9bSManish Pandey+-------------------+--------+
1925548ab9bSManish Pandey| FEAT_FP8DOT2      |   NA   |
1935548ab9bSManish Pandey+-------------------+--------+
1945548ab9bSManish Pandey| FEAT_SSVE_FP8DOT2 |   NA   |
1955548ab9bSManish Pandey+-------------------+--------+
1965548ab9bSManish Pandey| FEAT_SME_F8F16    |   NA   |
1975548ab9bSManish Pandey+-------------------+--------+
1985548ab9bSManish Pandey| FEAT_SME_F8F32    |   NA   |
1995548ab9bSManish Pandey+-------------------+--------+
2005548ab9bSManish Pandey| FEAT_CPA          |   NA   |
2015548ab9bSManish Pandey+-------------------+--------+
2025548ab9bSManish Pandey| FEAT_CPA2         |   OK   |
2035548ab9bSManish Pandey+-------------------+--------+
2045548ab9bSManish Pandey| FEAT_STEP2        |        |
2055548ab9bSManish Pandey+-------------------+--------+
2065548ab9bSManish Pandey| FEAT_BWE2         |   NA   |
2075548ab9bSManish Pandey+-------------------+--------+
2085548ab9bSManish Pandey| FEAT_SPE_FPF      |   NA   |
2095548ab9bSManish Pandey+-------------------+--------+
2105548ab9bSManish Pandey| FEAT_SPE_EFT      |   NA   |
2115548ab9bSManish Pandey+-------------------+--------+
2125548ab9bSManish Pandey| FEAT_PMUv3_TH2    |   NA   |
2135548ab9bSManish Pandey+-------------------+--------+
2145548ab9bSManish Pandey| FEAT_SPMU2        |   NA   |
2155548ab9bSManish Pandey+-------------------+--------+
2165548ab9bSManish Pandey| FEAT_E3DSE        |        |
2175548ab9bSManish Pandey+-------------------+--------+
2185548ab9bSManish Pandey| FEAT_PMUv3_SME    |   NA   |
2195548ab9bSManish Pandey+-------------------+--------+
2205548ab9bSManish Pandey| FEAT_SPE_SME      |   NA   |
2215548ab9bSManish Pandey+-------------------+--------+
2225548ab9bSManish Pandey| FEAT_SPE_ALTCLK   |   NA   |
2235548ab9bSManish Pandey+-------------------+--------+
2245548ab9bSManish Pandey| FEAT_HDBSS        |        |
2255548ab9bSManish Pandey+-------------------+--------+
2265548ab9bSManish Pandey| FEAT_HACDBS       |        |
2275548ab9bSManish Pandey+-------------------+--------+
2285548ab9bSManish Pandey| FEAT_TLBIW        |   NA   |
2295548ab9bSManish Pandey+-------------------+--------+
2305548ab9bSManish Pandey| FEAT_ASID2        |   NA   |
2315548ab9bSManish Pandey+-------------------+--------+
232*ccb107e7SArvind Ram Prakash| FEAT_RME_GPC2     |   OK   |
2335548ab9bSManish Pandey+-------------------+--------+
2345548ab9bSManish Pandey| FEAT_FGWTE3       |   OK   |
2355548ab9bSManish Pandey+-------------------+--------+
2365548ab9bSManish Pandey| FEAT_PAuth_LR     |   OK   |
2375548ab9bSManish Pandey+-------------------+--------+
2385548ab9bSManish Pandey| FEAT_ETS3         |   NA   |
2395548ab9bSManish Pandey+-------------------+--------+
2405548ab9bSManish Pandey
2415548ab9bSManish Pandey2022 Extensions
2425548ab9bSManish Pandey---------------
2435548ab9bSManish Pandey
2445548ab9bSManish Pandey+--------------------------+--------+
2455548ab9bSManish Pandey| Feature                  | Status |
2465548ab9bSManish Pandey+==========================+========+
2475548ab9bSManish Pandey| FEAT_BWE                 |        |
2485548ab9bSManish Pandey+--------------------------+--------+
2495548ab9bSManish Pandey| FEAT_ADERR               |        |
2505548ab9bSManish Pandey+--------------------------+--------+
2515548ab9bSManish Pandey| FEAT_ANERR               |        |
2525548ab9bSManish Pandey+--------------------------+--------+
2535548ab9bSManish Pandey| FEAT_DoubleFault2        |        |
2545548ab9bSManish Pandey+--------------------------+--------+
2555548ab9bSManish Pandey| FEAT_PFAR                |   OK   |
2565548ab9bSManish Pandey+--------------------------+--------+
2575548ab9bSManish Pandey| FEAT_RASv2               |        |
2585548ab9bSManish Pandey+--------------------------+--------+
2595548ab9bSManish Pandey| FEAT_CSSC                |        |
2605548ab9bSManish Pandey+--------------------------+--------+
2615548ab9bSManish Pandey| FEAT_RPRFM               |        |
2625548ab9bSManish Pandey+--------------------------+--------+
2635548ab9bSManish Pandey| FEAT_PRFMSLC             |        |
2645548ab9bSManish Pandey+--------------------------+--------+
2655548ab9bSManish Pandey| FEAT_SPECRES2            |        |
2665548ab9bSManish Pandey+--------------------------+--------+
267714a1a93SManish Pandey| FEAT_CLRBHB              |   Ok   |
2685548ab9bSManish Pandey+--------------------------+--------+
2695548ab9bSManish Pandey| FEAT_ECBHB               |   NA   |
2705548ab9bSManish Pandey+--------------------------+--------+
2715548ab9bSManish Pandey| FEAT_SME2p1              |        |
2725548ab9bSManish Pandey+--------------------------+--------+
2735548ab9bSManish Pandey| FEAT_SME_F16F16          |        |
2745548ab9bSManish Pandey+--------------------------+--------+
2755548ab9bSManish Pandey| FEAT_SVE_B16B16          |        |
2765548ab9bSManish Pandey+--------------------------+--------+
2775548ab9bSManish Pandey| FEAT_SME_B16B16          |        |
2785548ab9bSManish Pandey+--------------------------+--------+
2795548ab9bSManish Pandey| FEAT_FGT2                |   OK   |
2805548ab9bSManish Pandey+--------------------------+--------+
2815548ab9bSManish Pandey| FEAT_MTE4                |   NA   |
2825548ab9bSManish Pandey+--------------------------+--------+
2835548ab9bSManish Pandey| FEAT_MTE_CANONICAL_TAGS  |   NA   |
2845548ab9bSManish Pandey+--------------------------+--------+
2855548ab9bSManish Pandey| FEAT_MTE_NO_ADDRESS_TAGS |   NA   |
2865548ab9bSManish Pandey+--------------------------+--------+
2875548ab9bSManish Pandey| FEAT_MTE_TAGGED_FAR      |        |
2885548ab9bSManish Pandey+--------------------------+--------+
2895548ab9bSManish Pandey| FEAT_MTE_PERM            |   NA   |
2905548ab9bSManish Pandey+--------------------------+--------+
2915548ab9bSManish Pandey| FEAT_MTE_STORE_ONLY      |   NA   |
2925548ab9bSManish Pandey+--------------------------+--------+
2935548ab9bSManish Pandey| FEAT_ITE                 |        |
2945548ab9bSManish Pandey+--------------------------+--------+
2955548ab9bSManish Pandey| FEAT_TRBE_EXT            |        |
2965548ab9bSManish Pandey+--------------------------+--------+
2975548ab9bSManish Pandey| FEAT_TRBE_MPAM           |        |
2985548ab9bSManish Pandey+--------------------------+--------+
2995548ab9bSManish Pandey| FEAT_ETEv1p3             |        |
3005548ab9bSManish Pandey+--------------------------+--------+
3015548ab9bSManish Pandey| FEAT_GCS                 |   OK   |
3025548ab9bSManish Pandey+--------------------------+--------+
3035548ab9bSManish Pandey| FEAT_CHK                 |        |
3045548ab9bSManish Pandey+--------------------------+--------+
3055548ab9bSManish Pandey| FEAT_SPE_DPFZS           |        |
3065548ab9bSManish Pandey+--------------------------+--------+
3075548ab9bSManish Pandey| FEAT_SPE_CRR             |        |
3085548ab9bSManish Pandey+--------------------------+--------+
309714a1a93SManish Pandey| FEAT_EBEP                |   OK   |
3105548ab9bSManish Pandey+--------------------------+--------+
3115548ab9bSManish Pandey| FEAT_SEBEP               |   OK   |
3125548ab9bSManish Pandey+--------------------------+--------+
3135548ab9bSManish Pandey| FEAT_PMUv3_SS            |        |
3145548ab9bSManish Pandey+--------------------------+--------+
3155548ab9bSManish Pandey| FEAT_SPMU                |        |
3165548ab9bSManish Pandey+--------------------------+--------+
3175548ab9bSManish Pandey| FEAT_PMUv3_ICNTR         |        |
3185548ab9bSManish Pandey+--------------------------+--------+
3195548ab9bSManish Pandey| FEAT_PMUv3p9             |        |
3205548ab9bSManish Pandey+--------------------------+--------+
3215548ab9bSManish Pandey| FEAT_SVE2p1              |        |
3225548ab9bSManish Pandey+--------------------------+--------+
3235548ab9bSManish Pandey| FEAT_Debugv8p9           |   OK   |
3245548ab9bSManish Pandey+--------------------------+--------+
3255548ab9bSManish Pandey| FEAT_ABLE                |        |
3265548ab9bSManish Pandey+--------------------------+--------+
3275548ab9bSManish Pandey| FEAT_PCSRv8p9            |        |
3285548ab9bSManish Pandey+--------------------------+--------+
3295548ab9bSManish Pandey| FEAT_LRCPC3              |        |
3305548ab9bSManish Pandey+--------------------------+--------+
3315548ab9bSManish Pandey| FEAT_SPEv1p4             |        |
3325548ab9bSManish Pandey+--------------------------+--------+
3335548ab9bSManish Pandey| FEAT_SPE_FDS             |        |
3345548ab9bSManish Pandey+--------------------------+--------+
3355548ab9bSManish Pandey| FEAT_PMUv3_EDGE          |        |
3365548ab9bSManish Pandey+--------------------------+--------+
3375548ab9bSManish Pandey| FEAT_D128                |   OK   |
3385548ab9bSManish Pandey+--------------------------+--------+
3395548ab9bSManish Pandey| FEAT_AIE                 |   OK   |
3405548ab9bSManish Pandey+--------------------------+--------+
3415548ab9bSManish Pandey| FEAT_S1PIE               |   OK   |
3425548ab9bSManish Pandey+--------------------------+--------+
3435548ab9bSManish Pandey| FEAT_ATS1A               |        |
3445548ab9bSManish Pandey+--------------------------+--------+
3455548ab9bSManish Pandey| FEAT_S1POE               |   OK   |
3465548ab9bSManish Pandey+--------------------------+--------+
3475548ab9bSManish Pandey| FEAT_S2PIE               |   OK   |
3485548ab9bSManish Pandey+--------------------------+--------+
3495548ab9bSManish Pandey| FEAT_S2POE               |   OK   |
3505548ab9bSManish Pandey+--------------------------+--------+
3515548ab9bSManish Pandey| FEAT_SYSREG128           |   OK   |
3525548ab9bSManish Pandey+--------------------------+--------+
3535548ab9bSManish Pandey| FEAT_SYSINSTR128         |        |
3545548ab9bSManish Pandey+--------------------------+--------+
3555548ab9bSManish Pandey| FEAT_LSE128              |        |
3565548ab9bSManish Pandey+--------------------------+--------+
3575548ab9bSManish Pandey| FEAT_HAFT                |        |
3585548ab9bSManish Pandey+--------------------------+--------+
3595548ab9bSManish Pandey| FEAT_THE                 |   OK   |
3605548ab9bSManish Pandey+--------------------------+--------+
3615548ab9bSManish Pandey| FEAT_LVA3                |        |
3625548ab9bSManish Pandey+--------------------------+--------+
3635548ab9bSManish Pandey| FEAT_MTE_ASYNC           |        |
3645548ab9bSManish Pandey+--------------------------+--------+
3655548ab9bSManish Pandey| FEAT_EDHSR               |        |
3665548ab9bSManish Pandey+--------------------------+--------+
3675548ab9bSManish Pandey| FEAT_AMU_EXT64           |        |
3685548ab9bSManish Pandey+--------------------------+--------+
3695548ab9bSManish Pandey
3705548ab9bSManish Pandey
3715548ab9bSManish Pandey2021 Extensions
3725548ab9bSManish Pandey---------------
3735548ab9bSManish Pandey
3745548ab9bSManish Pandey+------------------+--------+
3755548ab9bSManish Pandey| Feature          | Status |
3765548ab9bSManish Pandey+==================+========+
3775548ab9bSManish Pandey| FEAT_SME2        |   OK   |
3785548ab9bSManish Pandey+------------------+--------+
3795548ab9bSManish Pandey| FEAT_MEC         |   OK   |
3805548ab9bSManish Pandey+------------------+--------+
3815548ab9bSManish Pandey| FEAT_BRBEv1p1    |   WIP  |
3825548ab9bSManish Pandey+------------------+--------+
3835548ab9bSManish Pandey| FEAT_CMOW        |   NA   |
3845548ab9bSManish Pandey+------------------+--------+
3855548ab9bSManish Pandey| FEAT_Debugv8p8   |   NA   |
3865548ab9bSManish Pandey+------------------+--------+
3875548ab9bSManish Pandey| FEAT_HBC         |   NA   |
3885548ab9bSManish Pandey+------------------+--------+
3895548ab9bSManish Pandey| FEAT_MOPS        |   OK   |
3905548ab9bSManish Pandey+------------------+--------+
3915548ab9bSManish Pandey| FEAT_NMI         |   OK   |
3925548ab9bSManish Pandey+------------------+--------+
3935548ab9bSManish Pandey| FEAT_SPEv1p3     |   NA   |
3945548ab9bSManish Pandey+------------------+--------+
3955548ab9bSManish Pandey| FEAT_TIDCP1      |   NA   |
3965548ab9bSManish Pandey+------------------+--------+
3975548ab9bSManish Pandey| FEAT_PMUv3_TH    |   NA   |
3985548ab9bSManish Pandey+------------------+--------+
3995548ab9bSManish Pandey| FEAT_PMUv3p8     |   NA   |
4005548ab9bSManish Pandey+------------------+--------+
4015548ab9bSManish Pandey| FEAT_SCTLR2      |   OK   |
4025548ab9bSManish Pandey+------------------+--------+
4035548ab9bSManish Pandey| FEAT_TCR2        |   OK   |
4045548ab9bSManish Pandey+------------------+--------+
4055548ab9bSManish Pandey| FEAT_PMUv3_EXT64 |   NA   |
4065548ab9bSManish Pandey+------------------+--------+
4075548ab9bSManish Pandey
4085548ab9bSManish Pandey
4095548ab9bSManish Pandey2020 Extensions
4105548ab9bSManish Pandey---------------
4115548ab9bSManish Pandey
4125548ab9bSManish Pandey+---------------------+--------+
4135548ab9bSManish Pandey| Feature             | Status |
4145548ab9bSManish Pandey+=====================+========+
4155548ab9bSManish Pandey| FEAT_EBF16          |   NA   |
4165548ab9bSManish Pandey+---------------------+--------+
4175548ab9bSManish Pandey| FEAT_ETEv1p1        |   NA   |
4185548ab9bSManish Pandey+---------------------+--------+
4195548ab9bSManish Pandey| FEAT_HCX            |   OK   |
4205548ab9bSManish Pandey+---------------------+--------+
4215548ab9bSManish Pandey| FEAT_PAN3           |   OK   |
4225548ab9bSManish Pandey+---------------------+--------+
4235548ab9bSManish Pandey| FEAT_WFxT           |   NA   |
4245548ab9bSManish Pandey+---------------------+--------+
4255548ab9bSManish Pandey| FEAT_XS             |   NO   |
4265548ab9bSManish Pandey+---------------------+--------+
4275548ab9bSManish Pandey| FEAT_AFP            |   NA   |
4285548ab9bSManish Pandey+---------------------+--------+
4295548ab9bSManish Pandey| FEAT_RPRES          |   NA   |
4305548ab9bSManish Pandey+---------------------+--------+
4315548ab9bSManish Pandey| FEAT_LPA2           |   NO   |
4325548ab9bSManish Pandey+---------------------+--------+
4335548ab9bSManish Pandey| FEAT_LS64           |   NA   |
4345548ab9bSManish Pandey+---------------------+--------+
4355548ab9bSManish Pandey| FEAT_LS64_V         |   NA   |
4365548ab9bSManish Pandey+---------------------+--------+
4375548ab9bSManish Pandey| FEAT_LS64_ACCDATA   |   OK   |
4385548ab9bSManish Pandey+---------------------+--------+
4395548ab9bSManish Pandey| FEAT_MTE3           |   NA   |
4405548ab9bSManish Pandey+---------------------+--------+
4415548ab9bSManish Pandey| FEAT_MTE_ASYM_FAULT |   NA   |
4425548ab9bSManish Pandey+---------------------+--------+
4435548ab9bSManish Pandey| FEAT_SPEv1p2        |   OK   |
4445548ab9bSManish Pandey+---------------------+--------+
4455548ab9bSManish Pandey| FEAT_SPE_FnE        |   NA   |
4465548ab9bSManish Pandey+---------------------+--------+
4475548ab9bSManish Pandey| FEAT_SPE_PBT        |   OK   |
4485548ab9bSManish Pandey+---------------------+--------+
4495548ab9bSManish Pandey| FEAT_PMUv3p7        |   OK   |
4505548ab9bSManish Pandey+---------------------+--------+
4515548ab9bSManish Pandey
4528e67e710SBoyan KaratotevThe ``ENABLE_FEAT`` mechanism
4538e67e710SBoyan Karatotev-----------------------------
4548e67e710SBoyan Karatotev
4558e67e710SBoyan KaratotevThe Arm architecture defines several architecture extension features, named
4568e67e710SBoyan KaratotevFEAT_xxx in the architecure manual. Some of those features require setup code in
4578e67e710SBoyan Karatotevhigher exception levels, other features might be used by TF-A code itself.
4588e67e710SBoyan Karatotev
4598e67e710SBoyan KaratotevMost of the feature flags defined in the TF-A build system are allowed to take
4608e67e710SBoyan Karatotevthe values 0, 1 or 2, with the following meaning:
4618e67e710SBoyan Karatotev
4628e67e710SBoyan Karatotev::
4638e67e710SBoyan Karatotev
4648e67e710SBoyan Karatotev    ENABLE_FEAT_* = 0: Feature is unconditionally disabled at compile time.
4658e67e710SBoyan Karatotev    ENABLE_FEAT_* = 1: Feature is unconditionally enabled at compile time.
4668e67e710SBoyan Karatotev    ENABLE_FEAT_* = 2: Feature support is compiled in, but only enabled if the
4678e67e710SBoyan Karatotev                       feature present at runtime.
4688e67e710SBoyan Karatotev
4698e67e710SBoyan KaratotevWhen setting the flag to 0, the feature is disabled during compilation, and the
4708e67e710SBoyan Karatotevcompiler's optimization stage and the linker will try to remove as much of this
4718e67e710SBoyan Karatotevcode as possible.
4728e67e710SBoyan Karatotev
4738e67e710SBoyan KaratotevIf it is defined to 1, the code will use the feature unconditionally, so the CPU
4748e67e710SBoyan Karatotevis expected to support that feature. The FEATURE_DETECTION debug feature, if
4758e67e710SBoyan Karatotevenabled, will verify this.
4768e67e710SBoyan Karatotev
4778e67e710SBoyan KaratotevIf the feature flag is set to 2, support for the feature will be compiled in,
4788e67e710SBoyan Karatotevbut its existence will be checked at runtime, so it works on CPUs with or
4798e67e710SBoyan Karatotevwithout the feature. This is mostly useful for platforms which either support
4808e67e710SBoyan Karatotevmultiple different CPUs, or where the CPU is configured at runtime, like in
4818e67e710SBoyan Karatotevemulators.
4828e67e710SBoyan Karatotev
4838e67e710SBoyan KaratotevAdding support for a new feature
4848e67e710SBoyan Karatotev--------------------------------
4858e67e710SBoyan Karatotev
4868e67e710SBoyan KaratotevAdding support for a feature is required when:
4878e67e710SBoyan Karatotev
4888e67e710SBoyan Karatoteva) a feature is added to the architecture and it includes controls at EL3
4898e67e710SBoyan Karatotev
4908e67e710SBoyan Karatotevb) a feature is to be used by EL3 itself
4918e67e710SBoyan Karatotev
4928e67e710SBoyan Karatotevc) EL3 wants to hide a feature from lower ELs (eg. with ``FEAT_IDTE3``)
4938e67e710SBoyan Karatotev
4948e67e710SBoyan KaratotevThe following is a checklist with guidance on what to do to add a new feature,
4958e67e710SBoyan Karatotevin this case a fictional ``FEAT_ABC``. This is not an exhaustive list on how to
4968e67e710SBoyan Karatotevdo this, so please consult with previous such patches and/or maintainers. Please
4978e67e710SBoyan Karatotevconsult the Arm ARM on any specifics about the feature itself.
4988e67e710SBoyan Karatotev
4998e67e710SBoyan Karatotev- Add a feature flag to the build system.
5008e67e710SBoyan Karatotev
5018e67e710SBoyan Karatotev  - The flag's name should be in the form ``ENABLE_FEAT_ABC``.
5028e67e710SBoyan Karatotev
5038e67e710SBoyan Karatotev  - Add it to the ``assert_numerics`` and ``add_defines`` lists in the
5048e67e710SBoyan Karatotev    ``Makefile``.
5058e67e710SBoyan Karatotev
5068e67e710SBoyan Karatotev  - Add a default of ``0`` for it in ``make_helpers/arch_features.mk``. If the
5078e67e710SBoyan Karatotev    feature is listed as mandatory from a certain revision of the architecture,
5088e67e710SBoyan Karatotev    add it to the appropriate list at the top of the same file.
5098e67e710SBoyan Karatotev
5108e67e710SBoyan Karatotev  - Add any constraints in ``make_helpers/constraints.mk``. This will usually be
5118e67e710SBoyan Karatotev    other features which this feature depends on or is incompatible with and can
5128e67e710SBoyan Karatotev    be found in the main description of the feature in the Arm ARM.
5138e67e710SBoyan Karatotev
5148e67e710SBoyan Karatotev- Add the feature accessor functions in ``include/arch/aarch64/arch_features.h``.
5158e67e710SBoyan Karatotev
5168e67e710SBoyan Karatotev  A pair of functions must be defined in the form of ``is_feat_abc_present()``
5178e67e710SBoyan Karatotev  and ``is_feat_abc_supported()``.  Please use the provided macros to define
5188e67e710SBoyan Karatotev  these.
5198e67e710SBoyan Karatotev
5208e67e710SBoyan Karatotev  - The ``_supported`` variant is the one that should usually be used. If common
5218e67e710SBoyan Karatotev    code is to use it, a corresponding AArch32 version should be provided. It
5228e67e710SBoyan Karatotev    should return ``false`` if AArch32 is not to be supported.
5238e67e710SBoyan Karatotev
5248e67e710SBoyan Karatotev  - In rare occasions, the feature must be checked in assembly. A
5258e67e710SBoyan Karatotev    ``is_feat_abc_present_asm`` macro must be added to
5268e67e710SBoyan Karatotev    ``include/lib/cpus/aarch64/cpu_macros.S``.
5278e67e710SBoyan Karatotev
5288e67e710SBoyan Karatotev- Register the feature in ``common/feat_detect.c``.
5298e67e710SBoyan Karatotev
5308e67e710SBoyan Karatotev- Add support for the feature. This will be very feature specific and exact code
5318e67e710SBoyan Karatotev  will depend on why support is being added. Usually, support will be a few
5328e67e710SBoyan Karatotev  lines in ``lib/el3_runtime/aarch64/context_mgmt.c``. Some common things to do
5338e67e710SBoyan Karatotev  include:
5348e67e710SBoyan Karatotev
5358e67e710SBoyan Karatotev  - If support requires more extensive code sequences, consider adding them to a
5368e67e710SBoyan Karatotev    file in ``lib/extensions/abc/``. Functions in this file must be named
5378e67e710SBoyan Karatotev    similar to other features. Those are likely to be ``abc_enable()``,
5388e67e710SBoyan Karatotev    ``abc_enable_el3()``, or ``abc_disable()``. Naming depends on the call site.
5398e67e710SBoyan Karatotev
5408e67e710SBoyan Karatotev - If the feature introduces ``SCR_EL3``, ``MDCR_EL3``, or ``CPTR_EL3`` controls
5418e67e710SBoyan Karatotev   for lower ELs, access must be enabled for at least NS world, preferably all
5428e67e710SBoyan Karatotev   worlds by setting/clearing the bit in the context copy of this register.
5438e67e710SBoyan Karatotev
5448e67e710SBoyan Karatotev - If the feature introduces any control bits in ``SCR_EL3``, ``MDCR_EL3``,
5458e67e710SBoyan Karatotev   ``CPTR_EL3``, or ``MPAM3_EL3``, those must be added to the appropriate list
5468e67e710SBoyan Karatotev   in ``include/services/arm_arch_svc.h`` to register with
5478e67e710SBoyan Karatotev   ``ARCH_FEATURE_AVAILABILITY``. This must also be done in the
5488e67e710SBoyan Karatotev   ``test_smccc_arch_feature_availability`` test in TFTF, otherwise CI will
5498e67e710SBoyan Karatotev   fail.
5508e67e710SBoyan Karatotev
5518e67e710SBoyan Karatotev - If the feature comes with registers, those should be context switched if
5528e67e710SBoyan Karatotev   enabling the feature for multiple worlds.
5538e67e710SBoyan Karatotev
5548e67e710SBoyan Karatotev - Consider whether the feature introduces any potential side channels and how
5558e67e710SBoyan Karatotev   to close them.
5568e67e710SBoyan Karatotev
5578e67e710SBoyan Karatotev- Add documentation in ``docs/getting_started/build-options.rst``. This should
5588e67e710SBoyan Karatotev  include a brief description of what the enablement does, what values the flag
5598e67e710SBoyan Karatotev  can take, the default, and that it conforms to the ``ENABLE_FEAT`` mechanism.
5608e67e710SBoyan Karatotev  Adding feature enablement that does not conform to this mechanism is only done
5618e67e710SBoyan Karatotev  in exceptional cases.
5628e67e710SBoyan Karatotev
5638e67e710SBoyan Karatotev- Enable the feature for the FVP platform in ``plat/arm/board/fvp/platform.mk``,
5648e67e710SBoyan Karatotev  setting it to ``2`` (``FEAT_STATE_CHECKED``).
5658e67e710SBoyan Karatotev
5668e67e710SBoyan Karatotev- If the feature is optional, enable it in CI in the "allconfig" fragments.
5678e67e710SBoyan Karatotev  Those are currently ``run_config/fvp-aemv8a.all.bmcov``,
5688e67e710SBoyan Karatotev  ``run_config/fvp-spm.all.bmcov``, ``run_config/fvp-spm.all``, and
5698e67e710SBoyan Karatotev  ``run_config/fvp-aemv8a.all``. Mandatory features are expected to be covered
5708e67e710SBoyan Karatotev  by the architecture revision passed to the model.
5718e67e710SBoyan Karatotev
5728e67e710SBoyan Karatotev- Optionally, although recommended, is to add a test in TFTF. This should only
5738e67e710SBoyan Karatotev  be done if there are observable effects from lower ELs like register traps. It
5748e67e710SBoyan Karatotev  is not necessary to add a test for functionality that does not have EL3
5758e67e710SBoyan Karatotev  involvement (eg. whether a new instruction that cannot trap works).
5768e67e710SBoyan Karatotev
5775548ab9bSManish Pandey.. _Feature_description: https://developer.arm.com/documentation/109697/latest/
578