diff options
author | Devika Krishnadas <kdevika@google.com> | 2021-07-29 11:52:22 +0800 |
---|---|---|
committer | Sidath Senanayake <sidaths@google.com> | 2021-09-10 18:33:33 +0000 |
commit | 6a9213ba008e15edbb7fbb6f897e179f5cb4eb93 (patch) | |
tree | 1dbe06ef76a4393396cc0f7a0bec652595786ec9 /mali_kbase/mali_kbase_core_linux.c | |
parent | 71310b5be68bb0508ebd78c4f29c76d3a8552845 (diff) | |
download | gpu-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.c | 21 |
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) |