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;
 }