summaryrefslogtreecommitdiff
path: root/mali_kbase/context/backend
diff options
context:
space:
mode:
authordiverj <diverj@google.com>2021-11-09 12:18:48 +0000
committerJack Diver <diverj@google.com>2021-12-01 17:33:44 +0000
commitf4e2faf29f9174e8ee0eea4f3b0e65f7366a4cfe (patch)
tree560a1497ed971af91962b064939c8d6abec3afd3 /mali_kbase/context/backend
parenta204033deaaa98322b63e5f60927789d48092afa (diff)
downloadgpu-f4e2faf29f9174e8ee0eea4f3b0e65f7366a4cfe.tar.gz
mali_kbase: Experimental Arm patch to fix stuck MMU command
* Wait to avoid L2 power transitions during MMU commands * Add dump_stack for AS_ACTIVE bit stuck error Bug: 205301015 Signed-off-by: diverj <diverj@google.com> Change-Id: I550cb492274760087423742d91592f2f5b49b0ac
Diffstat (limited to 'mali_kbase/context/backend')
-rw-r--r--mali_kbase/context/backend/mali_kbase_context_csf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/mali_kbase/context/backend/mali_kbase_context_csf.c b/mali_kbase/context/backend/mali_kbase_context_csf.c
index 33912e6..5a0caf3 100644
--- a/mali_kbase/context/backend/mali_kbase_context_csf.c
+++ b/mali_kbase/context/backend/mali_kbase_context_csf.c
@@ -31,6 +31,7 @@
#include <mali_kbase_mem_pool_group.h>
#include <mmu/mali_kbase_mmu.h>
#include <tl/mali_kbase_timeline.h>
+#include <backend/gpu/mali_kbase_pm_internal.h>
#if IS_ENABLED(CONFIG_DEBUG_FS)
#include <csf/mali_kbase_csf_csg_debugfs.h>
@@ -173,6 +174,7 @@ KBASE_EXPORT_SYMBOL(kbase_create_context);
void kbase_destroy_context(struct kbase_context *kctx)
{
struct kbase_device *kbdev;
+ int err;
if (WARN_ON(!kctx))
return;
@@ -194,6 +196,13 @@ void kbase_destroy_context(struct kbase_context *kctx)
!kbase_pm_is_suspending(kbdev));
}
+ /* Make sure L2 cache is powered up */
+ err = kbase_pm_wait_for_l2_powered(kbdev);
+ if (err) {
+ dev_err(kbdev->dev, "Wait for L2 power up failed on term of ctx %d_%d",
+ kctx->tgid, kctx->id);
+ }
+
kbase_mem_pool_group_mark_dying(&kctx->mem_pools);
kbase_context_term_partial(kctx, ARRAY_SIZE(context_init));