Merge changes from topic "sgi_to_nrd"

* changes:
  fix(arm): fix comments referencing "SGI platform"
  refactor(sgi): replace references to "SGI"/"sgi" for neoverse_rd
  refactor(sgi): rename "CSS_SGI" macro prefixes to "NRD"
  refactor(sgi): move apis and types to "nrd" prefix
  refactor(sgi): replace build-option prefix to "NRD"
  refactor(sgi): regroup "sgi" and "rdinfra" to "neoverse_rd"
diff --git a/docs/index.rst b/docs/index.rst
index 4869af1..7e54db2 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -12,6 +12,7 @@
    design
    implementing-tests
    porting/index
+   plat/index
    change-log
    license
 
diff --git a/docs/plat/index.rst b/docs/plat/index.rst
new file mode 100644
index 0000000..6f5d9a5
--- /dev/null
+++ b/docs/plat/index.rst
@@ -0,0 +1,17 @@
+Platform Ports
+==============
+
+.. toctree::
+   :maxdepth: 1
+   :caption: Contents
+   :hidden:
+
+   xilinx-versal_net
+   xilinx-versal
+
+This section provides a list of supported upstream *platform ports* and the
+documentation associated with them.
+
+--------------
+
+*Copyright (c) 2024, Arm Limited. All rights reserved.*
diff --git a/plat/xilinx/common/timer/timers.c b/plat/xilinx/common/timer/timers.c
index a6e1afa..f53cd84 100644
--- a/plat/xilinx/common/timer/timers.c
+++ b/plat/xilinx/common/timer/timers.c
@@ -27,7 +27,6 @@
 
 #define TTC_CNT_CNTRL_DISABLE_MASK	BIT(0)
 
-#define TTC_CLK_SEL_OFFSET		U(0x360)
 #define TTC_CLK_SEL_MASK		GENMASK(1, 0)
 
 #define TTC_CLK_SEL_PS_REF		BIT(0)
diff --git a/plat/xilinx/versal/include/platform_def.h b/plat/xilinx/versal/include/platform_def.h
index 925825c..73b6db2 100644
--- a/plat/xilinx/versal/include/platform_def.h
+++ b/plat/xilinx/versal/include/platform_def.h
@@ -116,5 +116,6 @@
 #define IRQ_TWDOG_INTID				U(0x51)
 
 #define TTC_TIMER_IRQ				U(69)
+#define TTC_CLK_SEL_OFFSET			U(0x360)
 
 #endif /* PLATFORM_DEF_H */
diff --git a/plat/xilinx/versal_net/include/platform_def.h b/plat/xilinx/versal_net/include/platform_def.h
index 8431ca6..92a7ba0 100644
--- a/plat/xilinx/versal_net/include/platform_def.h
+++ b/plat/xilinx/versal_net/include/platform_def.h
@@ -122,5 +122,6 @@
 #define IRQ_TWDOG_INTID				U(0x51)
 
 #define TTC_TIMER_IRQ				U(75)
+#define TTC_CLK_SEL_OFFSET			U(0x360)
 
 #endif /* PLATFORM_DEF_H */
diff --git a/tftf/tests/misc_tests/test_undef_injection.c b/tftf/tests/misc_tests/test_undef_injection.c
new file mode 100644
index 0000000..2d925a2
--- /dev/null
+++ b/tftf/tests/misc_tests/test_undef_injection.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <arch.h>
+#include <arch_helpers.h>
+#include <arm_arch_svc.h>
+#include <assert.h>
+#include <debug.h>
+#include <smccc.h>
+#include <sync.h>
+#include <tftf_lib.h>
+#include <platform_def.h>
+
+static volatile bool undef_injection_triggered;
+
+static bool undef_injection_handler(void)
+{
+	uint64_t esr_el2 = read_esr_el2();
+	if (EC_BITS(esr_el2) == EC_UNKNOWN) {
+		VERBOSE("UNDEF injection from EL3\n");
+		undef_injection_triggered = true;
+		return true;
+	}
+
+	return false;
+}
+
+/*
+ * Test to verify UNDEF injection support in TF-A
+ *
+ * This test tries to access FGT EL2 registers which traps to EL3 and then
+ * the error is injected back from EL3 to TFTF to ensure that injection
+ * logic in TF-A is working, it also ensures that EL3 is still functional
+ * after UNDEF injection.
+ *
+ * To trap FGT register access to EL3, we run this test on a model with
+ * FEAT_FGT present but the traps from EL3 are not disabled by setting
+ * ENABLE_FEAT_FGT = 0
+ */
+test_result_t test_undef_injection(void)
+{
+	undef_injection_triggered = false;
+
+	register_custom_sync_exception_handler(undef_injection_handler);
+
+	/* Try to access a register which traps to EL3 */
+	read_hfgitr_el2();
+
+	unregister_custom_sync_exception_handler();
+
+	/* Ensure that EL3 still functional */
+	smc_args args;
+	smc_ret_values smc_ret;
+	memset(&args, 0, sizeof(args));
+	args.fid = SMCCC_VERSION;
+	smc_ret = tftf_smc(&args);
+
+	tftf_testcase_printf("SMCCC Version = %d.%d\n",
+		(int)((smc_ret.ret0 >> SMCCC_VERSION_MAJOR_SHIFT) & SMCCC_VERSION_MAJOR_MASK),
+		(int)((smc_ret.ret0 >> SMCCC_VERSION_MINOR_SHIFT) & SMCCC_VERSION_MINOR_MASK));
+
+	if (undef_injection_triggered == false) {
+		return TEST_RESULT_FAIL;
+	}
+
+	return TEST_RESULT_SUCCESS;
+}
diff --git a/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c b/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
index a424b09..682a699 100644
--- a/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
+++ b/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
@@ -215,6 +215,18 @@
 		}
 	}
 
+	/*
+	 * At the moment, TFTF does not have support for FEAT_LPA2, so if
+	 * S2SZ is larger than 48 bits, truncate it to ensure we don't surpass
+	 * the maximum IPA size for a realm with no LPA2 support.
+	 */
+	if (EXTRACT(RMI_FEATURE_REGISTER_0_S2SZ, realm_ptr->rmm_feat_reg0) > 48U) {
+		realm_ptr->rmm_feat_reg0 &=
+				~MASK(RMI_FEATURE_REGISTER_0_S2SZ);
+		realm_ptr->rmm_feat_reg0 |=
+				INPLACE(RMI_FEATURE_REGISTER_0_S2SZ, 48U);
+	}
+
 	/* Create Realm */
 	if (host_realm_create(realm_ptr) != REALM_SUCCESS) {
 		ERROR("%s() failed\n", "host_realm_create");
diff --git a/tftf/tests/tests-undef-injection.mk b/tftf/tests/tests-undef-injection.mk
new file mode 100644
index 0000000..e13df17
--- /dev/null
+++ b/tftf/tests/tests-undef-injection.mk
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+TESTS_SOURCES	+=	tftf/tests/misc_tests/test_undef_injection.c
diff --git a/tftf/tests/tests-undef-injection.xml b/tftf/tests/tests-undef-injection.xml
new file mode 100644
index 0000000..0d43cdf
--- /dev/null
+++ b/tftf/tests/tests-undef-injection.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright (c) 2023, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-3-Clause
+-->
+
+<testsuites>
+  <testsuite name="UNDEF Injection" description="UNDEF injection from EL3 to lower EL">
+      <testcase name="UNDEF Injection to lower EL"
+                function="test_undef_injection" />
+  </testsuite>
+</testsuites>