diff --git a/module/power_distributor/src/mod_power_distributor.c b/module/power_distributor/src/mod_power_distributor.c index 494349b07992bf6043b4a03df8a90794af9df26b..bbcfda613e4d98d229c0300f432c2d770fbb6267 100644 --- a/module/power_distributor/src/mod_power_distributor.c +++ b/module/power_distributor/src/mod_power_distributor.c @@ -18,6 +18,8 @@ #include #include +#include + #define MOD_NAME "[PWR_DISTRIBUTOR] " struct mod_power_distributor_data { @@ -347,6 +349,10 @@ static int domain_power_distribute( { uint32_t remaining_budget = domain_ctx->node.data.power_budget; + if (domain_ctx->node.children_count == 0) { + return FWK_SUCCESS; + } + /* Phase 1: Base allocation */ distribute_power( domain_ctx, &remaining_budget, &calculate_base_allocation_deficit); @@ -370,7 +376,7 @@ static int set_budgets() FWK_ID_ELEMENT(FWK_MODULE_IDX_POWER_DISTRIBUTOR, i))); domain_ctx->controller_api->set_power_limit( domain_ctx->config->controller_id, - domain_ctx->node.data.power_limit); + domain_ctx->node.data.power_budget); } } @@ -411,7 +417,7 @@ static inline int domains_power_distribute(void) fwk_id_t domain_id = FWK_ID_ELEMENT(FWK_MODULE_IDX_POWER_DISTRIBUTOR, domain_idx); FWK_LOG_ERR( - MOD_NAME "Failed to distribute domain %s (index: %u)", + MOD_NAME "Failed to distribute domain %s (index: %" PRIu32 ")", fwk_module_get_element_name(domain_id), domain_idx); break; diff --git a/module/power_distributor/test/mod_power_distributor_unit_test.c b/module/power_distributor/test/mod_power_distributor_unit_test.c index 97e96c88d3f9ae6572663304998e67a4529fc83d..1b7572176be0502ae76c3f7682197965aa003234 100644 --- a/module/power_distributor/test/mod_power_distributor_unit_test.c +++ b/module/power_distributor/test/mod_power_distributor_unit_test.c @@ -339,7 +339,7 @@ void utest_mod_distributor_set_budgets(void) for (size_t i = 0; i < power_distributor_ctx.domain_count; ++i) { struct mod_power_distributor_domain_ctx *domain_ctx = &power_distributor_ctx.domain[i]; - domain_ctx->node.data.power_limit = 0xDEADBEEF + i; + domain_ctx->node.data.power_budget = 0xDEADBEEF + i; } for (size_t i = 0; i < power_distributor_ctx.domain_count; ++i) { @@ -351,7 +351,7 @@ void utest_mod_distributor_set_budgets(void) FWK_ID_ELEMENT_INIT(FWK_MODULE_IDX_CONTROLLER, i); fwk_module_get_element_name_ExpectAnyArgsAndReturn(""); mock_set_power_limit_ExpectAndReturn( - elem_id, domain_ctx->node.data.power_limit, FWK_SUCCESS); + elem_id, domain_ctx->node.data.power_budget, FWK_SUCCESS); } }