diff options
author | diverj <diverj@google.com> | 2021-11-09 12:18:48 +0000 |
---|---|---|
committer | Jack Diver <diverj@google.com> | 2021-12-01 17:33:44 +0000 |
commit | f4e2faf29f9174e8ee0eea4f3b0e65f7366a4cfe (patch) | |
tree | 560a1497ed971af91962b064939c8d6abec3afd3 /mali_kbase/context/backend | |
parent | a204033deaaa98322b63e5f60927789d48092afa (diff) | |
download | gpu-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.c | 9 |
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)); |