diff --git a/TESTS/psa/spm_client/COMPONENT_SPE/server.c b/TESTS/psa/spm_client/COMPONENT_SPE/server.c index b3419abab2..73862d4e9c 100644 --- a/TESTS/psa/spm_client/COMPONENT_SPE/server.c +++ b/TESTS/psa/spm_client/COMPONENT_SPE/server.c @@ -24,10 +24,10 @@ uint8_t data[MSG_BUF_SIZE] = {0}; void server_main(void *ptr) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; while (1) { - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(CLIENT_TESTS_PART1_WAIT_ANY_SID_MSK, PSA_BLOCK); if (signals & PART1_ROT_SRV1_MSK) { psa_get(PART1_ROT_SRV1_MSK, &msg); switch (msg.type) { diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/partition.c b/TESTS/psa/spm_server/COMPONENT_SPE/partition.c index 34d95958ab..7ca25b9b09 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/partition.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/partition.c @@ -36,7 +36,7 @@ static void init_num_of_tests() void part1_main(void *ptr) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_status_t test_status = PSA_SUCCESS; // status of the api calls during the test psa_status_t test_result = PSA_SUCCESS; // result of the critical section of the test test_action_t action; @@ -44,9 +44,9 @@ void part1_main(void *ptr) init_num_of_tests(); while (1) { - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(CONTROL_MSK, PSA_BLOCK); if (0 == (signals & CONTROL_MSK)) { - SPM_PANIC("returned from psa_wait_any without CONTROL_ROT_SRV bit on signals=(0x%08x)\n", signals); + SPM_PANIC("returned from psa_wait without CONTROL_ROT_SRV bit on signals=(0x%08x)\n", signals); } psa_get(CONTROL_MSK, &msg); diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c b/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c index fe1d474059..e9219eba41 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/partition2.c @@ -25,14 +25,14 @@ static psa_msg_t msg = {0}; void part2_main(void *ptr) { - uint32_t signals = 0; + psa_signal_t signals = 0; size_t len = 0; char *str = NULL; while (1) { - signals = psa_wait_any(PSA_BLOCK); - if (0 == (signals & (ROT_SRV_REVERSE_MSK | ROT_SRV_DB_TST_MSK))) { - SPM_PANIC("returned from psa_wait_any without ROT_SRV_REVERSE_MSK or ROT_SRV_DB_TST_MSK bit on\n"); + signals = psa_wait(SERVER_TEST_PART2_WAIT_ANY_SID_MSK, PSA_BLOCK); + if (0 == (signals & SERVER_TEST_PART2_WAIT_ANY_SID_MSK)) { + SPM_PANIC("returned from psa_wait without ROT_SRV_REVERSE_MSK or ROT_SRV_DB_TST_MSK bit on\n"); } if (signals & ROT_SRV_REVERSE_MSK) { psa_get(ROT_SRV_REVERSE_MSK, &msg); @@ -73,7 +73,7 @@ void part2_main(void *ptr) psa_get(ROT_SRV_DB_TST_MSK, &msg); switch (msg.type) { case PSA_IPC_CALL: { - int32_t caller_part_id = psa_identity(msg.handle); + int32_t caller_part_id = msg.client_id; // Doorbell contract is valid only between secure partitions if (PSA_NSPE_IDENTIFIER == caller_part_id) { SPM_PANIC("Caller partition is non secure\n"); diff --git a/TESTS/psa/spm_server/COMPONENT_SPE/tests.c b/TESTS/psa/spm_server/COMPONENT_SPE/tests.c index 9aec3a67ee..1a82617b5b 100644 --- a/TESTS/psa/spm_server/COMPONENT_SPE/tests.c +++ b/TESTS/psa/spm_server/COMPONENT_SPE/tests.c @@ -31,7 +31,7 @@ static psa_status_t process_connect_request(void) { psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = psa_wait_any(PSA_BLOCK); + psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { res = PSA_TEST_ERROR; } @@ -54,7 +54,7 @@ static psa_status_t process_disconnect_request(void) { psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = psa_wait_any(PSA_BLOCK); + psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { res = PSA_TEST_ERROR; } @@ -72,8 +72,8 @@ static psa_status_t process_disconnect_request(void) PSA_TEST_SERVER(wait_timeout) { psa_status_t test_status = PSA_SUCCESS; - uint32_t signals = psa_wait_any(7); - *status_ptr = ((signals & TEST_MSK) == 0) ? PSA_SUCCESS : PSA_TEST_ERROR;; + psa_signal_t signals = psa_wait(TEST_MSK, PSA_POLL); + *status_ptr = ((signals & TEST_MSK) == 0) ? PSA_SUCCESS : PSA_TEST_ERROR; test_status = process_connect_request(); if (test_status != PSA_SUCCESS) { @@ -94,7 +94,7 @@ PSA_TEST_SERVER(identity_during_connect) psa_msg_t msg = {0}; int32_t identity = 0; - uint32_t signals = psa_wait_any(PSA_BLOCK); + psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -104,7 +104,7 @@ PSA_TEST_SERVER(identity_during_connect) test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR); } - identity = psa_identity(msg.handle); + identity = msg.client_id; *status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR; psa_reply(msg.handle, PSA_SUCCESS); @@ -121,14 +121,14 @@ PSA_TEST_SERVER(identity_during_call) psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; int32_t identity = 0; - uint32_t signals = 0; + psa_signal_t signals = 0; test_status = process_connect_request(); if (test_status != PSA_SUCCESS) { return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -138,7 +138,7 @@ PSA_TEST_SERVER(identity_during_call) test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR); } - identity = psa_identity(msg.handle); + identity = msg.client_id; *status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR; psa_reply(msg.handle, PSA_SUCCESS); @@ -154,7 +154,7 @@ PSA_TEST_SERVER(msg_size_assertion) psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = 0; + psa_signal_t signals = 0; size_t read_size = 0; char *buff = malloc(sizeof(char) * 11); @@ -169,7 +169,7 @@ PSA_TEST_SERVER(msg_size_assertion) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -201,7 +201,7 @@ PSA_TEST_SERVER(reject_connection) { psa_status_t res = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = psa_wait_any(PSA_BLOCK); + psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { res = PSA_TEST_ERROR; } @@ -218,7 +218,7 @@ PSA_TEST_SERVER(reject_connection) PSA_TEST_SERVER(read_at_outofboud_offset) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; @@ -229,7 +229,7 @@ PSA_TEST_SERVER(read_at_outofboud_offset) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -258,7 +258,7 @@ PSA_TEST_SERVER(msg_read_truncation) psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = 0; + psa_signal_t signals = 0; size_t read_size = 0; char *buff = malloc(sizeof(char) * 11); if (NULL == buff) { @@ -272,7 +272,7 @@ PSA_TEST_SERVER(msg_read_truncation) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -304,7 +304,7 @@ PSA_TEST_SERVER(skip_zero) psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = 0; + psa_signal_t signals = 0; size_t read_size = 0; size_t skip_size = 0; char *buff = malloc(sizeof(char) * 11); @@ -318,7 +318,7 @@ PSA_TEST_SERVER(skip_zero) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -350,7 +350,7 @@ PSA_TEST_SERVER(skip_some) psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = 0; + psa_signal_t signals = 0; size_t read_size1 = 0; size_t read_size2 = 0; size_t skip_size = 0; @@ -365,7 +365,7 @@ PSA_TEST_SERVER(skip_some) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -399,7 +399,7 @@ PSA_TEST_SERVER(skip_more_than_left) psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; psa_msg_t msg = {0}; - uint32_t signals = 0; + psa_signal_t signals = 0; size_t read_size1 = 0; size_t read_size2 = 0; size_t skip_size = 0; @@ -414,7 +414,7 @@ PSA_TEST_SERVER(skip_more_than_left) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -445,7 +445,7 @@ PSA_TEST_SERVER(skip_more_than_left) PSA_TEST_SERVER(rhandle_factorial) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; factorial_data_t *num = NULL; factorial_data_t *asserted_ptr = NULL; @@ -454,9 +454,9 @@ PSA_TEST_SERVER(rhandle_factorial) uint32_t disconnect_count = 0; while (1) { - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if (0 == (signals & TEST_MSK)) { - SPM_PANIC("returned from psa_wait_any without ROT_SRV_FACTORIAL bit on\n"); + SPM_PANIC("returned from psa_wait without TEST_MSK bit on\n"); } psa_get(TEST_MSK, &msg); @@ -535,7 +535,7 @@ PSA_TEST_SERVER(rhandle_factorial) PSA_TEST_SERVER(cross_partition_call) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; @@ -556,7 +556,7 @@ PSA_TEST_SERVER(cross_partition_call) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -606,7 +606,7 @@ PSA_TEST_SERVER(cross_partition_call) // Test a common DOORBELL scenario PSA_TEST_SERVER(doorbell_test) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; psa_status_t test_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS; @@ -618,7 +618,7 @@ PSA_TEST_SERVER(doorbell_test) return test_status; } - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(TEST_MSK, PSA_BLOCK); if ((signals & TEST_MSK) == 0) { test_status = PSA_TEST_ERROR; } @@ -640,7 +640,7 @@ PSA_TEST_SERVER(doorbell_test) if (partition_call_status == PSA_SUCCESS) { // Wait for doorball notification - Only after that call psa_reply() for the client called you - signals = psa_wait_interrupt(PSA_DOORBELL, PSA_BLOCK); + signals = psa_wait(PSA_DOORBELL, PSA_BLOCK); if ((signals & PSA_DOORBELL) == 0) { partition_call_status = PSA_TEST_ERROR; } diff --git a/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c b/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c index 07c28a4078..d9f327f978 100644 --- a/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c +++ b/TESTS/psa/spm_smoke/COMPONENT_SPE/partition1.c @@ -45,7 +45,7 @@ void part1_main(void *ptr) while (1) { - signals = psa_wait_any(PSA_BLOCK); + signals = psa_wait(ROT_SRV1_MSK, PSA_BLOCK); if ((signals & ROT_SRV1_MSK) != ROT_SRV1_MSK) { SPM_PANIC("Received unknown signal (0x%08x)\n", signals); } @@ -54,7 +54,7 @@ void part1_main(void *ptr) psa_get(ROT_SRV1_MSK, &msg); if (msg.handle != PSA_NULL_HANDLE) { - client_id = psa_identity(msg.handle); + client_id = msg.client_id; if (client_id != PSA_NSPE_IDENTIFIER) { SPM_PANIC("Received message from unexpected source (0x%08x)\n", client_id); } diff --git a/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c index 0409d7442c..22ed01dee8 100644 --- a/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c +++ b/components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_server.c @@ -246,11 +246,11 @@ void psa_get(psa_signal_t signum, psa_msg_t *msg) // signum must be ONLY ONE of the bits of curr_partition->flags_rot_srv bool is_one_bit = ((signum != 0) && !(signum & (signum - 1))); - if (!is_one_bit || !(signum & curr_partition->flags_rot_srv)) { + if (!is_one_bit || !(signum & curr_partition->flags)) { SPM_PANIC( "signum 0x%x must have only 1 bit ON and must be a subset of 0x%x!\n", signum, - curr_partition->flags_rot_srv + curr_partition->flags ); } @@ -540,7 +540,7 @@ void psa_eoi(uint32_t irq_signal) SPM_PANIC("Try to clear an interrupt flag without declaring IRQ"); } - if (0 == (curr_partition->flags_interrupts & irq_signal)) { + if (0 == (curr_partition->flags & irq_signal)) { SPM_PANIC("Signal %d not in irq range\n", irq_signal); } diff --git a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c index f8e848d954..c1dd99b99f 100644 --- a/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c +++ b/components/TARGET_PSA/services/crypto/COMPONENT_SPE/psa_crypto_partition.c @@ -515,12 +515,7 @@ static void psa_hash_operation(void) case PSA_HASH_CLONE_BEGIN: { size_t index = 0; - -#if defined(TARGET_MBED_SPM) - status = reserve_hash_clone(psa_identity(msg.handle), msg.rhandle, &index); -#else status = reserve_hash_clone(msg.client_id, msg.rhandle, &index); -#endif if (status == PSA_SUCCESS) { psa_write(msg.handle, 0, &index, sizeof(index)); } @@ -536,11 +531,7 @@ static void psa_hash_operation(void) SPM_PANIC("SPM read length mismatch"); } -#if defined(TARGET_MBED_SPM) - status = get_hash_clone(index, psa_identity(msg.handle), &hash_clone); -#else status = get_hash_clone(index, msg.client_id, &hash_clone); -#endif if (status == PSA_SUCCESS) { status = psa_hash_clone(hash_clone->source_operation, msg.rhandle); release_hash_clone(hash_clone); @@ -1695,12 +1686,8 @@ void psa_crypto_generator_operations(void) void crypto_main(void *ptr) { while (1) { - uint32_t signals = 0; -#if defined(TARGET_MBED_SPM) - signals = psa_wait_any(PSA_BLOCK); -#else + psa_signal_t signals = 0; signals = psa_wait(CRYPTO_SRV_WAIT_ANY_SID_MSK, PSA_BLOCK); -#endif if (signals & PSA_CRYPTO_INIT) { psa_crypto_init_operation(); } diff --git a/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c b/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c index 5943e166c9..4ea9cbbedb 100644 --- a/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c +++ b/components/TARGET_PSA/services/platform/COMPONENT_SPE/platform_partition.c @@ -87,15 +87,10 @@ static void message_handler(psa_msg_t *msg, SignalHandler handler) void platform_partition_entry(void *ptr) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; while (1) { -#if defined(TARGET_MBED_SPM) - signals = psa_wait_any(PSA_BLOCK); -#else signals = psa_wait(PLATFORM_WAIT_ANY_SID_MSK, PSA_BLOCK); -#endif - if ((signals & PSA_PLATFORM_LC_GET_MSK) != 0) { psa_get(PSA_PLATFORM_LC_GET_MSK, &msg); message_handler(&msg, lifecycle_get); diff --git a/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c index ac2a7ddf09..f184fd03b4 100644 --- a/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c +++ b/components/TARGET_PSA/services/storage/its/COMPONENT_SPE/its_partition.c @@ -70,11 +70,8 @@ static psa_status_t storage_set(psa_msg_t *msg) free(data); return PSA_ERROR_STORAGE_FAILURE; } -#if defined(TARGET_MBED_SPM) - psa_status_t status = psa_its_set_impl(psa_identity(msg->handle), key, alloc_size, data, flags); -#else + psa_status_t status = psa_its_set_impl(msg->client_id, key, alloc_size, data, flags); -#endif memset(data, 0, alloc_size); free(data); return status; @@ -102,12 +99,7 @@ static psa_status_t storage_get(psa_msg_t *msg) return PSA_ERROR_STORAGE_FAILURE; } -#if defined(TARGET_MBED_SPM) - psa_status_t status = psa_its_get_impl(psa_identity(msg->handle), key, offset, msg->out_size[0], data); -#else psa_status_t status = psa_its_get_impl(msg->client_id, key, offset, msg->out_size[0], data); -#endif - if (status == PSA_SUCCESS) { psa_write(msg->handle, 0, data, msg->out_size[0]); } @@ -130,12 +122,7 @@ static psa_status_t storage_info(psa_msg_t *msg) return PSA_DROP_CONNECTION; } -#if defined(TARGET_MBED_SPM) - psa_status_t status = psa_its_get_info_impl(psa_identity(msg->handle), key, &info); -#else psa_status_t status = psa_its_get_info_impl(msg->client_id, key, &info); -#endif - if (status == PSA_SUCCESS) { psa_write(msg->handle, 0, &info, msg->out_size[0]); } @@ -155,11 +142,7 @@ static psa_status_t storage_remove(psa_msg_t *msg) return PSA_DROP_CONNECTION; } -#if defined(TARGET_MBED_SPM) - return psa_its_remove_impl(psa_identity(msg->handle), key); -#else return psa_its_remove_impl(msg->client_id, key); -#endif } static psa_status_t storage_reset(psa_msg_t *msg) { @@ -191,18 +174,13 @@ static void message_handler(psa_msg_t *msg, SignalHandler handler) void its_entry(void *ptr) { - uint32_t signals = 0; + psa_signal_t signals = 0; psa_msg_t msg = {0}; while (1) { -#if defined(TARGET_MBED_SPM) - signals = psa_wait_any(PSA_BLOCK); -#else signals = psa_wait(ITS_WAIT_ANY_SID_MSK, PSA_BLOCK); -#endif - // KVStore initiation: - // - Must be done after the psa_wait_any() call since only now we know OS initialization is done + // - Must be done after the psa_wait() call since only now we know OS initialization is done // - Repeating calls has no effect int kv_status = kv_init_storage_config(); if (kv_status != MBED_SUCCESS) {