From ba5936c136edbdb4305fdd22a5b400bdd738e4a7 Mon Sep 17 00:00:00 2001 From: Md Golam Tanvir Zim Date: Mon, 17 Mar 2025 14:11:46 +0000 Subject: [PATCH] mod_scmi: Fix the number of SCMI notifications sent to an agent SCMI notification should be sent to the subscribers for a specific operation on a specific resource. But, the current SCMI notification has a defect, it sends notification for a specific operation on any resource, resulting in sending same notification multiple times to the subscribers. The looping around element/resource list in SCMI Notification table is redundant, hence omitted to fix the defect. Signed-off-by: Md Golam Tanvir Zim Change-Id: I025a77393a9396f7723827eaf4e6ce3973dd1ac7 --- module/scmi/include/mod_scmi.h | 4 +- module/scmi/src/mod_scmi.c | 47 ++++++++++--------- module/scmi_clock/src/mod_scmi_clock.c | 1 + .../test/mocks/Mockmod_scmi_clock_extra.c | 39 ++++++++++----- .../test/mocks/Mockmod_scmi_clock_extra.h | 13 ++--- module/scmi_clock/test/mod_scmi_clock_extra.h | 3 +- .../test/mod_scmi_clock_unit_test.c | 4 ++ module/scmi_perf/src/scmi_perf_protocol_ops.c | 4 +- .../src/scmi_power_capping_protocol.c | 2 + .../test/mocks/Mockmod_scmi_extra.c | 35 ++++++++++---- .../test/mocks/Mockmod_scmi_extra.h | 12 +++-- .../scmi_power_capping/test/mod_scmi_extra.h | 3 +- .../scmi_power_capping_protocol_unit_test.c | 2 + .../src/mod_scmi_power_domain.c | 1 + .../src/mod_scmi_reset_domain.c | 1 + module/scmi_sensor/src/mod_scmi_sensor.c | 1 + 16 files changed, 115 insertions(+), 57 deletions(-) diff --git a/module/scmi/include/mod_scmi.h b/module/scmi/include/mod_scmi.h index 81b54fe2a..440fed4e4 100644 --- a/module/scmi/include/mod_scmi.h +++ b/module/scmi/include/mod_scmi.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -532,6 +532,7 @@ struct mod_scmi_notification_api { * * \param protocol_id Identifier of the protocol. * \param operation_id Identifier of the operation. + * \param resource_id Identifier of the resource. * \param scmi_response_message_id SCMI message identifier that is sent as * as a part of the notification. * \param payload_p2a Notification message payload from platform to @@ -545,6 +546,7 @@ struct mod_scmi_notification_api { int (*scmi_notification_notify)( unsigned int protocol_id, unsigned int operation_id, + unsigned int resource_id, unsigned int scmi_response_message_id, void *payload_p2a, size_t payload_size); diff --git a/module/scmi/src/mod_scmi.c b/module/scmi/src/mod_scmi.c index c000f9087..398353379 100644 --- a/module/scmi/src/mod_scmi.c +++ b/module/scmi/src/mod_scmi.c @@ -750,11 +750,12 @@ static int scmi_notification_remove_subscriber( static int scmi_notification_notify( unsigned int protocol_id, unsigned int operation_id, + unsigned int resource_id, unsigned int scmi_response_id, void *payload_p2a, size_t payload_size) { - unsigned int i, j; + unsigned int i; unsigned int operation_idx; fwk_id_t service_id; unsigned int service_id_idx; @@ -762,7 +763,11 @@ static int scmi_notification_notify( struct scmi_notification_subscribers *subscribers = notification_subscribers(protocol_id); - fwk_assert(operation_id < MOD_SCMI_PROTOCOL_MAX_OPERATION_ID); + if (!fwk_expect( + resource_id < subscribers->element_count && + operation_id < MOD_SCMI_PROTOCOL_MAX_OPERATION_ID)) { + return FWK_E_DATA; + } operation_idx = subscribers->operation_id_to_idx[operation_id]; /* @@ -775,26 +780,24 @@ static int scmi_notification_notify( return FWK_SUCCESS; } - for (i = 0; i < subscribers->element_count; i++) { - /* Skip agent 0, platform agent */ - for (j = 1; j < subscribers->agent_count; j++) { - service_id_idx = (unsigned int)scmi_notification_service_idx( - j, - i, - operation_idx, - subscribers->agent_count, - subscribers->element_count); - - service_id = subscribers->agent_service_ids[service_id_idx]; - - if (!fwk_id_is_equal(service_id, FWK_ID_NONE)) { - scmi_notify( - service_id, - (int)protocol_id, - (int)scmi_response_id, - payload_p2a, - payload_size); - } + /* Skip agent 0, platform agent */ + for (i = 1; i < subscribers->agent_count; i++) { + service_id_idx = (unsigned int)scmi_notification_service_idx( + i, + resource_id, + operation_idx, + subscribers->agent_count, + subscribers->element_count); + + service_id = subscribers->agent_service_ids[service_id_idx]; + + if (!fwk_id_is_equal(service_id, FWK_ID_NONE)) { + scmi_notify( + service_id, + (int)protocol_id, + (int)scmi_response_id, + payload_p2a, + payload_size); } } diff --git a/module/scmi_clock/src/mod_scmi_clock.c b/module/scmi_clock/src/mod_scmi_clock.c index a8589ef6c..244ff7615 100644 --- a/module/scmi_clock/src/mod_scmi_clock.c +++ b/module/scmi_clock/src/mod_scmi_clock.c @@ -2030,6 +2030,7 @@ static void scmi_clock_rate_change_notify( status = scmi_clock_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_CLOCK, command_id, + scmi_clock_idx, notification_message_id, &message, sizeof(message)); diff --git a/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.c b/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.c index 80c5209f3..ae7c042ae 100644 --- a/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.c +++ b/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.c @@ -383,6 +383,7 @@ typedef struct _CMOCK_scmi_notification_notify_CALL_INSTANCE int ReturnVal; unsigned int Expected_protocol_id; unsigned int Expected_operation_id; + unsigned int Expected_resource_id; unsigned int Expected_scmi_response_message_id; void* Expected_payload_p2a; size_t Expected_payload_size; @@ -392,6 +393,7 @@ typedef struct _CMOCK_scmi_notification_notify_CALL_INSTANCE size_t ReturnThruPtr_payload_p2a_Size; char IgnoreArg_protocol_id; char IgnoreArg_operation_id; + char IgnoreArg_resource_id; char IgnoreArg_scmi_response_message_id; char IgnoreArg_payload_p2a; char IgnoreArg_payload_size; @@ -501,7 +503,7 @@ static struct Mockmod_scmi_clock_extraInstance CMOCK_mod_clock_api_get_state_CALLBACK mod_clock_api_get_state_CallbackFunctionPointer; int mod_clock_api_get_state_CallbackCalls; CMOCK_MEM_INDEX_TYPE mod_clock_api_get_state_CallInstance; - char scmi_notification_init_IgnoreBool; + char scmi_notification_init_IgnoreBool; int scmi_notification_init_FinalReturn; char scmi_notification_init_CallbackBool; CMOCK_scmi_notification_init_CALLBACK scmi_notification_init_CallbackFunctionPointer; @@ -754,7 +756,7 @@ void Mockmod_scmi_clock_extra_Verify(void) call_instance = CMOCK_GUTS_NONE; (void)call_instance; } - call_instance = Mock.scmi_notification_init_CallInstance; + call_instance = Mock.scmi_notification_init_CallInstance; if (Mock.scmi_notification_init_IgnoreBool) call_instance = CMOCK_GUTS_NONE; if (CMOCK_GUTS_NONE != call_instance) @@ -4091,7 +4093,7 @@ void scmi_notification_remove_subscriber_CMockIgnoreArg_operation_id(UNITY_LINE_ cmock_call_instance->IgnoreArg_operation_id = 1; } -int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size) +int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance; @@ -4109,7 +4111,7 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id if (!Mock.scmi_notification_notify_CallbackBool && Mock.scmi_notification_notify_CallbackFunctionPointer != NULL) { - int cmock_cb_ret = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); + int cmock_cb_ret = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); UNITY_CLR_DETAILS(); return cmock_cb_ret; } @@ -4127,6 +4129,11 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_operation_id); UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_operation_id, operation_id, cmock_line, CMockStringMismatch); } + if (!cmock_call_instance->IgnoreArg_resource_id) + { + UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_resource_id); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_resource_id, resource_id, cmock_line, CMockStringMismatch); + } if (!cmock_call_instance->IgnoreArg_scmi_response_message_id) { UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_scmi_response_message_id); @@ -4148,7 +4155,7 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id } if (Mock.scmi_notification_notify_CallbackFunctionPointer != NULL) { - cmock_call_instance->ReturnVal = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); + cmock_call_instance->ReturnVal = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); } if (cmock_call_instance->ReturnThruPtr_payload_p2a_Used) { @@ -4160,13 +4167,15 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id return cmock_call_instance->ReturnVal; } -void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size); -void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size) +void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size); +void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size) { cmock_call_instance->Expected_protocol_id = protocol_id; cmock_call_instance->IgnoreArg_protocol_id = 0; cmock_call_instance->Expected_operation_id = operation_id; cmock_call_instance->IgnoreArg_operation_id = 0; + cmock_call_instance->Expected_resource_id = resource_id; + cmock_call_instance->IgnoreArg_resource_id = 0; cmock_call_instance->Expected_scmi_response_message_id = scmi_response_message_id; cmock_call_instance->IgnoreArg_scmi_response_message_id = 0; cmock_call_instance->Expected_payload_p2a = payload_p2a; @@ -4213,7 +4222,7 @@ void scmi_notification_notify_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_ cmock_call_instance->ExpectAnyArgsBool = (char)1; } -void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return) +void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return) { CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_scmi_notification_notify_CALL_INSTANCE)); CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); @@ -4223,7 +4232,7 @@ void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, u Mock.scmi_notification_notify_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, payload_size); + CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_size, payload_size); cmock_call_instance->ReturnVal = cmock_to_return; } @@ -4241,7 +4250,7 @@ void scmi_notification_notify_Stub(CMOCK_scmi_notification_notify_CALLBACK Callb Mock.scmi_notification_notify_CallbackFunctionPointer = Callback; } -void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return) +void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return) { CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_scmi_notification_notify_CALL_INSTANCE)); CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); @@ -4251,7 +4260,7 @@ void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmoc Mock.scmi_notification_notify_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size); + CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size); cmock_call_instance->ReturnVal = cmock_to_return; } @@ -4278,6 +4287,13 @@ void scmi_notification_notify_CMockIgnoreArg_operation_id(UNITY_LINE_TYPE cmock_ cmock_call_instance->IgnoreArg_operation_id = 1; } +void scmi_notification_notify_CMockIgnoreArg_resource_id(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.scmi_notification_notify_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_resource_id = 1; +} + void scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(UNITY_LINE_TYPE cmock_line) { CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.scmi_notification_notify_CallInstance)); @@ -4298,3 +4314,4 @@ void scmi_notification_notify_CMockIgnoreArg_payload_size(UNITY_LINE_TYPE cmock_ UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); cmock_call_instance->IgnoreArg_payload_size = 1; } + diff --git a/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.h b/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.h index 103fb6779..59209ce96 100644 --- a/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.h +++ b/module/scmi_clock/test/mocks/Mockmod_scmi_clock_extra.h @@ -378,7 +378,6 @@ void mod_clock_api_get_state_CMockReturnMemThruPtr_state(UNITY_LINE_TYPE cmock_l void mod_clock_api_get_state_CMockIgnoreArg_clock_id(UNITY_LINE_TYPE cmock_line); #define mod_clock_api_get_state_IgnoreArg_state() mod_clock_api_get_state_CMockIgnoreArg_state(__LINE__) void mod_clock_api_get_state_CMockIgnoreArg_state(UNITY_LINE_TYPE cmock_line); - #define scmi_notification_init_IgnoreAndReturn(cmock_retval) scmi_notification_init_CMockIgnoreAndReturn(__LINE__, cmock_retval) void scmi_notification_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); #define scmi_notification_init_StopIgnore() scmi_notification_init_CMockStopIgnore() @@ -445,14 +444,14 @@ void scmi_notification_notify_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, i void scmi_notification_notify_CMockStopIgnore(void); #define scmi_notification_notify_ExpectAnyArgsAndReturn(cmock_retval) scmi_notification_notify_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) void scmi_notification_notify_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); -#define scmi_notification_notify_ExpectAndReturn(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) scmi_notification_notify_CMockExpectAndReturn(__LINE__, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) -void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return); -typedef int (* CMOCK_scmi_notification_notify_CALLBACK)(unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_num_calls); +#define scmi_notification_notify_ExpectAndReturn(protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) scmi_notification_notify_CMockExpectAndReturn(__LINE__, protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) +void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return); +typedef int (* CMOCK_scmi_notification_notify_CALLBACK)(unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_num_calls); void scmi_notification_notify_AddCallback(CMOCK_scmi_notification_notify_CALLBACK Callback); void scmi_notification_notify_Stub(CMOCK_scmi_notification_notify_CALLBACK Callback); #define scmi_notification_notify_StubWithCallback scmi_notification_notify_Stub -#define scmi_notification_notify_ExpectWithArrayAndReturn(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) scmi_notification_notify_CMockExpectWithArrayAndReturn(__LINE__, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) -void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return); +#define scmi_notification_notify_ExpectWithArrayAndReturn(protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) scmi_notification_notify_CMockExpectWithArrayAndReturn(__LINE__, protocol_id, operation_id, resource_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) +void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int resource_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return); #define scmi_notification_notify_ReturnThruPtr_payload_p2a(payload_p2a) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, sizeof(void)) #define scmi_notification_notify_ReturnArrayThruPtr_payload_p2a(payload_p2a, cmock_len) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, cmock_len * sizeof(*payload_p2a)) #define scmi_notification_notify_ReturnMemThruPtr_payload_p2a(payload_p2a, cmock_size) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, cmock_size) @@ -461,6 +460,8 @@ void scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(UNITY_LINE_TYPE void scmi_notification_notify_CMockIgnoreArg_protocol_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_operation_id() scmi_notification_notify_CMockIgnoreArg_operation_id(__LINE__) void scmi_notification_notify_CMockIgnoreArg_operation_id(UNITY_LINE_TYPE cmock_line); +#define scmi_notification_notify_IgnoreArg_resource_id() scmi_notification_notify_CMockIgnoreArg_resource_id(__LINE__) +void scmi_notification_notify_CMockIgnoreArg_resource_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_scmi_response_message_id() scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(__LINE__) void scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_payload_p2a() scmi_notification_notify_CMockIgnoreArg_payload_p2a(__LINE__) diff --git a/module/scmi_clock/test/mod_scmi_clock_extra.h b/module/scmi_clock/test/mod_scmi_clock_extra.h index f7ec79de5..69a29177c 100644 --- a/module/scmi_clock/test/mod_scmi_clock_extra.h +++ b/module/scmi_clock/test/mod_scmi_clock_extra.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2022-2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -312,6 +312,7 @@ int scmi_notification_remove_subscriber( int scmi_notification_notify( unsigned int protocol_id, unsigned int operation_id, + unsigned int resource_id, unsigned int scmi_response_message_id, void *payload_p2a, size_t payload_size); diff --git a/module/scmi_clock/test/mod_scmi_clock_unit_test.c b/module/scmi_clock/test/mod_scmi_clock_unit_test.c index ecf726c01..b6c2a7711 100644 --- a/module/scmi_clock/test/mod_scmi_clock_unit_test.c +++ b/module/scmi_clock/test/mod_scmi_clock_unit_test.c @@ -1458,6 +1458,7 @@ void test_clock_rate_change_requested_notify_handler_remove_subscriber(void) int scmi_notification_notify_rate_changed_callback( unsigned int protocol_id, unsigned int operation_id, + unsigned int resource_id, unsigned int scmi_response_id, void *payload_p2a, size_t payload_size, @@ -1468,6 +1469,7 @@ int scmi_notification_notify_rate_changed_callback( TEST_ASSERT_EQUAL(MOD_SCMI_PROTOCOL_ID_CLOCK, protocol_id); TEST_ASSERT_EQUAL(MOD_SCMI_CLOCK_RATE_NOTIFY, operation_id); + TEST_ASSERT_EQUAL(SCMI_CLOCK_OSPM1_IDX0, resource_id); TEST_ASSERT_EQUAL(SCMI_CLOCK_RATE_CHANGED, scmi_response_id); TEST_ASSERT_EQUAL(FAKE_SCMI_AGENT_IDX_OSPM1, message->agent_id); @@ -1510,6 +1512,7 @@ void test_mod_scmi_clock_process_notification_rate_changed(void) int scmi_notification_notify_rate_change_requested_callback( unsigned int protocol_id, unsigned int operation_id, + unsigned int resource_id, unsigned int scmi_response_id, void *payload_p2a, size_t payload_size, @@ -1521,6 +1524,7 @@ int scmi_notification_notify_rate_change_requested_callback( TEST_ASSERT_EQUAL(MOD_SCMI_PROTOCOL_ID_CLOCK, protocol_id); TEST_ASSERT_EQUAL(MOD_SCMI_CLOCK_RATE_CHANGE_REQUESTED_NOTIFY, operation_id); + TEST_ASSERT_EQUAL(SCMI_CLOCK_OSPM1_IDX0, resource_id); TEST_ASSERT_EQUAL(SCMI_CLOCK_RATE_CHANGE_REQUESTED, scmi_response_id); TEST_ASSERT_EQUAL(FAKE_SCMI_AGENT_IDX_OSPM1, message->agent_id); diff --git a/module/scmi_perf/src/scmi_perf_protocol_ops.c b/module/scmi_perf/src/scmi_perf_protocol_ops.c index 783537f54..69c202d1b 100644 --- a/module/scmi_perf/src/scmi_perf_protocol_ops.c +++ b/module/scmi_perf/src/scmi_perf_protocol_ops.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2023-2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2023-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -1066,6 +1066,7 @@ void perf_prot_ops_notify_level( status = perf_prot_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_PERF, MOD_SCMI_PERF_NOTIFY_LEVEL, + domain_idx, SCMI_PERF_LEVEL_CHANGED, &level_changed, sizeof(level_changed)); @@ -1090,6 +1091,7 @@ void perf_prot_ops_notify_limits( status = perf_prot_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_PERF, MOD_SCMI_PERF_NOTIFY_LIMITS, + domain_idx, SCMI_PERF_LIMITS_CHANGED, &limits_changed, sizeof(limits_changed)); diff --git a/module/scmi_power_capping/src/scmi_power_capping_protocol.c b/module/scmi_power_capping/src/scmi_power_capping_protocol.c index 42a1b9691..675a4a829 100644 --- a/module/scmi_power_capping/src/scmi_power_capping_protocol.c +++ b/module/scmi_power_capping/src/scmi_power_capping_protocol.c @@ -866,6 +866,7 @@ int pcapping_protocol_process_cap_pai_notify_event( ->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_POWER_CAPPING, MOD_SCMI_POWER_CAPPING_CAP_NOTIFY, + event_params->domain_idx, SCMI_POWER_CAPPING_CAP_CHANGED, &scmi_notification_payload, sizeof(struct scmi_power_capping_cap_changed_p2a)); @@ -891,6 +892,7 @@ int pcapping_protocol_process_measurements_notify_event( ->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_POWER_CAPPING, MOD_SCMI_POWER_CAPPING_MEASUREMENTS_NOTIFY, + event_params->domain_idx, SCMI_POWER_CAPPING_MEASUREMENTS_CHANGED, &payload, sizeof(struct scmi_power_capping_measurements_changed_p2a)); diff --git a/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.c b/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.c index ebdf53405..e706fcc06 100644 --- a/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.c +++ b/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.c @@ -9,6 +9,7 @@ static const char* CMockString_agent_count = "agent_count"; static const char* CMockString_agent_id = "agent_id"; static const char* CMockString_agent_idx = "agent_idx"; static const char* CMockString_command_count = "command_count"; +static const char* CMockString_domain_id = "domain_id"; static const char* CMockString_element_count = "element_count"; static const char* CMockString_element_idx = "element_idx"; static const char* CMockString_get_agent_count = "get_agent_count"; @@ -132,6 +133,7 @@ typedef struct _CMOCK_scmi_notification_notify_CALL_INSTANCE int ReturnVal; unsigned int Expected_protocol_id; unsigned int Expected_operation_id; + unsigned int Expected_domain_id; unsigned int Expected_scmi_response_message_id; void* Expected_payload_p2a; size_t Expected_payload_size; @@ -141,6 +143,7 @@ typedef struct _CMOCK_scmi_notification_notify_CALL_INSTANCE size_t ReturnThruPtr_payload_p2a_Size; char IgnoreArg_protocol_id; char IgnoreArg_operation_id; + char IgnoreArg_domain_id; char IgnoreArg_scmi_response_message_id; char IgnoreArg_payload_p2a; char IgnoreArg_payload_size; @@ -1309,7 +1312,7 @@ void scmi_notification_remove_subscriber_CMockIgnoreArg_operation_id(UNITY_LINE_ cmock_call_instance->IgnoreArg_operation_id = 1; } -int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size) +int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance; @@ -1327,7 +1330,7 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id if (!Mock.scmi_notification_notify_CallbackBool && Mock.scmi_notification_notify_CallbackFunctionPointer != NULL) { - int cmock_cb_ret = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); + int cmock_cb_ret = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); UNITY_CLR_DETAILS(); return cmock_cb_ret; } @@ -1345,6 +1348,11 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_operation_id); UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_operation_id, operation_id, cmock_line, CMockStringMismatch); } + if (!cmock_call_instance->IgnoreArg_domain_id) + { + UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_domain_id); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_domain_id, domain_id, cmock_line, CMockStringMismatch); + } if (!cmock_call_instance->IgnoreArg_scmi_response_message_id) { UNITY_SET_DETAILS(CMockString_scmi_notification_notify,CMockString_scmi_response_message_id); @@ -1366,7 +1374,7 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id } if (Mock.scmi_notification_notify_CallbackFunctionPointer != NULL) { - cmock_call_instance->ReturnVal = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); + cmock_call_instance->ReturnVal = Mock.scmi_notification_notify_CallbackFunctionPointer(protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_size, Mock.scmi_notification_notify_CallbackCalls++); } if (cmock_call_instance->ReturnThruPtr_payload_p2a_Used) { @@ -1378,13 +1386,15 @@ int scmi_notification_notify(unsigned int protocol_id, unsigned int operation_id return cmock_call_instance->ReturnVal; } -void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size); -void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size) +void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size); +void CMockExpectParameters_scmi_notification_notify(CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size) { cmock_call_instance->Expected_protocol_id = protocol_id; cmock_call_instance->IgnoreArg_protocol_id = 0; cmock_call_instance->Expected_operation_id = operation_id; cmock_call_instance->IgnoreArg_operation_id = 0; + cmock_call_instance->Expected_domain_id = domain_id; + cmock_call_instance->IgnoreArg_domain_id = 0; cmock_call_instance->Expected_scmi_response_message_id = scmi_response_message_id; cmock_call_instance->IgnoreArg_scmi_response_message_id = 0; cmock_call_instance->Expected_payload_p2a = payload_p2a; @@ -1431,7 +1441,7 @@ void scmi_notification_notify_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_ cmock_call_instance->ExpectAnyArgsBool = (char)1; } -void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return) +void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return) { CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_scmi_notification_notify_CALL_INSTANCE)); CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); @@ -1441,7 +1451,7 @@ void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, u Mock.scmi_notification_notify_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, payload_size); + CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_size, payload_size); cmock_call_instance->ReturnVal = cmock_to_return; } @@ -1459,7 +1469,7 @@ void scmi_notification_notify_Stub(CMOCK_scmi_notification_notify_CALLBACK Callb Mock.scmi_notification_notify_CallbackFunctionPointer = Callback; } -void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return) +void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return) { CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_scmi_notification_notify_CALL_INSTANCE)); CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); @@ -1469,7 +1479,7 @@ void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmoc Mock.scmi_notification_notify_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size); + CMockExpectParameters_scmi_notification_notify(cmock_call_instance, protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size); cmock_call_instance->ReturnVal = cmock_to_return; } @@ -1496,6 +1506,13 @@ void scmi_notification_notify_CMockIgnoreArg_operation_id(UNITY_LINE_TYPE cmock_ cmock_call_instance->IgnoreArg_operation_id = 1; } +void scmi_notification_notify_CMockIgnoreArg_domain_id(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.scmi_notification_notify_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_domain_id = 1; +} + void scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(UNITY_LINE_TYPE cmock_line) { CMOCK_scmi_notification_notify_CALL_INSTANCE* cmock_call_instance = (CMOCK_scmi_notification_notify_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.scmi_notification_notify_CallInstance)); diff --git a/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.h b/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.h index 94fe02daf..7d11567d5 100644 --- a/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.h +++ b/module/scmi_power_capping/test/mocks/Mockmod_scmi_extra.h @@ -152,14 +152,14 @@ void scmi_notification_notify_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, i void scmi_notification_notify_CMockStopIgnore(void); #define scmi_notification_notify_ExpectAnyArgsAndReturn(cmock_retval) scmi_notification_notify_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) void scmi_notification_notify_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); -#define scmi_notification_notify_ExpectAndReturn(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) scmi_notification_notify_CMockExpectAndReturn(__LINE__, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) -void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return); -typedef int (* CMOCK_scmi_notification_notify_CALLBACK)(unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_num_calls); +#define scmi_notification_notify_ExpectAndReturn(protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) scmi_notification_notify_CMockExpectAndReturn(__LINE__, protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_size, cmock_retval) +void scmi_notification_notify_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_to_return); +typedef int (* CMOCK_scmi_notification_notify_CALLBACK)(unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, size_t payload_size, int cmock_num_calls); void scmi_notification_notify_AddCallback(CMOCK_scmi_notification_notify_CALLBACK Callback); void scmi_notification_notify_Stub(CMOCK_scmi_notification_notify_CALLBACK Callback); #define scmi_notification_notify_StubWithCallback scmi_notification_notify_Stub -#define scmi_notification_notify_ExpectWithArrayAndReturn(protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) scmi_notification_notify_CMockExpectWithArrayAndReturn(__LINE__, protocol_id, operation_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) -void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return); +#define scmi_notification_notify_ExpectWithArrayAndReturn(protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) scmi_notification_notify_CMockExpectWithArrayAndReturn(__LINE__, protocol_id, operation_id, domain_id, scmi_response_message_id, payload_p2a, payload_p2a_Depth, payload_size, cmock_retval) +void scmi_notification_notify_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int protocol_id, unsigned int operation_id, unsigned int domain_id, unsigned int scmi_response_message_id, void* payload_p2a, int payload_p2a_Depth, size_t payload_size, int cmock_to_return); #define scmi_notification_notify_ReturnThruPtr_payload_p2a(payload_p2a) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, sizeof(void)) #define scmi_notification_notify_ReturnArrayThruPtr_payload_p2a(payload_p2a, cmock_len) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, cmock_len * sizeof(*payload_p2a)) #define scmi_notification_notify_ReturnMemThruPtr_payload_p2a(payload_p2a, cmock_size) scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(__LINE__, payload_p2a, cmock_size) @@ -168,6 +168,8 @@ void scmi_notification_notify_CMockReturnMemThruPtr_payload_p2a(UNITY_LINE_TYPE void scmi_notification_notify_CMockIgnoreArg_protocol_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_operation_id() scmi_notification_notify_CMockIgnoreArg_operation_id(__LINE__) void scmi_notification_notify_CMockIgnoreArg_operation_id(UNITY_LINE_TYPE cmock_line); +#define scmi_notification_notify_IgnoreArg_domain_id() scmi_notification_notify_CMockIgnoreArg_domain_id(__LINE__) +void scmi_notification_notify_CMockIgnoreArg_domain_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_scmi_response_message_id() scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(__LINE__) void scmi_notification_notify_CMockIgnoreArg_scmi_response_message_id(UNITY_LINE_TYPE cmock_line); #define scmi_notification_notify_IgnoreArg_payload_p2a() scmi_notification_notify_CMockIgnoreArg_payload_p2a(__LINE__) diff --git a/module/scmi_power_capping/test/mod_scmi_extra.h b/module/scmi_power_capping/test/mod_scmi_extra.h index 72b6d93e6..b700dfd5b 100644 --- a/module/scmi_power_capping/test/mod_scmi_extra.h +++ b/module/scmi_power_capping/test/mod_scmi_extra.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2023-2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2023-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -37,6 +37,7 @@ int scmi_notification_remove_subscriber( int scmi_notification_notify( unsigned int protocol_id, unsigned int operation_id, + unsigned int domain_id, unsigned int scmi_response_message_id, void *payload_p2a, size_t payload_size); diff --git a/module/scmi_power_capping/test/scmi_power_capping_protocol_unit_test.c b/module/scmi_power_capping/test/scmi_power_capping_protocol_unit_test.c index 726af2789..4be043b62 100644 --- a/module/scmi_power_capping/test/scmi_power_capping_protocol_unit_test.c +++ b/module/scmi_power_capping/test/scmi_power_capping_protocol_unit_test.c @@ -802,6 +802,7 @@ void utest_pcapping_protocol_process_cap_pai_notify_event_success(void) scmi_notification_notify_ExpectWithArrayAndReturn( MOD_SCMI_PROTOCOL_ID_POWER_CAPPING, MOD_SCMI_POWER_CAPPING_CAP_NOTIFY, + payload.domain_id, SCMI_POWER_CAPPING_CAP_CHANGED, &payload, sizeof(payload), @@ -841,6 +842,7 @@ void utest_pcapping_protocol_process_measurements_notify_event_success(void) scmi_notification_notify_ExpectWithArrayAndReturn( MOD_SCMI_PROTOCOL_ID_POWER_CAPPING, MOD_SCMI_POWER_CAPPING_MEASUREMENTS_NOTIFY, + payload.domain_id, SCMI_POWER_CAPPING_MEASUREMENTS_CHANGED, &payload, sizeof(payload), diff --git a/module/scmi_power_domain/src/mod_scmi_power_domain.c b/module/scmi_power_domain/src/mod_scmi_power_domain.c index be8982e8d..1773a6792 100644 --- a/module/scmi_power_domain/src/mod_scmi_power_domain.c +++ b/module/scmi_power_domain/src/mod_scmi_power_domain.c @@ -520,6 +520,7 @@ static void scmi_pd_power_state_notify( status = scmi_pd_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_POWER_DOMAIN, command_id, + message.domain_id, notification_message_id, &message, sizeof(message)); diff --git a/module/scmi_reset_domain/src/mod_scmi_reset_domain.c b/module/scmi_reset_domain/src/mod_scmi_reset_domain.c index 49795904b..6cb5b575a 100644 --- a/module/scmi_reset_domain/src/mod_scmi_reset_domain.c +++ b/module/scmi_reset_domain/src/mod_scmi_reset_domain.c @@ -503,6 +503,7 @@ static void scmi_reset_issued_notify(uint32_t domain_id, scmi_rd_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_RESET_DOMAIN, MOD_SCMI_RESET_NOTIFY, + domain_id, MOD_SCMI_RESET_ISSUED, &reset_issued, sizeof(reset_issued)); diff --git a/module/scmi_sensor/src/mod_scmi_sensor.c b/module/scmi_sensor/src/mod_scmi_sensor.c index 86dacbe77..47e3168e5 100644 --- a/module/scmi_sensor/src/mod_scmi_sensor.c +++ b/module/scmi_sensor/src/mod_scmi_sensor.c @@ -983,6 +983,7 @@ static void scmi_sensor_notify_trip_point( status = scmi_sensor_ctx.scmi_notification_api->scmi_notification_notify( MOD_SCMI_PROTOCOL_ID_SENSOR, MOD_SCMI_SENSOR_TRIP_POINT_NOTIFY, + trip_point_event.sensor_id, SCMI_SENSOR_TRIP_POINT_EVENT, &trip_point_event, sizeof(trip_point_event)); -- GitLab