fix: validate if FFA_SECONDARY_EP_REGISTER is supported

This patch validates that FFA_SECONDARY_EP_REGISTER interface is
supported for MP SP but not for UP SP. We rely on the fact that
Tertiary Cactus SP is a UP SP to test this feature.

Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
Change-Id: I1bf12e4756bd7dd315062fb5cbfb2edb35883f8b
diff --git a/spm/cactus/cactus_main.c b/spm/cactus/cactus_main.c
index 8ce132c..19a89f5 100644
--- a/spm/cactus/cactus_main.c
+++ b/spm/cactus/cactus_main.c
@@ -215,14 +215,14 @@
 	init_xlat_tables();
 }
 
-static void register_secondary_entrypoint(void)
+static struct ffa_value register_secondary_entrypoint(void)
 {
 	struct ffa_value args;
 
 	args.fid = FFA_SECONDARY_EP_REGISTER_SMC64;
 	args.arg1 = (u_register_t)&secondary_cold_entry;
 
-	ffa_service_call(&args);
+	return ffa_service_call(&args);
 }
 
 void __dead2 cactus_main(bool primary_cold_boot,
@@ -315,7 +315,16 @@
 
 	cactus_print_memory_layout(ffa_id);
 
-	register_secondary_entrypoint();
+	ret = register_secondary_entrypoint();
+
+	/* FFA_SECONDARY_EP_REGISTER interface is not supported for UP SP. */
+	if (ffa_id == (SPM_VM_ID_FIRST + 2)) {
+		expect(ffa_func_id(ret), FFA_ERROR);
+		expect(ffa_error_code(ret), FFA_ERROR_NOT_SUPPORTED);
+	} else {
+		expect(ffa_func_id(ret), FFA_SUCCESS_SMC32);
+	}
+
 	discover_managed_exit_interrupt_id();
 	register_maintenance_interrupt_handlers();