summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/msm/msm_fence.h
diff options
context:
space:
mode:
authorRob Clark <robdclark@chromium.org>2023-03-08 18:53:03 +0300
committerRob Clark <robdclark@chromium.org>2023-03-29 01:46:15 +0300
commitf8b8487c0756ead2e3584550e5a4d4ce4a1e520f (patch)
treef68dbd79f61d2ed60caed90958167846d67650fd /drivers/gpu/drm/msm/msm_fence.h
parent1ad0510cf730d8556fa7ff067b72aa960dde454b (diff)
downloadlinux-f8b8487c0756ead2e3584550e5a4d4ce4a1e520f.tar.xz
drm/msm: Add deadline based boost support
Track the nearest deadline on a fence timeline and set a timer to expire shortly before to trigger boost if the fence has not yet been signaled. v2: rebase Signed-off-by: Rob Clark <robdclark@chromium.org> Patchwork: https://patchwork.freedesktop.org/patch/525816/ Link: https://lore.kernel.org/r/20230308155322.344664-13-robdclark@gmail.com
Diffstat (limited to 'drivers/gpu/drm/msm/msm_fence.h')
-rw-r--r--drivers/gpu/drm/msm/msm_fence.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/msm_fence.h b/drivers/gpu/drm/msm/msm_fence.h
index f913fa22d8fe..148196375a0b 100644
--- a/drivers/gpu/drm/msm/msm_fence.h
+++ b/drivers/gpu/drm/msm/msm_fence.h
@@ -52,6 +52,26 @@ struct msm_fence_context {
volatile uint32_t *fenceptr;
spinlock_t spinlock;
+
+ /*
+ * TODO this doesn't really deal with multiple deadlines, like
+ * if userspace got multiple frames ahead.. OTOH atomic updates
+ * don't queue, so maybe that is ok
+ */
+
+ /** next_deadline: Time of next deadline */
+ ktime_t next_deadline;
+
+ /**
+ * next_deadline_fence:
+ *
+ * Fence value for next pending deadline. The deadline timer is
+ * canceled when this fence is signaled.
+ */
+ uint32_t next_deadline_fence;
+
+ struct hrtimer deadline_timer;
+ struct kthread_work deadline_work;
};
struct msm_fence_context * msm_fence_context_alloc(struct drm_device *dev,