@@ -40,27 +40,57 @@ The structure layout is defined in ``acs_el3_param.h`` as:
4040
4141 #define ACS_EL3_PARAM_MAGIC 0x425341454C335031ULL /* 'BSAEL3P1' */
4242
43- typedef struct {
44- uint64_t version; /* 0 or 1 */
45-
46- /* Optional: rule selection override */
47- uint64_t rule_array_addr; /* RULE_ID_e[] of test IDs (can be 0) */
48- uint64_t rule_array_count; /* number of entries in rule_array_addr */
49-
50- /* Optional: module selection override */
51- uint64_t module_array_addr; /* uint32_t[] of module IDs (can be 0) */
52- uint64_t module_array_count; /* number of entries in module_array_addr */
53-
54- /* Optional: rules to skip */
55- uint64_t skip_rule_array_addr; /* RULE_ID_e[] of rule IDs to skip (can be 0) */
56- uint64_t skip_rule_array_count; /* number of entries in skip_rule_array_addr */
57- } acs_el3_params;
43+ typedef struct {
44+ uint64_t version; /*1, 2 or 3 */
45+
46+ /* Optional: rule selection override */
47+ uint64_t rule_array_addr; /* RULE_ID_e[] rule IDs (can be 0) */
48+ uint64_t rule_array_count; /* number of entries in rule_array_addr */
49+
50+ /* Optional: module selection override */
51+ uint64_t module_array_addr; /* uint32_t[] of module IDs (can be 0) */
52+ uint64_t module_array_count; /* number of entries in module_array_addr */
53+
54+ /* Optional: rules to skip */
55+ uint64_t skip_rule_array_addr; /* RULE_ID_e[] of rule IDs to skip (can be 0) */
56+ uint64_t skip_rule_array_count; /* number of entries in skip_rule_array_addr */
57+
58+ /* Optional: rules to skip */
59+ uint64_t skip_module_array_addr; /* uint32_t[] of module IDs (can be 0) */
60+ uint64_t skip_module_array_count; /* number of entries in module_array_addr */
61+
62+ uint64_t cache :1; /*Pass this flag to indicate that if the test system supports
63+ PCIe address translation cache\n*/
64+ uint64_t el1skiptrap_mask :1; /*Skips EL1 register checks*/
65+ uint64_t mmio :1; /*enable pal_mmio_read/write prints use with **verbose** */
66+ uint64_t no_crypto_ext :1; /*cryptography extension not supported*/
67+ uint64_t software_view_filter :3; /*b0 : OS software view test b1 : Hypervisior view test
68+ b2:platform security view test (can be used in combination)*/
69+ uint64_t p2p :1; /* PCIe Hierarchy Supports Peer-to-Peer*/
70+ uint64_t skip_dp_nic_ms :1; /*Skip PCIe tests for DisplayPort, Network,
71+ and Mass Storage devices*/
72+ uint64_t verbose :3; /*Verbosity of the prints*/
73+ uint64_t timeout :32; /*Set pass timeout (in us) for wakeup tests (500 us - 2 sec)*/
74+ uint64_t level_selection :3; /*
75+ 0: Level none
76+ 1: run test till input level
77+ 2: run test only for that level
78+ 3:future requirement level*/
79+ uint64_t level :4; /*Input level use along with level_selection*/
80+ uint64_t sys_cache :2; /*Specify SLC cache type 0-unknown
81+ 1-PPTT PE-side LLC
82+ 2 - HMAT mem-side LLC */
83+ uint64_t reserved :11;
84+ } acs_el3_params;
5885
5986Notes:
6087
6188* The structure must live in memory that NS-EL2 / ACS can read.
6289* Only the **address ** of the structure is passed in X20.
63- * ``version `` is used by ACS to check compatibility (currently 0 or 1).
90+ * ``version `` is used by ACS to check compatibility (currently the version is at 3).
91+ * version 1 supports module and rule selection
92+ * version 2 includes rule skip
93+ * version 3 includes module skip and other global variable overrides
6494* Any combination of tests, modules, or skip list may be provided.
6595
6696Module and Rule IDs
@@ -70,7 +100,7 @@ Module IDs are the **existing ENUMs**. For example:
70100
71101.. code-block :: c
72102 typedef enum {
73- PE,
103+ PE = 2 ,
74104 GIC,
75105 PERIPHERAL,
76106 MEM_MAP,
@@ -85,6 +115,10 @@ typedef enum {
85115 ETE,
86116 TPM,
87117 POWER_WAKEUP,
118+ PFDI,
119+ CXL,
120+ RME,
121+ GPU
88122} MODULE_NAME_e;
89123
90124
@@ -112,6 +146,21 @@ At boot, ACS:
112146 - Overrides ``g_rule_list `` / ``g_rule_count `` if test override is given.
113147 - Overrides ``g_execute_modules `` / ``g_num_modules `` if module override is given.
114148 - Overrides ``g_skip_rule_list `` / ``g_skip_rule_count `` if a skip list is given.
149+ - Overrides ``g_skip_modules `` / ``g_num_skip_modules `` if a skip module overide is given.
150+
151+ **global parameter override by el3 parameter **
152+
153+ - overrides ``g_pcie_p2p `` if p2p is set
154+ - overrides ``g_pcie_skip_dp_nic_ms `` if pcie skip is set
155+ - overrides ``g_print_level `` if print level is set
156+ - overrides ``g_wakeup_timeout `` if wakeup timeout is set
157+ - overrides ``g_print_mmio `` if print mmio is set
158+ - overrides ``g_crypto_support `` if crypto support is set
159+ - overrides ``g_bsa_sw_view_mask `` if software view mask is set
160+ - overrides ``g_pcie_cache_present `` if pcie cache is set
161+ - overrides ``g_sys_last_lvl_cache `` if system level cache is set
162+ - overrides ``g_level_filter_mode `` if level filter mode is set
163+ - overrides ``g_level_value `` if level value is set
1151643. Uses the (possibly overridden) ``g_execute_modules `` / ``g_num_modules `` to
116165 compute ``g_enabled_modules ``, and then:
117166 * Creates only the required information tables.
0 commit comments