diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2014-12-19 09:26:50 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-04-04 18:05:33 -0400 |
commit | 4f0ff678324170cbe431a67862d4099160d4fcbd (patch) | |
tree | 580e7d3092c57e24ae4c54fa13faed9b392ecf5c | |
parent | 4284b5edc04a111145252619a433eac26ea2835c (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>
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/cde_gk20a.c | 11 |
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 | } |