summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
diff options
context:
space:
mode:
authorDavid Nieto <dmartineznie@nvidia.com>2017-03-13 21:45:37 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-24 00:05:35 -0400
commit2a502bdd5f3c93b87286456ca901ad43b0f14906 (patch)
treeaba5c18b07b393e0306588d9ba4707a6c272ae6b /drivers/gpu/nvgpu/gk20a/cde_gk20a.c
parenta84f601fbaf6b40e14a321eda1e83d93e55cebba (diff)
gpu: nvgpu: pass gk20a struct to gk20a_busy
After driver remove, the device structure passed in gk20a_busy can be invalid. To solve this the prototype of the function is modified to pass the gk20a struct instead of the device pointer. bug 200277762 JIRA: EVLR-1023 Change-Id: I08eb74bd3578834d45115098ed9936ebbb436fdf Signed-off-by: David Nieto <dmartineznie@nvidia.com> Reviewed-on: http://git-master/r/1320194 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/cde_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/cde_gk20a.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
index df15cf51..5b8ee642 100644
--- a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
@@ -764,6 +764,7 @@ __releases(&cde_app->mutex)
764 struct gk20a_cde_ctx, ctx_deleter_work); 764 struct gk20a_cde_ctx, ctx_deleter_work);
765 struct gk20a_cde_app *cde_app = &cde_ctx->g->cde_app; 765 struct gk20a_cde_app *cde_app = &cde_ctx->g->cde_app;
766 struct device *dev = cde_ctx->dev; 766 struct device *dev = cde_ctx->dev;
767 struct gk20a *g = cde_ctx->g;
767 int err; 768 int err;
768 769
769 /* someone has just taken it? engine deletion started? */ 770 /* someone has just taken it? engine deletion started? */
@@ -773,7 +774,7 @@ __releases(&cde_app->mutex)
773 gk20a_dbg(gpu_dbg_fn | gpu_dbg_cde_ctx, 774 gk20a_dbg(gpu_dbg_fn | gpu_dbg_cde_ctx,
774 "cde: attempting to delete temporary %p", cde_ctx); 775 "cde: attempting to delete temporary %p", cde_ctx);
775 776
776 err = gk20a_busy(dev); 777 err = gk20a_busy(g);
777 if (err) { 778 if (err) {
778 /* this context would find new use anyway later, so not freeing 779 /* this context would find new use anyway later, so not freeing
779 * here does not leak anything */ 780 * here does not leak anything */
@@ -801,7 +802,7 @@ __releases(&cde_app->mutex)
801 802
802out: 803out:
803 nvgpu_mutex_release(&cde_app->mutex); 804 nvgpu_mutex_release(&cde_app->mutex);
804 gk20a_idle(dev); 805 gk20a_idle(g);
805} 806}
806 807
807static struct gk20a_cde_ctx *gk20a_cde_do_get_context(struct gk20a *g) 808static struct gk20a_cde_ctx *gk20a_cde_do_get_context(struct gk20a *g)
@@ -949,7 +950,7 @@ __releases(&cde_app->mutex)
949 scatterbuffer_byte_offset < compbits_byte_offset) 950 scatterbuffer_byte_offset < compbits_byte_offset)
950 return -EINVAL; 951 return -EINVAL;
951 952
952 err = gk20a_busy(g->dev); 953 err = gk20a_busy(g);
953 if (err) 954 if (err)
954 return err; 955 return err;
955 956
@@ -1106,7 +1107,7 @@ __releases(&cde_app->mutex)
1106 flags = __flags | NVGPU_SUBMIT_GPFIFO_FLAGS_FENCE_GET; 1107 flags = __flags | NVGPU_SUBMIT_GPFIFO_FLAGS_FENCE_GET;
1107 1108
1108 /* gk20a_cde_execute_buffer() will grab a power reference of it's own */ 1109 /* gk20a_cde_execute_buffer() will grab a power reference of it's own */
1109 gk20a_idle(g->dev); 1110 gk20a_idle(g);
1110 1111
1111 /* execute the conversion buffer, combined with init first if it's the 1112 /* execute the conversion buffer, combined with init first if it's the
1112 * first time */ 1113 * first time */
@@ -1131,7 +1132,7 @@ exit_unmap_surface:
1131exit_unmap_vaddr: 1132exit_unmap_vaddr:
1132 gk20a_vm_unmap(cde_ctx->vm, map_vaddr); 1133 gk20a_vm_unmap(cde_ctx->vm, map_vaddr);
1133exit_idle: 1134exit_idle:
1134 gk20a_idle(g->dev); 1135 gk20a_idle(g);
1135 return err; 1136 return err;
1136} 1137}
1137 1138
@@ -1283,7 +1284,7 @@ __releases(&cde_app->mutex)
1283 if (!cde_app->initialised) 1284 if (!cde_app->initialised)
1284 return -ENOSYS; 1285 return -ENOSYS;
1285 1286
1286 err = gk20a_busy(g->dev); 1287 err = gk20a_busy(g);
1287 if (err) 1288 if (err)
1288 return err; 1289 return err;
1289 1290
@@ -1297,7 +1298,7 @@ __releases(&cde_app->mutex)
1297 1298
1298 nvgpu_mutex_release(&cde_app->mutex); 1299 nvgpu_mutex_release(&cde_app->mutex);
1299 1300
1300 gk20a_idle(g->dev); 1301 gk20a_idle(g);
1301 return err; 1302 return err;
1302} 1303}
1303 1304