gpu: nvgpu: unit: init: update to work with new init design

To address CCM in nvgpu_finalize_poweron(), some init APIs were updated
and broke the init unit test, so it was disabled. This addresses the
breakage and re-enables the test.

JIRA NVGPU-3980

Change-Id: I61b6595e0903373c36f949a5ec1e85718fd13f32
Signed-off-by: Philip Elcan <pelcan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2207420
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vinod Gopalakrishnakurup <vinodg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Philip Elcan
2019-09-27 14:13:42 -04:00
committed by Alex Waterman
parent d10447e717
commit 4a5ee02291

View File

@@ -107,29 +107,6 @@ static int falcon_sw_init(struct gk20a *g, u32 falcon_id)
return 0;
}
/* pmu_early_init is passed a unique struct */
struct nvgpu_pmu;
static int pmu_early_init_return = 0;
static int pmu_early_init(struct gk20a *g, struct nvgpu_pmu **pmu)
{
return pmu_early_init_return;
}
/* acr_init is passed a unique struct */
struct nvgpu_acr;
static int acr_init_return = 0;
static int acr_init(struct gk20a *g, struct nvgpu_acr **acr)
{
return acr_init_return;
}
/* acr_construct_execute is passed a unique struct */
static int acr_construct_execute_return = 0;
static int acr_construct_execute(struct gk20a *g, struct nvgpu_acr *acr)
{
return acr_construct_execute_return;
}
/* generic for passing in a u32 */
static int return_success_u32_param(struct gk20a *g, u32 dummy)
{
@@ -372,25 +349,20 @@ static void set_poweron_funcs_success(struct gk20a *g)
setup_simple_init_func_success(&g->ops.gr.ecc.ecc_init_support, i++);
setup_simple_init_func_success(&g->ops.therm.init_therm_support, i++);
setup_simple_init_func_success(&g->ops.ce.ce_init_support, i++);
setup_simple_init_func_success(&g->ops.bus.init_hw, i++);
setup_simple_init_func_success(&g->ops.priv_ring.enable_priv_ring, i++);
setup_simple_init_func_success(&g->ops.mc.intr_enable, i++);
setup_simple_init_func_success(&g->ops.channel.resume_all_serviceable_ch, i++);
setup_simple_init_func_success(&g->ops.pmu.pmu_early_init, i++);
setup_simple_init_func_success(&g->ops.acr.acr_init, i++);
setup_simple_init_func_success(&g->ops.acr.acr_construct_execute, i++);
simple_init_func_ptrs_count = i;
/* these don't even return anything */
g->ops.bus.init_hw = no_return;
g->ops.priv_ring.enable_priv_ring = no_return;
g->ops.mc.intr_enable = no_return;
g->ops.channel.resume_all_serviceable_ch = no_return;
/* these are the exceptions */
g->ops.falcon.falcon_sw_init = falcon_sw_init;
falcon_fail_on_id = U32_MAX; /* don't fail */
g->ops.pmu.pmu_early_init = pmu_early_init;
pmu_early_init_return = 0;
g->ops.acr.acr_init = acr_init;
acr_init_return = 0;
g->ops.fuse.fuse_status_opt_tpc_gpc = return_u32_u32_param;
g->ops.tpc.tpc_powergate = return_success_u32_param;
g->ops.acr.acr_construct_execute = acr_construct_execute;
acr_construct_execute_return = 0;
g->ops.falcon.falcon_sw_free = no_return_u32_param;
/* used in support functions */
@@ -422,7 +394,8 @@ int test_poweron(struct unit_module *m, struct gk20a *g, void *args)
err = nvgpu_finalize_poweron(g);
if (err == 0) {
unit_return_fail(m,
"nvgpu_finalize_poweron errantly returned success\n");
"nvgpu_finalize_poweron errantly returned success i=%d\n",
i);
}
*simple_init_func_ptrs[i] = return_success;
}
@@ -446,25 +419,6 @@ int test_poweron(struct unit_module *m, struct gk20a *g, void *args)
}
falcon_fail_on_id = U32_MAX; /* stop failing */
pmu_early_init_return = -1;
g->power_on = false;
err = nvgpu_finalize_poweron(g);
if (err == 0) {
unit_return_fail(m,
"nvgpu_finalize_poweron errantly returned success\n");
}
pmu_early_init_return = 0;
acr_init_return = -1;
g->power_on = false;
err = nvgpu_finalize_poweron(g);
if (err == 0) {
unit_return_fail(m,
"nvgpu_finalize_poweron errantly returned success\n");
}
acr_init_return = 0;
g->ops.tpc.tpc_powergate = return_failure_u32_param;
g->power_on = false;
err = nvgpu_finalize_poweron(g);
@@ -474,15 +428,6 @@ int test_poweron(struct unit_module *m, struct gk20a *g, void *args)
}
g->ops.tpc.tpc_powergate = return_success_u32_param;
acr_construct_execute_return = -1;
g->power_on = false;
err = nvgpu_finalize_poweron(g);
if (err == 0) {
unit_return_fail(m,
"nvgpu_finalize_poweron errantly returned success\n");
}
acr_construct_execute_return = 0;
/* test the case of already being powered on */
g->power_on = true;
err = nvgpu_finalize_poweron(g);