diff options
author | Maksims Svecovs <maksims.svecovs@arm.com> | 2021-12-10 13:08:41 +0000 |
---|---|---|
committer | Maksims Svecovs <maksims.svecovs@arm.com> | 2022-01-14 12:43:11 +0000 |
commit | a65a907146dd93557ac7aa2584cd2e6f626dd975 (patch) | |
tree | ee5608c767d3bed7f63bd9011480ed92f47deba4 /tftf/tests/runtime_services/secure_service/spm_common.c | |
parent | 911fa6ba32e6284814845632e62f69b41473d81e (diff) | |
download | tf-a-tests-a65a907146dd93557ac7aa2584cd2e6f626dd975.tar.gz |
refactor(ff-a): mem share helper change to test error returns
In order to test FF-A memory sharing operations in faulty cases we need
to be able to get the details of smc call failure in tftf and cactus.
Passes smc_ret_value in the relevant memory management test helpers.
Signed-off-by: Maksims Svecovs <maksims.svecovs@arm.com>
Change-Id: I81059b77cbb01fe9427905adbe262ba8d0670cee
Diffstat (limited to 'tftf/tests/runtime_services/secure_service/spm_common.c')
-rw-r--r-- | tftf/tests/runtime_services/secure_service/spm_common.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/tftf/tests/runtime_services/secure_service/spm_common.c b/tftf/tests/runtime_services/secure_service/spm_common.c index f6800ceb3..5dc1eecb0 100644 --- a/tftf/tests/runtime_services/secure_service/spm_common.c +++ b/tftf/tests/runtime_services/secure_service/spm_common.c @@ -439,15 +439,15 @@ bool memory_relinquish(struct ffa_mem_relinquish *m, uint64_t handle, /** * Helper to call memory send function whose func id is passed as a parameter. * Returns a valid handle in case of successful operation or - * FFA_MEMORY_HANDLE_INVALID if something goes wrong. + * FFA_MEMORY_HANDLE_INVALID if something goes wrong. Populates *ret with a + * resulting smc value to handle the error higher in the test chain. * * TODO: Do memory send with 'ffa_memory_region' taking multiple segments */ ffa_memory_handle_t memory_send( struct ffa_memory_region *memory_region, uint32_t mem_func, - uint32_t fragment_length, uint32_t total_length) + uint32_t fragment_length, uint32_t total_length, smc_ret_values *ret) { - smc_ret_values ret; ffa_id_t receiver = memory_region->receivers[0].receiver_permissions.receiver; @@ -459,25 +459,26 @@ ffa_memory_handle_t memory_send( switch (mem_func) { case FFA_MEM_SHARE_SMC32: - ret = ffa_mem_share(total_length, fragment_length); + *ret = ffa_mem_share(total_length, fragment_length); break; case FFA_MEM_LEND_SMC32: - ret = ffa_mem_lend(total_length, fragment_length); + *ret = ffa_mem_lend(total_length, fragment_length); break; case FFA_MEM_DONATE_SMC32: - ret = ffa_mem_donate(total_length, fragment_length); + *ret = ffa_mem_donate(total_length, fragment_length); break; default: + *ret = (smc_ret_values){0}; ERROR("TFTF - Invalid func id %x!\n", mem_func); return FFA_MEMORY_HANDLE_INVALID; } - if (is_ffa_call_error(ret)) { + if (is_ffa_call_error(*ret)) { ERROR("Failed to send message to: %x\n", receiver); return FFA_MEMORY_HANDLE_INVALID; } - return ffa_mem_success_handle(ret); + return ffa_mem_success_handle(*ret); } /** @@ -489,7 +490,7 @@ ffa_memory_handle_t memory_init_and_send( struct ffa_memory_region *memory_region, size_t memory_region_max_size, ffa_id_t sender, ffa_id_t receiver, const struct ffa_memory_region_constituent *constituents, - uint32_t constituents_count, uint32_t mem_func) + uint32_t constituents_count, uint32_t mem_func, smc_ret_values *ret) { uint32_t remaining_constituent_count; uint32_t total_length; @@ -517,7 +518,7 @@ ffa_memory_handle_t memory_init_and_send( } return memory_send(memory_region, mem_func, fragment_length, - total_length); + total_length, ret); } /** |