summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2014-12-19 09:26:50 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 18:05:33 -0400
commit4f0ff678324170cbe431a67862d4099160d4fcbd (patch)
tree580e7d3092c57e24ae4c54fa13faed9b392ecf5c /drivers
parent4284b5edc04a111145252619a433eac26ea2835c (diff)
gpu: nvgpu: cde: ignore spurious context releases
Gpu channels may get spurious updates from at least nonstalling semaphore wait interrupts. Protect data structure sanity by ignoring releases on already released (= not in use) cde contexts. Bug 200062826 Change-Id: I5940a7557e902bcfcff1a7e8e4593472d9ac306c Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/666235 (cherry picked from commit 47dc2f41eb8054b099b6eb9a4a7d82c97295d415) Reviewed-on: http://git-master/r/666657 GVS: Gerrit_Virtual_Submit Reviewed-by: Arto Merilainen <amerilainen@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/cde_gk20a.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
index f3185dd9..6f629e81 100644
--- a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c
@@ -759,12 +759,13 @@ __releases(&cde_app->mutex)
759 759
760 mutex_lock(&cde_app->mutex); 760 mutex_lock(&cde_app->mutex);
761 761
762 if (!cde_ctx->in_use) 762 if (cde_ctx->in_use) {
763 cde_ctx->in_use = false;
764 list_move(&cde_ctx->list, &cde_app->free_contexts);
765 cde_app->ctx_usecount--;
766 } else {
763 gk20a_dbg_info("double release cde context %p", cde_ctx); 767 gk20a_dbg_info("double release cde context %p", cde_ctx);
764 768 }
765 cde_ctx->in_use = false;
766 list_move(&cde_ctx->list, &cde_app->free_contexts);
767 cde_app->ctx_usecount--;
768 769
769 mutex_unlock(&cde_app->mutex); 770 mutex_unlock(&cde_app->mutex);
770} 771}