diff --git a/drivers/gpu/nvgpu/common/init/nvgpu_init.c b/drivers/gpu/nvgpu/common/init/nvgpu_init.c index 7ca1c48fb..92603649f 100644 --- a/drivers/gpu/nvgpu/common/init/nvgpu_init.c +++ b/drivers/gpu/nvgpu/common/init/nvgpu_init.c @@ -339,10 +339,6 @@ int nvgpu_prepare_poweroff(struct gk20a *g) if (tmp_ret != 0) { ret = tmp_ret; } - tmp_ret = nvgpu_nvs_suspend(g); - if (tmp_ret != 0) { - ret = tmp_ret; - } tmp_ret = g->ops.fifo.fifo_suspend(g); if (tmp_ret != 0) { ret = tmp_ret; diff --git a/drivers/gpu/nvgpu/common/nvs/nvs_sched.c b/drivers/gpu/nvgpu/common/nvs/nvs_sched.c index f393f19aa..b456b73a8 100644 --- a/drivers/gpu/nvgpu/common/nvs/nvs_sched.c +++ b/drivers/gpu/nvgpu/common/nvs/nvs_sched.c @@ -161,6 +161,8 @@ static void nvgpu_nvs_worker_deinit(struct gk20a *g) struct nvgpu_worker *worker = &g->scheduler->worker.worker; nvgpu_worker_deinit(worker); + + nvs_dbg(g, "NVS worker suspended"); } int nvgpu_nvs_init(struct gk20a *g) @@ -198,6 +200,8 @@ void nvgpu_nvs_remove_support(struct gk20a *g) return; } + nvgpu_nvs_worker_deinit(g); + nvs_domain_for_each(sched->sched, nvs_dom) { struct nvgpu_nvs_domain *nvgpu_dom = nvs_dom->priv; if (nvgpu_dom->ref != 1U) { @@ -217,14 +221,6 @@ void nvgpu_nvs_remove_support(struct gk20a *g) nvgpu_mutex_destroy(&g->sched_mutex); } -int nvgpu_nvs_suspend(struct gk20a *g) -{ - nvgpu_nvs_worker_deinit(g); - nvs_dbg(g, "NVS worker suspended"); - - return 0; -} - int nvgpu_nvs_open(struct gk20a *g) { int err = 0; @@ -235,8 +231,6 @@ int nvgpu_nvs_open(struct gk20a *g) if (g->scheduler != NULL) { /* resuming from railgate */ - err = nvgpu_nvs_worker_init(g); - nvs_dbg(g, "NVS worker resume, err=%d", err); goto unlock; } diff --git a/drivers/gpu/nvgpu/common/utils/worker.c b/drivers/gpu/nvgpu/common/utils/worker.c index d5498cc78..a5bbe655e 100644 --- a/drivers/gpu/nvgpu/common/utils/worker.c +++ b/drivers/gpu/nvgpu/common/utils/worker.c @@ -199,6 +199,11 @@ static int nvgpu_worker_start(struct nvgpu_worker *worker) err = nvgpu_thread_create(&worker->poll_task, worker, nvgpu_worker_poll_work, worker->thread_name); + if (err != 0) { + nvgpu_err(worker->g, + "failed to create worker poller thread %s err %d", + worker->thread_name, err); + } nvgpu_mutex_release(&worker->start_lock); return err; diff --git a/drivers/gpu/nvgpu/include/nvgpu/nvs.h b/drivers/gpu/nvgpu/include/nvgpu/nvs.h index df51d46c3..ff112f0dc 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/nvs.h +++ b/drivers/gpu/nvgpu/include/nvgpu/nvs.h @@ -84,7 +84,6 @@ struct nvgpu_nvs_scheduler { int nvgpu_nvs_init(struct gk20a *g); int nvgpu_nvs_open(struct gk20a *g); void nvgpu_nvs_remove_support(struct gk20a *g); -int nvgpu_nvs_suspend(struct gk20a *g); void nvgpu_nvs_get_log(struct gk20a *g, s64 *timestamp, const char **msg); u32 nvgpu_nvs_domain_count(struct gk20a *g); int nvgpu_nvs_del_domain(struct gk20a *g, u64 dom_id); @@ -113,11 +112,6 @@ static inline void nvgpu_nvs_remove_support(struct gk20a *g) { } -static inline int nvgpu_nvs_suspend(struct gk20a *g) -{ - return 0; -} - static inline struct nvgpu_nvs_domain * nvgpu_nvs_domain_by_name(struct gk20a *g, const char *name) {