diff options
Diffstat (limited to 'tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c')
-rw-r--r-- | tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c | 71 |
1 files changed, 15 insertions, 56 deletions
diff --git a/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c index 0a722e497..1f8e81c1e 100644 --- a/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c +++ b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021, Arm Limited. All rights reserved. + * Copyright (c) 2018-2022, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -14,6 +14,7 @@ #include <lib/events.h> #include <lib/power_management.h> #include <platform.h> +#include <spm_test_helpers.h> #include <test_helpers.h> #define ECHO_VAL1 U(0xa0a0a0a0) @@ -24,14 +25,13 @@ static const struct ffa_uuid expected_sp_uuids[] = { {PRIMARY_UUID}, {SECONDARY_UUID}, {TERTIARY_UUID} }; - static event_t cpu_booted[PLATFORM_CORE_COUNT]; -static test_result_t send_cactus_echo_cmd(ffa_vm_id_t sender, - ffa_vm_id_t dest, +static test_result_t send_cactus_echo_cmd(ffa_id_t sender, + ffa_id_t dest, uint64_t value) { - smc_ret_values ret; + struct ffa_value ret; ret = cactus_echo_send_cmd(sender, dest, value); /* @@ -92,12 +92,12 @@ test_result_t test_ffa_direct_messaging(void) * otherwise. * For the CACTUS_SUCCESS response, the test returns TEST_RESULT_SUCCESS. */ -static test_result_t send_cactus_req_echo_cmd(ffa_vm_id_t sender, - ffa_vm_id_t dest, - ffa_vm_id_t echo_dest, +static test_result_t send_cactus_req_echo_cmd(ffa_id_t sender, + ffa_id_t dest, + ffa_id_t echo_dest, uint64_t value) { - smc_ret_values ret; + struct ffa_value ret; ret = cactus_req_echo_send_cmd(sender, dest, echo_dest, value); @@ -128,13 +128,13 @@ test_result_t test_ffa_sp_to_sp_direct_messaging(void) * The following the tests are intended to test the handling of a * direct message request with a VM's ID as a the sender. */ - result = send_cactus_req_echo_cmd(HYP_ID + 1, SP_ID(2), SP_ID(3), + result = send_cactus_req_echo_cmd(VM_ID(1), SP_ID(2), SP_ID(3), ECHO_VAL2); if (result != TEST_RESULT_SUCCESS) { return result; } - result = send_cactus_req_echo_cmd(HYP_ID + 2, SP_ID(3), SP_ID(1), + result = send_cactus_req_echo_cmd(VM_ID(2), SP_ID(3), SP_ID(1), ECHO_VAL3); return result; @@ -142,7 +142,7 @@ test_result_t test_ffa_sp_to_sp_direct_messaging(void) test_result_t test_ffa_sp_to_sp_deadlock(void) { - smc_ret_values ret; + struct ffa_value ret; /********************************************************************** * Check SPMC has ffa_version and expected FFA endpoints are deployed. @@ -165,14 +165,12 @@ test_result_t test_ffa_sp_to_sp_deadlock(void) /** * Handler that is passed during tftf_cpu_on to individual CPU cores. * Runs a specific core and send a direct message request. - * Expects core_pos | SP_ID as a response. */ static test_result_t cpu_on_handler(void) { - unsigned int mpid = read_mpidr_el1() & MPID_MASK; - unsigned int core_pos = platform_get_core_pos(mpid); + unsigned int core_pos = get_current_core_id(); test_result_t ret = TEST_RESULT_SUCCESS; - smc_ret_values ffa_ret; + struct ffa_value ffa_ret; /* * Send a direct message request to SP1 (MP SP) from current physical @@ -255,48 +253,9 @@ out: */ test_result_t test_ffa_secondary_core_direct_msg(void) { - unsigned int lead_mpid = read_mpidr_el1() & MPID_MASK; - unsigned int core_pos, cpu_node, mpidr; - int32_t ret; - /********************************************************************** * Check SPMC has ffa_version and expected FFA endpoints are deployed. **********************************************************************/ CHECK_SPMC_TESTING_SETUP(1, 0, expected_sp_uuids); - - for (unsigned int i = 0U; i < PLATFORM_CORE_COUNT; i++) { - tftf_init_event(&cpu_booted[i]); - } - - for_each_cpu(cpu_node) { - mpidr = tftf_get_mpidr_from_node(cpu_node); - if (mpidr == lead_mpid) { - continue; - } - - ret = tftf_cpu_on(mpidr, (uintptr_t)cpu_on_handler, 0U); - if (ret != 0) { - ERROR("tftf_cpu_on mpidr 0x%x returns %d\n", mpidr, ret); - } - } - - VERBOSE("Waiting secondary CPUs to turn off ...\n"); - - for_each_cpu(cpu_node) { - mpidr = tftf_get_mpidr_from_node(cpu_node); - if (mpidr == lead_mpid) { - continue; - } - - core_pos = platform_get_core_pos(mpidr); - tftf_wait_for_event(&cpu_booted[core_pos]); - } - - VERBOSE("Done exiting.\n"); - - /********************************************************************** - * All tests passed. - **********************************************************************/ - - return TEST_RESULT_SUCCESS; + return spm_run_multi_core_test((uintptr_t)cpu_on_handler, cpu_booted); } |