gpu: nvgpu: check power_on before checking gp_get/put
Deepak Nibade [Mon, 11 Jan 2016 10:52:26 +0000 (15:52 +0530)]
gk20a_channel_update() runs in worker thread, and it is possible
that we shutdown GPU while this funtion is still running

Hence, check if GPU is on with flag g->power_on before accessing
gp_get/put

Bug 200165480

Change-Id: Ifcff7c60212923966e36f792f550524275aede22
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/931039
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vinayak Pane <vpane@nvidia.com>
Tested-by: Roopa Ranganathan <rranganathan@nvidia.com>

drivers/gpu/nvgpu/gk20a/channel_gk20a.c

index fd94667..169242a 100644 (file)
@@ -1562,13 +1562,15 @@ void gk20a_channel_update(struct channel_gk20a *c, int nr_completed)
 
        trace_gk20a_channel_update(c->hw_chid);
 
-       update_gp_get(c->g, c);
        wake_up(&c->submit_wq);
 
        mutex_lock(&c->submit_lock);
 
-       /* gp_put check needs to be done inside submit lock */
-       check_gp_put(c->g, c);
+       if (c->g->power_on) {
+               /* gp_put check needs to be done inside submit lock */
+               update_gp_get(c->g, c);
+               check_gp_put(c->g, c);
+       }
 
        mutex_lock(&c->jobs_lock);
        list_for_each_entry_safe(job, n, &c->jobs, list) {