From: Rob Clark <robdclark@gmail.com> To: dri-devel@lists.freedesktop.org Cc: "Daniel Vetter" <daniel@ffwll.ch>, "Matthew Brost" <matthew.brost@intel.com>, "Christian König" <ckoenig.leichtzumerken@gmail.com>, "Rob Clark" <robdclark@chromium.org>, "David Airlie" <airlied@linux.ie>, "Sumit Semwal" <sumit.semwal@linaro.org>, "Christian König" <christian.koenig@amd.com>, "Alex Deucher" <alexander.deucher@amd.com>, "Tian Tao" <tiantao6@hisilicon.com>, "Luben Tuikov" <luben.tuikov@amd.com>, "Andrey Grodzovsky" <andrey.grodzovsky@amd.com>, "Alyssa Rosenzweig" <alyssa.rosenzweig@collabora.com>, "Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>, "Jack Zhang" <Jack.Zhang1@amd.com>, linux-kernel@vger.kernel.org (open list), linux-media@vger.kernel.org (open list:DMA BUFFER SHARING FRAMEWORK), linaro-mm-sig@lists.linaro.org (moderated list:DMA BUFFER SHARING FRAMEWORK) Subject: [RFC 4/4] drm/scheduler: Add fence deadline support Date: Mon, 26 Jul 2021 16:38:51 -0700 [thread overview] Message-ID: <20210726233854.2453899-5-robdclark@gmail.com> (raw) In-Reply-To: <20210726233854.2453899-1-robdclark@gmail.com> From: Rob Clark <robdclark@chromium.org> As the finished fence is the one that is exposed to userspace, and therefore the one that other operations, like atomic update, would block on, we need to propagate the deadline from from the finished fence to the actual hw fence. Signed-off-by: Rob Clark <robdclark@chromium.org> --- drivers/gpu/drm/scheduler/sched_fence.c | 10 ++++++++++ drivers/gpu/drm/scheduler/sched_main.c | 3 +++ 2 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/scheduler/sched_fence.c b/drivers/gpu/drm/scheduler/sched_fence.c index 69de2c76731f..3aa6351d2101 100644 --- a/drivers/gpu/drm/scheduler/sched_fence.c +++ b/drivers/gpu/drm/scheduler/sched_fence.c @@ -128,6 +128,15 @@ static void drm_sched_fence_release_finished(struct dma_fence *f) dma_fence_put(&fence->scheduled); } +static void drm_sched_fence_set_deadline_finished(struct dma_fence *f, + ktime_t deadline) +{ + struct drm_sched_fence *fence = to_drm_sched_fence(f); + + if (fence->parent) + dma_fence_set_deadline(fence->parent, deadline); +} + static const struct dma_fence_ops drm_sched_fence_ops_scheduled = { .get_driver_name = drm_sched_fence_get_driver_name, .get_timeline_name = drm_sched_fence_get_timeline_name, @@ -138,6 +147,7 @@ static const struct dma_fence_ops drm_sched_fence_ops_finished = { .get_driver_name = drm_sched_fence_get_driver_name, .get_timeline_name = drm_sched_fence_get_timeline_name, .release = drm_sched_fence_release_finished, + .set_deadline = drm_sched_fence_set_deadline_finished, }; struct drm_sched_fence *to_drm_sched_fence(struct dma_fence *f) diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index a2a953693b45..fcc601962e92 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -818,6 +818,9 @@ static int drm_sched_main(void *param) if (!IS_ERR_OR_NULL(fence)) { s_fence->parent = dma_fence_get(fence); + if (test_bit(DMA_FENCE_FLAG_HAS_DEADLINE_BIT, + &s_fence->finished.flags)) + dma_fence_set_deadline(fence, s_fence->finished.deadline); r = dma_fence_add_callback(fence, &sched_job->cb, drm_sched_job_done_cb); if (r == -ENOENT) -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Rob Clark <robdclark@gmail.com> To: dri-devel@lists.freedesktop.org Cc: "Matthew Brost" <matthew.brost@intel.com>, "Rob Clark" <robdclark@chromium.org>, "Jack Zhang" <Jack.Zhang1@amd.com>, "David Airlie" <airlied@linux.ie>, "Christian König" <ckoenig.leichtzumerken@gmail.com>, "open list" <linux-kernel@vger.kernel.org>, "Christian König" <christian.koenig@amd.com>, "moderated list:DMA BUFFER SHARING FRAMEWORK" <linaro-mm-sig@lists.linaro.org>, "Luben Tuikov" <luben.tuikov@amd.com>, "Alyssa Rosenzweig" <alyssa.rosenzweig@collabora.com>, "Alex Deucher" <alexander.deucher@amd.com>, "Tian Tao" <tiantao6@hisilicon.com>, "open list:DMA BUFFER SHARING FRAMEWORK" <linux-media@vger.kernel.org> Subject: [RFC 4/4] drm/scheduler: Add fence deadline support Date: Mon, 26 Jul 2021 16:38:51 -0700 [thread overview] Message-ID: <20210726233854.2453899-5-robdclark@gmail.com> (raw) In-Reply-To: <20210726233854.2453899-1-robdclark@gmail.com> From: Rob Clark <robdclark@chromium.org> As the finished fence is the one that is exposed to userspace, and therefore the one that other operations, like atomic update, would block on, we need to propagate the deadline from from the finished fence to the actual hw fence. Signed-off-by: Rob Clark <robdclark@chromium.org> --- drivers/gpu/drm/scheduler/sched_fence.c | 10 ++++++++++ drivers/gpu/drm/scheduler/sched_main.c | 3 +++ 2 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/scheduler/sched_fence.c b/drivers/gpu/drm/scheduler/sched_fence.c index 69de2c76731f..3aa6351d2101 100644 --- a/drivers/gpu/drm/scheduler/sched_fence.c +++ b/drivers/gpu/drm/scheduler/sched_fence.c @@ -128,6 +128,15 @@ static void drm_sched_fence_release_finished(struct dma_fence *f) dma_fence_put(&fence->scheduled); } +static void drm_sched_fence_set_deadline_finished(struct dma_fence *f, + ktime_t deadline) +{ + struct drm_sched_fence *fence = to_drm_sched_fence(f); + + if (fence->parent) + dma_fence_set_deadline(fence->parent, deadline); +} + static const struct dma_fence_ops drm_sched_fence_ops_scheduled = { .get_driver_name = drm_sched_fence_get_driver_name, .get_timeline_name = drm_sched_fence_get_timeline_name, @@ -138,6 +147,7 @@ static const struct dma_fence_ops drm_sched_fence_ops_finished = { .get_driver_name = drm_sched_fence_get_driver_name, .get_timeline_name = drm_sched_fence_get_timeline_name, .release = drm_sched_fence_release_finished, + .set_deadline = drm_sched_fence_set_deadline_finished, }; struct drm_sched_fence *to_drm_sched_fence(struct dma_fence *f) diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c index a2a953693b45..fcc601962e92 100644 --- a/drivers/gpu/drm/scheduler/sched_main.c +++ b/drivers/gpu/drm/scheduler/sched_main.c @@ -818,6 +818,9 @@ static int drm_sched_main(void *param) if (!IS_ERR_OR_NULL(fence)) { s_fence->parent = dma_fence_get(fence); + if (test_bit(DMA_FENCE_FLAG_HAS_DEADLINE_BIT, + &s_fence->finished.flags)) + dma_fence_set_deadline(fence, s_fence->finished.deadline); r = dma_fence_add_callback(fence, &sched_job->cb, drm_sched_job_done_cb); if (r == -ENOENT) -- 2.31.1
next prev parent reply other threads:[~2021-07-26 23:35 UTC|newest] Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-26 23:38 [RFC 0/4] dma-fence: Deadline awareness Rob Clark 2021-07-26 23:38 ` Rob Clark 2021-07-26 23:38 ` [RFC 1/4] dma-fence: Add deadline awareness Rob Clark 2021-07-26 23:38 ` Rob Clark 2021-07-27 7:11 ` Christian König 2021-07-27 7:11 ` Christian König 2021-07-27 14:25 ` Rob Clark 2021-07-27 14:25 ` Rob Clark 2021-07-28 7:03 ` Christian König 2021-07-28 7:03 ` Christian König 2021-07-28 11:37 ` Christian König 2021-07-28 11:37 ` Christian König 2021-07-28 15:15 ` Rob Clark 2021-07-28 15:15 ` Rob Clark 2021-07-28 17:23 ` Christian König 2021-07-28 17:23 ` Christian König 2021-07-28 17:58 ` Rob Clark 2021-07-28 17:58 ` Rob Clark 2021-07-29 7:03 ` Daniel Vetter 2021-07-29 7:03 ` Daniel Vetter 2021-07-29 15:23 ` Rob Clark 2021-07-29 15:23 ` Rob Clark 2021-07-29 16:18 ` Daniel Vetter 2021-07-29 16:18 ` Daniel Vetter 2021-07-29 17:32 ` Rob Clark 2021-07-29 17:32 ` Rob Clark 2021-07-26 23:38 ` [RFC 2/4] drm/vblank: Add helper to get next vblank time Rob Clark 2021-07-26 23:38 ` Rob Clark 2021-07-26 23:38 ` [RFC 3/4] drm/atomic-helper: Set fence deadline for vblank Rob Clark 2021-07-26 23:38 ` Rob Clark 2021-07-27 10:44 ` Michel Dänzer 2021-07-27 10:44 ` Michel Dänzer 2021-07-27 14:33 ` Rob Clark 2021-07-27 14:33 ` Rob Clark 2021-07-26 23:38 ` Rob Clark [this message] 2021-07-26 23:38 ` [RFC 4/4] drm/scheduler: Add fence deadline support Rob Clark 2021-07-26 23:51 ` [RFC 0/4] dma-fence: Deadline awareness Rob Clark 2021-07-26 23:51 ` Rob Clark 2021-07-27 14:41 ` Michel Dänzer 2021-07-27 14:41 ` Michel Dänzer 2021-07-27 15:12 ` Rob Clark 2021-07-27 15:12 ` Rob Clark 2021-07-27 15:19 ` Michel Dänzer 2021-07-27 15:37 ` Rob Clark 2021-07-27 15:37 ` Rob Clark 2021-07-28 11:36 ` Christian König 2021-07-28 11:36 ` Christian König 2021-07-28 13:08 ` Michel Dänzer 2021-07-28 13:13 ` Christian König 2021-07-28 13:24 ` Michel Dänzer 2021-07-28 13:31 ` Christian König 2021-07-28 13:57 ` Pekka Paalanen 2021-07-28 13:57 ` Pekka Paalanen 2021-07-28 14:30 ` Christian König 2021-07-28 14:30 ` Christian König 2021-07-29 8:08 ` Michel Dänzer 2021-07-29 8:23 ` Pekka Paalanen 2021-07-29 8:23 ` Pekka Paalanen 2021-07-29 8:43 ` Christian König 2021-07-29 8:43 ` Christian König 2021-07-29 9:15 ` Pekka Paalanen 2021-07-29 9:15 ` Pekka Paalanen 2021-07-29 10:14 ` Christian König 2021-07-29 10:14 ` Christian König 2021-07-29 10:28 ` Michel Dänzer 2021-07-29 11:00 ` Pekka Paalanen 2021-07-29 11:00 ` Pekka Paalanen 2021-07-29 11:43 ` Christian König 2021-07-29 11:43 ` Christian König 2021-07-29 12:49 ` Pekka Paalanen 2021-07-29 12:49 ` Pekka Paalanen 2021-07-29 13:41 ` Christian König 2021-07-29 13:41 ` Christian König 2021-07-29 14:10 ` Pekka Paalanen 2021-07-29 14:10 ` Pekka Paalanen 2021-07-28 15:27 ` Rob Clark 2021-07-28 15:27 ` Rob Clark 2021-07-28 17:20 ` Christian König 2021-07-28 15:34 ` Rob Clark 2021-07-28 15:34 ` Rob Clark 2021-07-29 7:09 ` Daniel Vetter 2021-07-29 7:09 ` Daniel Vetter 2021-07-29 8:17 ` Michel Dänzer 2021-07-29 8:17 ` Michel Dänzer 2021-07-29 9:03 ` Daniel Vetter 2021-07-29 9:03 ` Daniel Vetter 2021-07-29 9:37 ` Pekka Paalanen 2021-07-29 9:37 ` Pekka Paalanen 2021-07-29 12:18 ` Daniel Vetter 2021-07-29 12:18 ` Daniel Vetter 2021-07-29 12:59 ` Pekka Paalanen 2021-07-29 12:59 ` Pekka Paalanen 2021-07-29 14:05 ` Daniel Vetter 2021-07-29 14:05 ` Daniel Vetter 2021-07-27 21:17 ` [RFC 5/4] drm/msm: Add deadline based boost support Rob Clark 2021-07-27 21:17 ` Rob Clark
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210726233854.2453899-5-robdclark@gmail.com \ --to=robdclark@gmail.com \ --cc=Jack.Zhang1@amd.com \ --cc=airlied@linux.ie \ --cc=alexander.deucher@amd.com \ --cc=alyssa.rosenzweig@collabora.com \ --cc=andrey.grodzovsky@amd.com \ --cc=christian.koenig@amd.com \ --cc=ckoenig.leichtzumerken@gmail.com \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=linaro-mm-sig@lists.linaro.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=luben.tuikov@amd.com \ --cc=maarten.lankhorst@linux.intel.com \ --cc=matthew.brost@intel.com \ --cc=robdclark@chromium.org \ --cc=sumit.semwal@linaro.org \ --cc=tiantao6@hisilicon.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.