diff --git a/drivers/gpu/nvgpu/common/linux/module.c b/drivers/gpu/nvgpu/common/linux/module.c index 5012d8b5a..4af62d5f7 100644 --- a/drivers/gpu/nvgpu/common/linux/module.c +++ b/drivers/gpu/nvgpu/common/linux/module.c @@ -186,7 +186,7 @@ static int nvgpu_init_os_linux_ops(struct nvgpu_os_linux *l) return 0; } -static int nvgpu_finalize_poweron_linux(struct nvgpu_os_linux *l) +int nvgpu_finalize_poweron_linux(struct nvgpu_os_linux *l) { struct gk20a *g = &l->g; int err; diff --git a/drivers/gpu/nvgpu/common/linux/module.h b/drivers/gpu/nvgpu/common/linux/module.h index 5814d63af..90dba804d 100644 --- a/drivers/gpu/nvgpu/common/linux/module.h +++ b/drivers/gpu/nvgpu/common/linux/module.h @@ -19,8 +19,10 @@ struct gk20a; struct device; +struct nvgpu_os_linux; int gk20a_pm_finalize_poweron(struct device *dev); +int nvgpu_finalize_poweron_linux(struct nvgpu_os_linux *l); void gk20a_remove_support(struct gk20a *g); void gk20a_driver_start_unload(struct gk20a *g); int nvgpu_quiesce(struct gk20a *g); diff --git a/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c b/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c index f261d2ca1..10c2211ef 100644 --- a/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c +++ b/drivers/gpu/nvgpu/common/linux/vgpu/vgpu.c @@ -460,6 +460,7 @@ static int vgpu_init_hal(struct gk20a *g) int vgpu_pm_finalize_poweron(struct device *dev) { struct gk20a *g = get_gk20a(dev); + struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); int err; gk20a_dbg_fn(""); @@ -501,6 +502,10 @@ int vgpu_pm_finalize_poweron(struct device *dev) goto done; } + err = nvgpu_finalize_poweron_linux(l); + if (err) + goto done; + gk20a_ctxsw_trace_init(g); gk20a_sched_ctrl_init(g); gk20a_channel_resume(g);