From 2a502bdd5f3c93b87286456ca901ad43b0f14906 Mon Sep 17 00:00:00 2001 From: David Nieto Date: Mon, 13 Mar 2017 18:45:37 -0700 Subject: 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 Reviewed-on: http://git-master/r/1320194 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker Reviewed-by: Terje Bergstrom GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/gk20a/cde_gk20a.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/cde_gk20a.c') 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) struct gk20a_cde_ctx, ctx_deleter_work); struct gk20a_cde_app *cde_app = &cde_ctx->g->cde_app; struct device *dev = cde_ctx->dev; + struct gk20a *g = cde_ctx->g; int err; /* someone has just taken it? engine deletion started? */ @@ -773,7 +774,7 @@ __releases(&cde_app->mutex) gk20a_dbg(gpu_dbg_fn | gpu_dbg_cde_ctx, "cde: attempting to delete temporary %p", cde_ctx); - err = gk20a_busy(dev); + err = gk20a_busy(g); if (err) { /* this context would find new use anyway later, so not freeing * here does not leak anything */ @@ -801,7 +802,7 @@ __releases(&cde_app->mutex) out: nvgpu_mutex_release(&cde_app->mutex); - gk20a_idle(dev); + gk20a_idle(g); } static struct gk20a_cde_ctx *gk20a_cde_do_get_context(struct gk20a *g) @@ -949,7 +950,7 @@ __releases(&cde_app->mutex) scatterbuffer_byte_offset < compbits_byte_offset) return -EINVAL; - err = gk20a_busy(g->dev); + err = gk20a_busy(g); if (err) return err; @@ -1106,7 +1107,7 @@ __releases(&cde_app->mutex) flags = __flags | NVGPU_SUBMIT_GPFIFO_FLAGS_FENCE_GET; /* gk20a_cde_execute_buffer() will grab a power reference of it's own */ - gk20a_idle(g->dev); + gk20a_idle(g); /* execute the conversion buffer, combined with init first if it's the * first time */ @@ -1131,7 +1132,7 @@ exit_unmap_surface: exit_unmap_vaddr: gk20a_vm_unmap(cde_ctx->vm, map_vaddr); exit_idle: - gk20a_idle(g->dev); + gk20a_idle(g); return err; } @@ -1283,7 +1284,7 @@ __releases(&cde_app->mutex) if (!cde_app->initialised) return -ENOSYS; - err = gk20a_busy(g->dev); + err = gk20a_busy(g); if (err) return err; @@ -1297,7 +1298,7 @@ __releases(&cde_app->mutex) nvgpu_mutex_release(&cde_app->mutex); - gk20a_idle(g->dev); + gk20a_idle(g); return err; } -- cgit v1.2.2