gpu: nvgpu: fix channel close sequence

In gk20a_cde_remove_ctx(), current sequence is as below
- gk20a_channel_close()
- gk20a_deinit_cde_img()
  - gk20a_free_obj_ctx()

But gk20a_free_obj_ctx() needs reference to channel and hence
below crash is seen :

[ 3901.466223] Unable to handle kernel paging request at virtual address
00001624
...
[ 3901.535218] PC is at gk20a_free_obj_ctx+0x14/0xb0
[ 3901.539910] LR is at gk20a_deinit_cde_img+0xd8/0x12c

Fix this by closing the channel after gk20a_deinit_cde_img()

Bug 1625901

Change-Id: Ic2dc5af933b6d6ef8982c2b9f0caa28df204051f
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/770322
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
This commit is contained in:
Deepak Nibade
2015-07-14 18:18:05 +05:30
committed by Sachin Nikam
parent 1b145f447b
commit ae2f9da28e

View File

@@ -73,14 +73,14 @@ __must_hold(&cde_app->mutex)
trace_gk20a_cde_remove_ctx(cde_ctx);
/* free the channel */
gk20a_channel_close(ch);
/* ..then release mapped memory */
/* release mapped memory */
gk20a_deinit_cde_img(cde_ctx);
gk20a_gmmu_unmap(vm, cde_ctx->backing_store_vaddr,
g->gr.compbit_store.mem.size, 1);
/* free the channel */
gk20a_channel_close(ch);
/* housekeeping on app */
list_del(&cde_ctx->list);
cde_ctx->g->cde_app.ctx_count--;