summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_core_linux.c
diff options
context:
space:
mode:
authorDevika Krishnadas <kdevika@google.com>2021-07-29 11:52:22 +0800
committerSidath Senanayake <sidaths@google.com>2021-09-10 18:33:33 +0000
commit6a9213ba008e15edbb7fbb6f897e179f5cb4eb93 (patch)
tree1dbe06ef76a4393396cc0f7a0bec652595786ec9 /mali_kbase/mali_kbase_core_linux.c
parent71310b5be68bb0508ebd78c4f29c76d3a8552845 (diff)
downloadgpu-6a9213ba008e15edbb7fbb6f897e179f5cb4eb93.tar.gz
mali_kbase: Make some event wakeups synchronous
Allow for event wakeups to be signalled on the current core for reduced latency Bug: 187515047 Test: Analyse perfetto traces Change-Id: I104788a7b497f1056ebee0f4aa344cc75ba2d123 Signed-off-by: Devika Krishnadas <kdevika@google.com>
Diffstat (limited to 'mali_kbase/mali_kbase_core_linux.c')
-rw-r--r--mali_kbase/mali_kbase_core_linux.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/mali_kbase/mali_kbase_core_linux.c b/mali_kbase/mali_kbase_core_linux.c
index be35c95..49e9fb5 100644
--- a/mali_kbase/mali_kbase_core_linux.c
+++ b/mali_kbase/mali_kbase_core_linux.c
@@ -2150,15 +2150,22 @@ static unsigned int kbase_poll(struct file *filp, poll_table *wait)
return 0;
}
-void kbase_event_wakeup(struct kbase_context *kctx)
+void _kbase_event_wakeup(struct kbase_context *kctx, bool sync)
{
KBASE_DEBUG_ASSERT(kctx);
- dev_dbg(kctx->kbdev->dev, "Waking event queue for context %pK\n",
- (void *)kctx);
- wake_up_interruptible(&kctx->event_queue);
-}
-
-KBASE_EXPORT_TEST_API(kbase_event_wakeup);
+ if(sync) {
+ dev_dbg(kctx->kbdev->dev,
+ "Waking event queue for context %pK (sync)\n", (void *)kctx);
+ wake_up_interruptible_sync(&kctx->event_queue);
+ }
+ else {
+ dev_dbg(kctx->kbdev->dev,
+ "Waking event queue for context %pK (nosync)\n",(void *)kctx);
+ wake_up_interruptible(&kctx->event_queue);
+ }
+}
+
+KBASE_EXPORT_TEST_API(_kbase_event_wakeup);
#if MALI_USE_CSF
int kbase_event_pending(struct kbase_context *ctx)