fix: add split workaround check in Errata ABI test
This patch adds support to validate split workarounds
as part of Errata ABI CPU Features testcase. It also
improves the test case, making sure it also
runs on lead cpu.
Change-Id: Ic21fffdf20714ad639e92ad0be96d2f154f37f04
Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com>
diff --git a/include/runtime_services/errata_abi.h b/include/runtime_services/errata_abi.h
index dc50113..78c739f 100644
--- a/include/runtime_services/errata_abi.h
+++ b/include/runtime_services/errata_abi.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, Arm Limited. All rights reserved.
+ * Copyright (c) 2025, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -49,6 +49,7 @@
int em_errata_id;
unsigned int rxpx_low;
unsigned int rxpx_high;
+ unsigned int split_wa;
} em_cpu_errata_t;
typedef struct em_cpu{
diff --git a/tftf/tests/runtime_services/standard_service/errata_abi/api_tests/test_errata_abi_functionality.c b/tftf/tests/runtime_services/standard_service/errata_abi/api_tests/test_errata_abi_functionality.c
index 91e5307..98c567d 100644
--- a/tftf/tests/runtime_services/standard_service/errata_abi/api_tests/test_errata_abi_functionality.c
+++ b/tftf/tests/runtime_services/standard_service/errata_abi/api_tests/test_errata_abi_functionality.c
@@ -44,8 +44,8 @@
em_cpu_t cortex_A15_errata_list = {
.cpu_pn = 0xC0F,
.cpu_errata = {
- {816470, 0x30, 0xFF},
- {827671, 0x30, 0xFF},
+ {816470, 0x30, 0xFF, 0x00},
+ {827671, 0x30, 0xFF, 0x00},
{-1}
},
};
@@ -53,8 +53,8 @@
em_cpu_t cortex_A17_errata_list = {
.cpu_pn = 0xC0E,
.cpu_errata = {
- {852421, 0x00, 0x12},
- {852423, 0x00, 0x12},
+ {852421, 0x00, 0x12, 0x00},
+ {852423, 0x00, 0x12, 0x00},
{-1}
},
};
@@ -62,7 +62,7 @@
em_cpu_t cortex_A9_errata_list = {
.cpu_pn = 0xC09,
.cpu_errata = {
- {790473, 0x00, 0xFF},
+ {790473, 0x00, 0xFF, 0x00},
{-1}
},
};
@@ -70,8 +70,8 @@
em_cpu_t cortex_A35_errata_list = {
.cpu_pn = 0xD04,
.cpu_errata = {
- {855472, 0x00, 0x00},
- {1234567, 0x00, 0x00},
+ {855472, 0x00, 0x00, 0x00},
+ {1234567, 0x00, 0x00, 0x00},
{-1}
},
};
@@ -79,15 +79,15 @@
em_cpu_t cortex_A53_errata_list = {
.cpu_pn = 0xD03,
.cpu_errata = {
- {819472, 0x00, 0x01},
- {824069, 0x00, 0x02},
- {826319, 0x00, 0x02},
- {827319, 0x00, 0x02},
- {835769, 0x00, 0x04},
- {836870, 0x00, 0x03},
- {843419, 0x00, 0x04},
- {855873, 0x03, 0xFF},
- {1530924, 0x00, 0xFF},
+ {819472, 0x00, 0x01, 0x00},
+ {824069, 0x00, 0x02, 0x00},
+ {826319, 0x00, 0x02, 0x00},
+ {827319, 0x00, 0x02, 0x00},
+ {835769, 0x00, 0x04, 0x00},
+ {836870, 0x00, 0x03, 0x00},
+ {843419, 0x00, 0x04, 0x00},
+ {855873, 0x03, 0xFF, 0x00},
+ {1530924, 0x00, 0xFF, 0x00},
{-1}
},
};
@@ -95,13 +95,13 @@
em_cpu_t cortex_A55_errata_list = {
.cpu_pn = 0xD05,
.cpu_errata = {
- {768277, 0x00, 0x00},
- {778703, 0x00, 0x00},
- {798797, 0x00, 0x00},
- {846532, 0x00, 0x01},
- {903758, 0x00, 0x01},
- {1221012, 0x00, 0x10},
- {1530923, 0x00, 0xFF},
+ {768277, 0x00, 0x00, 0x00},
+ {778703, 0x00, 0x00, 0x00},
+ {798797, 0x00, 0x00, 0x00},
+ {846532, 0x00, 0x01, 0x00},
+ {903758, 0x00, 0x01, 0x00},
+ {1221012, 0x00, 0x10, 0x00},
+ {1530923, 0x00, 0xFF, 0x00},
{-1}
},
};
@@ -109,18 +109,18 @@
em_cpu_t cortex_A57_errata_list = {
.cpu_pn = 0xD07,
.cpu_errata = {
- {806969, 0x00, 0x00},
- {813419, 0x00, 0x00},
- {813420, 0x00, 0x00},
- {814670, 0x00, 0x00},
- {817169, 0x00, 0x01},
- {826974, 0x00, 0x11},
- {826977, 0x00, 0x11},
- {828024, 0x00, 0x11},
- {829520, 0x00, 0x12},
- {833471, 0x00, 0x12},
- {859972, 0x00, 0x13},
- {1319537, 0x00, 0xFF},
+ {806969, 0x00, 0x00, 0x00},
+ {813419, 0x00, 0x00, 0x00},
+ {813420, 0x00, 0x00, 0x00},
+ {814670, 0x00, 0x00, 0x00},
+ {817169, 0x00, 0x01, 0x00},
+ {826974, 0x00, 0x11, 0x00},
+ {826977, 0x00, 0x11, 0x00},
+ {828024, 0x00, 0x11, 0x00},
+ {829520, 0x00, 0x12, 0x00},
+ {833471, 0x00, 0x12, 0x00},
+ {859972, 0x00, 0x13, 0x00},
+ {1319537, 0x00, 0xFF, 0x00},
{-1}
},
};
@@ -128,10 +128,10 @@
em_cpu_t cortex_A72_errata_list = {
.cpu_pn = 0xD08,
.cpu_errata = {
- {859971, 0x00, 0x03},
- {1234567, 0x00, 0xFF},
- {1319367, 0x00, 0xFF},
- {9876543, 0x00, 0xFF},
+ {859971, 0x00, 0x03, 0x00},
+ {1234567, 0x00, 0xFF, 0x00},
+ {1319367, 0x00, 0xFF, 0x00},
+ {9876543, 0x00, 0xFF, 0x00},
{-1}
},
};
@@ -139,8 +139,8 @@
em_cpu_t cortex_A73_errata_list = {
.cpu_pn = 0xD09,
.cpu_errata = {
- {852427, 0x00, 0x00},
- {855423, 0x00, 0x01},
+ {852427, 0x00, 0x00, 0x00},
+ {855423, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -148,8 +148,8 @@
em_cpu_t cortex_A75_errata_list = {
.cpu_pn = 0xD0A,
.cpu_errata = {
- {764081, 0x00, 0x00},
- {790748, 0x00, 0x00},
+ {764081, 0x00, 0x00, 0x00},
+ {790748, 0x00, 0x00, 0x00},
{-1}
},
};
@@ -157,19 +157,19 @@
em_cpu_t cortex_A76_errata_list = {
.cpu_pn = 0xD0B,
.cpu_errata = {
- {1073348, 0x00, 0x10},
- {1130799, 0x00, 0x20},
- {1165522, 0x00, 0xFF},
- {1220197, 0x00, 0x20},
- {1257314, 0x00, 0x30},
- {1262606, 0x00, 0x30},
- {1262888, 0x00, 0x30},
- {1275112, 0x00, 0x30},
- {1286807, 0x00, 0x30},
- {1791580, 0x00, 0x40},
- {1868343, 0x00, 0x40},
- {1946160, 0x30, 0x41},
- {2743102, 0x00, 0x41},
+ {1073348, 0x00, 0x10, 0x00},
+ {1130799, 0x00, 0x20, 0x00},
+ {1165522, 0x00, 0xFF, 0x00},
+ {1220197, 0x00, 0x20, 0x00},
+ {1257314, 0x00, 0x30, 0x00},
+ {1262606, 0x00, 0x30, 0x00},
+ {1262888, 0x00, 0x30, 0x00},
+ {1275112, 0x00, 0x30, 0x00},
+ {1286807, 0x00, 0x30, 0x00},
+ {1791580, 0x00, 0x40, 0x00},
+ {1868343, 0x00, 0x40, 0x00},
+ {1946160, 0x30, 0x41, 0x00},
+ {2743102, 0x00, 0x41, 0x00},
{-1}
},
};
@@ -177,13 +177,13 @@
em_cpu_t cortex_A77_errata_list = {
.cpu_pn = 0xD0D,
.cpu_errata = {
- {1508412, 0x00, 0x10},
- {1791578, 0x00, 0x11},
- {1800714, 0x00, 0x11},
- {1925769, 0x00, 0x11},
- {1946167, 0x00, 0x11},
- {2356587, 0x00, 0x11},
- {2743100, 0x00, 0x11},
+ {1508412, 0x00, 0x10, 0x00},
+ {1791578, 0x00, 0x11, 0x00},
+ {1800714, 0x00, 0x11, 0x00},
+ {1925769, 0x00, 0x11, 0x00},
+ {1946167, 0x00, 0x11, 0x00},
+ {2356587, 0x00, 0x11, 0x00},
+ {2743100, 0x00, 0x11, 0x00},
{-1}
},
};
@@ -191,11 +191,11 @@
em_cpu_t cortex_A78_AE_errata_list = {
.cpu_pn = 0xD42,
.cpu_errata = {
- {1941500, 0x00, 0x01},
- {1951502, 0x00, 0x01},
- {2376748, 0x00, 0x01},
- {2712574, 0x00, 0x02},
- {2395408, 0x00, 0x01},
+ {1941500, 0x00, 0x01, 0x00},
+ {1951502, 0x00, 0x01, 0x00},
+ {2376748, 0x00, 0x01, 0x00},
+ {2712574, 0x00, 0x02, 0x00},
+ {2395408, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -203,19 +203,19 @@
em_cpu_t cortex_A78_errata_list = {
.cpu_pn = 0xD41,
.cpu_errata = {
- {1688305, 0x00, 0x10},
- {1821534, 0x00, 0x10},
- {1941498, 0x00, 0x11},
- {1951500, 0x10, 0x11},
- {1952683, 0x00, 0x00},
- {2132060, 0x00, 0x12},
- {2242635, 0x10, 0x12},
- {2376745, 0x00, 0x12},
- {2395406, 0x00, 0x12},
- {2712571, 0x00, 0x12},
- {2742426, 0x00, 0x12},
- {2772019, 0x00, 0x12},
- {2779479, 0x00, 0x12},
+ {1688305, 0x00, 0x10, 0x00},
+ {1821534, 0x00, 0x10, 0x00},
+ {1941498, 0x00, 0x11, 0x00},
+ {1951500, 0x10, 0x11, 0x00},
+ {1952683, 0x00, 0x00, 0x00},
+ {2132060, 0x00, 0x12, 0x00},
+ {2242635, 0x10, 0x12, 0x00},
+ {2376745, 0x00, 0x12, 0x00},
+ {2395406, 0x00, 0x12, 0x00},
+ {2712571, 0x00, 0x12, 0x00},
+ {2742426, 0x00, 0x12, 0x00},
+ {2772019, 0x00, 0x12, 0x00},
+ {2779479, 0x00, 0x12, 0x00},
{-1}
},
};
@@ -223,17 +223,17 @@
em_cpu_t cortex_A78C_errata_list = {
.cpu_pn = 0xD4B,
.cpu_errata = {
- {1827430, 0x00, 0x00},
- {1827440, 0x00, 0x00},
- {2132064, 0x01, 0x02},
- {2242638, 0x01, 0x02},
- {2376749, 0x01, 0x02},
- {2395411, 0x01, 0x02},
- {2683027, 0x01, 0x02},
- {2712575, 0x01, 0x02},
- {2743232, 0x01, 0x02},
- {2772121, 0x00, 0x02},
- {2779484, 0x01, 0x02},
+ {1827430, 0x00, 0x00, 0x00},
+ {1827440, 0x00, 0x00, 0x00},
+ {2132064, 0x01, 0x02, 0x00},
+ {2242638, 0x01, 0x02, 0x00},
+ {2376749, 0x01, 0x02, 0x00},
+ {2395411, 0x01, 0x02, 0x00},
+ {2683027, 0x01, 0x02, 0x00},
+ {2712575, 0x01, 0x02, 0x00},
+ {2743232, 0x01, 0x02, 0x00},
+ {2772121, 0x00, 0x02, 0x00},
+ {2779484, 0x01, 0x02, 0x00},
{-1}
},
};
@@ -242,9 +242,9 @@
em_cpu_t cortex_X1_errata_list = {
.cpu_pn = 0xD44,
.cpu_errata = {
- {1688305, 0x00, 0x10},
- {1821534, 0x00, 0x10},
- {1827429, 0x00, 0x10},
+ {1688305, 0x00, 0x10, 0x00},
+ {1821534, 0x00, 0x10, 0x00},
+ {1827429, 0x00, 0x10, 0x00},
{-1}
},
@@ -253,21 +253,21 @@
em_cpu_t neoverse_N1_errata_list = {
.cpu_pn = 0xD0C,
.cpu_errata = {
- {1043202, 0x00, 0x10},
- {1073348, 0x00, 0x10},
- {1130799, 0x00, 0x20},
- {1165347, 0x00, 0x20},
- {1207823, 0x00, 0x20},
- {1220197, 0x00, 0x20},
- {1257314, 0x00, 0x30},
- {1262606, 0x00, 0x30},
- {1262888, 0x00, 0x30},
- {1275112, 0x00, 0x30},
- {1315703, 0x00, 0x30},
- {1542419, 0x30, 0x40},
- {1868343, 0x00, 0x40},
- {1946160, 0x30, 0x41},
- {2743102, 0x00, 0x41},
+ {1043202, 0x00, 0x10, 0x00},
+ {1073348, 0x00, 0x10, 0x00},
+ {1130799, 0x00, 0x20, 0x00},
+ {1165347, 0x00, 0x20, 0x00},
+ {1207823, 0x00, 0x20, 0x00},
+ {1220197, 0x00, 0x20, 0x00},
+ {1257314, 0x00, 0x30, 0x00},
+ {1262606, 0x00, 0x30, 0x00},
+ {1262888, 0x00, 0x30, 0x00},
+ {1275112, 0x00, 0x30, 0x00},
+ {1315703, 0x00, 0x30, 0x00},
+ {1542419, 0x30, 0x40, 0x01},
+ {1868343, 0x00, 0x40, 0x00},
+ {1946160, 0x30, 0x41, 0x00},
+ {2743102, 0x00, 0x41, 0x00},
{-1}
},
};
@@ -275,23 +275,23 @@
em_cpu_t neoverse_V1_errata_list = {
.cpu_pn = 0xD40,
.cpu_errata = {
- {1618635, 0x00, 0x0F},
- {1774420, 0x00, 0x10},
- {1791573, 0x00, 0x10},
- {1852267, 0x00, 0x10},
- {1925756, 0x00, 0x11},
- {1940577, 0x10, 0x11},
- {1966096, 0x10, 0x11},
- {2108267, 0x00, 0x11},
- {2139242, 0x00, 0x11},
- {2216392, 0x10, 0x11},
- {2294912, 0x00, 0x11},
- {2348377, 0x00, 0x11},
- {2372203, 0x00, 0x11},
- {2701953, 0x00, 0x11},
- {2743093, 0x00, 0x12},
- {2743233, 0x00, 0x12},
- {2779461, 0x00, 0x12},
+ {1618635, 0x00, 0x0F, 0x00},
+ {1774420, 0x00, 0x10, 0x00},
+ {1791573, 0x00, 0x10, 0x00},
+ {1852267, 0x00, 0x10, 0x00},
+ {1925756, 0x00, 0x11, 0x00},
+ {1940577, 0x10, 0x11, 0x00},
+ {1966096, 0x10, 0x11, 0x00},
+ {2108267, 0x00, 0x11, 0x00},
+ {2139242, 0x00, 0x11, 0x00},
+ {2216392, 0x10, 0x11, 0x00},
+ {2294912, 0x00, 0x11, 0x00},
+ {2348377, 0x00, 0x11, 0x00},
+ {2372203, 0x00, 0x11, 0x00},
+ {2701953, 0x00, 0x11, 0x00},
+ {2743093, 0x00, 0x12, 0x00},
+ {2743233, 0x00, 0x12, 0x00},
+ {2779461, 0x00, 0x12, 0x00},
{-1}
},
};
@@ -299,24 +299,24 @@
em_cpu_t cortex_A710_errata_list = {
.cpu_pn = 0xD47,
.cpu_errata = {
- {1987031, 0x00, 0x20},
- {2008768, 0x00, 0x20},
- {2017096, 0x00, 0x20},
- {2055002, 0x10, 0x20},
- {2058056, 0x00, 0x10},
- {2081180, 0x00, 0x20},
- {2083908, 0x20, 0x20},
- {2136059, 0x00, 0x20},
- {2147715, 0x20, 0x20},
- {2216384, 0x00, 0x20},
- {2267065, 0x00, 0x20},
- {2282622, 0x00, 0x21},
- {2291219, 0x00, 0x20},
- {2371105, 0x00, 0x20},
- {2701952, 0x00, 0x21},
- {2742423, 0x00, 0x21},
- {2768515, 0x00, 0x21},
- {2778471, 0x00, 0x21},
+ {1987031, 0x00, 0x20, 0x00},
+ {2008768, 0x00, 0x20, 0x00},
+ {2017096, 0x00, 0x20, 0x00},
+ {2055002, 0x10, 0x20, 0x00},
+ {2058056, 0x00, 0x10, 0x00},
+ {2081180, 0x00, 0x20, 0x00},
+ {2083908, 0x20, 0x20, 0x00},
+ {2136059, 0x00, 0x20, 0x00},
+ {2147715, 0x20, 0x20, 0x00},
+ {2216384, 0x00, 0x20, 0x00},
+ {2267065, 0x00, 0x20, 0x00},
+ {2282622, 0x00, 0x21, 0x00},
+ {2291219, 0x00, 0x20, 0x00},
+ {2371105, 0x00, 0x20, 0x00},
+ {2701952, 0x00, 0x21, 0x00},
+ {2742423, 0x00, 0x21, 0x00},
+ {2768515, 0x00, 0x21, 0x00},
+ {2778471, 0x00, 0x21, 0x00},
{-1}
},
};
@@ -324,22 +324,22 @@
em_cpu_t neoverse_N2_errata_list = {
.cpu_pn = 0xD49,
.cpu_errata = {
- {2002655, 0x00, 0x00},
- {2025414, 0x00, 0x00},
- {2067956, 0x00, 0x00},
- {2138953, 0x00, 0x00},
- {2138956, 0x00, 0x00},
- {2138958, 0x00, 0x00},
- {2189731, 0x00, 0x00},
- {2242400, 0x00, 0x00},
- {2242415, 0x00, 0x00},
- {2280757, 0x00, 0x00},
- {2326639, 0x00, 0x00},
- {2376738, 0x00, 0x00},
- {2388450, 0x00, 0x00},
- {2728475, 0x00, 0x02},
- {2743089, 0x00, 0x02},
- {2779511, 0x00, 0x02},
+ {2002655, 0x00, 0x00, 0x00},
+ {2025414, 0x00, 0x00, 0x00},
+ {2067956, 0x00, 0x00, 0x00},
+ {2138953, 0x00, 0x00, 0x00},
+ {2138956, 0x00, 0x00, 0x00},
+ {2138958, 0x00, 0x00, 0x00},
+ {2189731, 0x00, 0x00, 0x00},
+ {2242400, 0x00, 0x00, 0x00},
+ {2242415, 0x00, 0x00, 0x00},
+ {2280757, 0x00, 0x00, 0x00},
+ {2326639, 0x00, 0x00, 0x00},
+ {2376738, 0x00, 0x00, 0x00},
+ {2388450, 0x00, 0x00, 0x00},
+ {2728475, 0x00, 0x02, 0x00},
+ {2743089, 0x00, 0x02, 0x00},
+ {2779511, 0x00, 0x02, 0x00},
{-1}
},
};
@@ -347,19 +347,19 @@
em_cpu_t cortex_X2_errata_list = {
.cpu_pn = 0xD48,
.cpu_errata = {
- {2002765, 0x00, 0x20},
- {2017096, 0x00, 0x20},
- {2058056, 0x00, 0x20},
- {2081180, 0x00, 0x20},
- {2083908, 0x00, 0x20},
- {2147715, 0x20, 0x20},
- {2216384, 0x00, 0x20},
- {2282622, 0x00, 0x21},
- {2371105, 0x00, 0x21},
- {2701952, 0x00, 0x21},
- {2742423, 0x00, 0x21},
- {2768515, 0x00, 0x21},
- {2778471, 0x00, 0x21},
+ {2002765, 0x00, 0x20, 0x00},
+ {2017096, 0x00, 0x20, 0x00},
+ {2058056, 0x00, 0x20, 0x00},
+ {2081180, 0x00, 0x20, 0x00},
+ {2083908, 0x00, 0x20, 0x00},
+ {2147715, 0x20, 0x20, 0x00},
+ {2216384, 0x00, 0x20, 0x00},
+ {2282622, 0x00, 0x21, 0x00},
+ {2371105, 0x00, 0x21, 0x00},
+ {2701952, 0x00, 0x21, 0x00},
+ {2742423, 0x00, 0x21, 0x00},
+ {2768515, 0x00, 0x21, 0x00},
+ {2778471, 0x00, 0x21, 0x00},
{-1}
},
};
@@ -367,19 +367,19 @@
em_cpu_t cortex_A510_errata_list = {
.cpu_pn = 0xD46,
.cpu_errata = {
- {1922240, 0x00, 0x00},
- {2041909, 0x02, 0x02},
- {2042739, 0x00, 0x02},
- {2080326, 0x02, 0x02},
- {2172148, 0x00, 0x10},
- {2218950, 0x00, 0x10},
- {2250311, 0x00, 0x10},
- {2288014, 0x00, 0x10},
- {2347730, 0x00, 0x11},
- {2371937, 0x00, 0x11},
- {2666669, 0x00, 0x11},
- {2684597, 0x00, 0x12},
- {1234567, 0x00, 0x12},
+ {1922240, 0x00, 0x00, 0x00},
+ {2041909, 0x02, 0x02, 0x00},
+ {2042739, 0x00, 0x02, 0x00},
+ {2080326, 0x02, 0x02, 0x00},
+ {2172148, 0x00, 0x10, 0x00},
+ {2218950, 0x00, 0x10, 0x00},
+ {2250311, 0x00, 0x10, 0x00},
+ {2288014, 0x00, 0x10, 0x00},
+ {2347730, 0x00, 0x11, 0x00},
+ {2371937, 0x00, 0x11, 0x00},
+ {2666669, 0x00, 0x11, 0x00},
+ {2684597, 0x00, 0x12, 0x00},
+ {1234567, 0x00, 0x12, 0x00},
{-1}
},
};
@@ -387,14 +387,14 @@
em_cpu_t cortex_X4_errata_list = {
.cpu_pn = 0xD82,
.cpu_errata = {
- {2726228, 0x00, 0x01},
- {2740089, 0x00, 0x01},
- {2763018, 0x00, 0x01},
- {2816013, 0x00, 0x01},
- {2897503, 0x00, 0x01},
- {2923985, 0x00, 0x01},
- {2957258, 0x00, 0x01},
- {3076789, 0x00, 0x01},
+ {2726228, 0x00, 0x01, 0x00},
+ {2740089, 0x00, 0x01, 0x00},
+ {2763018, 0x00, 0x01, 0x00},
+ {2816013, 0x00, 0x01, 0x00},
+ {2897503, 0x00, 0x01, 0x00},
+ {2923985, 0x00, 0x01, 0x00},
+ {2957258, 0x00, 0x01, 0x00},
+ {3076789, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -402,8 +402,8 @@
em_cpu_t cortex_X925_errata_list = {
.cpu_pn = 0xD85,
.cpu_errata = {
- {2963999, 0x00, 0x00},
- {3701747, 0x00, 0x01},
+ {2963999, 0x00, 0x00, 0x00},
+ {3701747, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -411,7 +411,7 @@
em_cpu_t cortex_A715_errata_list = {
.cpu_pn = 0xD4D,
.cpu_errata = {
- {2561034, 0x10, 0x10},
+ {2561034, 0x10, 0x10, 0x00},
{-1}
},
};
@@ -419,15 +419,15 @@
em_cpu_t neoverse_V2_errata_list = {
.cpu_pn = 0xD4F,
.cpu_errata = {
- {2331132, 0x00, 0x02},
- {2618597, 0x00, 0x01},
- {2662553, 0x00, 0x01},
- {2719103, 0x00, 0x01},
- {2719103, 0x00, 0x01},
- {2719105, 0x00, 0x01},
- {2743011, 0x00, 0x01},
- {2779510, 0x00, 0x01},
- {2801372, 0x00, 0x01},
+ {2331132, 0x00, 0x02, 0x00},
+ {2618597, 0x00, 0x01, 0x00},
+ {2662553, 0x00, 0x01, 0x00},
+ {2719103, 0x00, 0x01, 0x00},
+ {2719103, 0x00, 0x01, 0x00},
+ {2719105, 0x00, 0x01, 0x00},
+ {2743011, 0x00, 0x01, 0x00},
+ {2779510, 0x00, 0x01, 0x00},
+ {2801372, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -435,16 +435,16 @@
em_cpu_t cortex_X3_errata_list = {
.cpu_pn = 0xD4E,
.cpu_errata = {
- {2070301, 0x00, 0x12},
- {2266875, 0x00, 0x10},
- {2302506, 0x00, 0x11},
- {2313909, 0x00, 0x10},
- {2615812, 0x00, 0x11},
- {2641945, 0x00, 0x10},
- {2701951, 0x00, 0x11},
- {2742421, 0x00, 0x11},
- {2743088, 0x00, 0x11},
- {2779509, 0x00, 0x11},
+ {2070301, 0x00, 0x12, 0x00},
+ {2266875, 0x00, 0x10, 0x00},
+ {2302506, 0x00, 0x11, 0x00},
+ {2313909, 0x00, 0x10, 0x00},
+ {2615812, 0x00, 0x11, 0x00},
+ {2641945, 0x00, 0x10, 0x00},
+ {2701951, 0x00, 0x11, 0x00},
+ {2742421, 0x00, 0x11, 0x00},
+ {2743088, 0x00, 0x11, 0x00},
+ {2779509, 0x00, 0x11, 0x00},
{-1}
},
};
@@ -452,8 +452,8 @@
em_cpu_t cortex_A520_errata_list = {
.cpu_pn = 0xD80,
.cpu_errata = {
- {2630792, 0x00, 0x01},
- {2858100, 0x00, 0x01},
+ {2630792, 0x00, 0x01, 0x00},
+ {2858100, 0x00, 0x01, 0x00},
{-1}
},
};
@@ -514,6 +514,10 @@
INFO("Partnum extracted = %x and rxpx extracted val = %x\n\n", midr_val, \
rxpx_val_extracted);
+
+ /* Signal to the lead CPU that the calling CPU has entered the test */
+ tftf_send_event(&cpu_has_entered_test[core_pos]);
+
switch (midr_val) {
case 0xD09:
{
@@ -695,9 +699,11 @@
}
case EM_HIGHER_EL_MITIGATION:
{
- return_val = (RXPX_RANGE(rxpx_val_extracted, \
+ return_val = ((RXPX_RANGE(rxpx_val_extracted, \
cpu_ptr->cpu_errata[i].rxpx_low, cpu_ptr->cpu_errata[i].rxpx_high) \
- == true) ? TEST_RESULT_SUCCESS : TEST_RESULT_FAIL;
+ == true) && (!cpu_ptr->cpu_errata[i].split_wa)) ? \
+ TEST_RESULT_SUCCESS : TEST_RESULT_FAIL;
+
break;
}
case EM_UNKNOWN_ERRATUM:
@@ -714,9 +720,11 @@
}
INFO("errata_id = %d and test_em_cpu_erratum_features = %ld\n",\
cpu_ptr->cpu_errata[i].em_errata_id, ret_val.ret0);
+
+ if(return_val == TEST_RESULT_FAIL)
+ return TEST_RESULT_FAIL;
}
- /* Signal to the lead CPU that the calling CPU has entered the test */
- tftf_send_event(&cpu_has_entered_test[core_pos]);
+
return return_val;
}
@@ -728,6 +736,8 @@
int32_t version_return = tftf_em_abi_version();
+ test_result_t return_val = TEST_RESULT_FAIL;
+
SKIP_TEST_IF_LESS_THAN_N_CPUS(1);
if (version_return == EM_NOT_SUPPORTED) {
@@ -738,6 +748,9 @@
return TEST_RESULT_FAIL;
}
+ /* Run test on lead cpu */
+ return_val = test_em_cpu_features();
+
lead_mpid = read_mpidr_el1() & MPID_MASK;
/* Power on all CPUs */
for_each_cpu(cpu_node) {
@@ -757,5 +770,5 @@
core_pos = platform_get_core_pos(cpu_mpid);
tftf_wait_for_event(&cpu_has_entered_test[core_pos]);
}
- return TEST_RESULT_SUCCESS;
+ return return_val;
}