mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
gpu: nvgpu: init: reduce CCM for nvgpu_finalize_poweron
Change how nvgpu_finalize_poweron() detects and reports units that do not need initializing. This reduces the Code Complexity of this function. This update reduces the TCC metric from 12 to 9. JIRA NVGPU-4327 Change-Id: I95a5d60bc90fe09358ed47a54eca700bd51d688f Signed-off-by: Philip Elcan <pelcan@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2235339 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Alex Waterman
parent
06a8fd2ecb
commit
8dd18e6f5e
@@ -482,8 +482,14 @@ struct nvgpu_init_table_t {
|
||||
};
|
||||
#define NVGPU_INIT_TABLE_ENTRY(ops_ptr, enable_flag) \
|
||||
{ (ops_ptr), #ops_ptr, (enable_flag) }
|
||||
|
||||
#define NO_FLAG 0U
|
||||
|
||||
static bool needs_init(struct gk20a *g, nvgpu_init_func_t func, u32 enable_flag)
|
||||
{
|
||||
return ((enable_flag == NO_FLAG) ||
|
||||
nvgpu_is_enabled(g, enable_flag)) && (func != NULL);
|
||||
}
|
||||
|
||||
int nvgpu_finalize_poweron(struct gk20a *g)
|
||||
{
|
||||
int err = 0;
|
||||
@@ -597,26 +603,25 @@ int nvgpu_finalize_poweron(struct gk20a *g)
|
||||
#endif
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(nvgpu_init_table); i++) {
|
||||
if ((nvgpu_init_table[i].enable_flag != 0ULL) &&
|
||||
!nvgpu_is_enabled(g, nvgpu_init_table[i].enable_flag)) {
|
||||
nvgpu_log_info(g, "Skipping initializing %s (not enabled)",
|
||||
nvgpu_init_table[i].name);
|
||||
} else if (nvgpu_init_table[i].func == NULL) {
|
||||
nvgpu_log_info(g, "Skipping initializing %s (NULL func)",
|
||||
nvgpu_init_table[i].name);
|
||||
if (!needs_init(g, nvgpu_init_table[i].func,
|
||||
nvgpu_init_table[i].enable_flag)) {
|
||||
nvgpu_log_info(g, "Skipping initializing %s (enable_flag=%u func=%p)",
|
||||
nvgpu_init_table[i].name,
|
||||
nvgpu_init_table[i].enable_flag,
|
||||
nvgpu_init_table[i].func);
|
||||
} else {
|
||||
nvgpu_log_info(g, "Initializing %s",
|
||||
nvgpu_init_table[i].name);
|
||||
err = nvgpu_init_table[i].func(g);
|
||||
if (err != 0) {
|
||||
nvgpu_err(g, "Failed initialization for: %s",
|
||||
nvgpu_init_table[i].name);
|
||||
nvgpu_init_table[i].name);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
goto exit;
|
||||
return err;
|
||||
|
||||
done:
|
||||
if (have_tpc_pg_lock) {
|
||||
@@ -628,7 +633,6 @@ done:
|
||||
}
|
||||
nvgpu_falcons_sw_free(g);
|
||||
|
||||
exit:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user