From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> To: "Christian König" <ckoenig.leichtzumerken@gmail.com>, linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org Cc: daniel@ffwll.ch Subject: Re: [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Date: Tue, 21 Sep 2021 14:10:26 +0100 [thread overview] Message-ID: <5705c186-1c17-cd5d-c11d-8b5337204c8a@linux.intel.com> (raw) In-Reply-To: <64b6a924-be38-0ed0-da92-86296702f71c@gmail.com> On 21/09/2021 10:41, Christian König wrote: > Am 20.09.21 um 12:33 schrieb Tvrtko Ursulin: >> On 20/09/2021 11:13, Christian König wrote: >>> Am 20.09.21 um 10:45 schrieb Tvrtko Ursulin: >>>> >>>> On 17/09/2021 13:35, Christian König wrote: >>>>> This makes the function much simpler since the complex >>>>> retry logic is now handled else where. >>>>> >>>>> Signed-off-by: Christian König <christian.koenig@amd.com> >>>>> --- >>>>> drivers/gpu/drm/i915/gem/i915_gem_busy.c | 32 >>>>> ++++++++---------------- >>>>> 1 file changed, 11 insertions(+), 21 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>>>> b/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>>>> index 6234e17259c1..b1cb7ba688da 100644 >>>>> --- a/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>>>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>>>> @@ -82,8 +82,8 @@ i915_gem_busy_ioctl(struct drm_device *dev, void >>>>> *data, >>>>> { >>>>> struct drm_i915_gem_busy *args = data; >>>>> struct drm_i915_gem_object *obj; >>>>> - struct dma_resv_list *list; >>>>> - unsigned int seq; >>>>> + struct dma_resv_iter cursor; >>>>> + struct dma_fence *fence; >>>>> int err; >>>>> err = -ENOENT; >>>>> @@ -109,27 +109,17 @@ i915_gem_busy_ioctl(struct drm_device *dev, >>>>> void *data, >>>>> * to report the overall busyness. This is what the >>>>> wait-ioctl does. >>>>> * >>>>> */ >>>>> -retry: >>>>> - seq = raw_read_seqcount(&obj->base.resv->seq); >>>>> - >>>>> - /* Translate the exclusive fence to the READ *and* WRITE >>>>> engine */ >>>>> - args->busy = >>>>> busy_check_writer(dma_resv_excl_fence(obj->base.resv)); >>>>> - >>>>> - /* Translate shared fences to READ set of engines */ >>>>> - list = dma_resv_shared_list(obj->base.resv); >>>>> - if (list) { >>>>> - unsigned int shared_count = list->shared_count, i; >>>>> - >>>>> - for (i = 0; i < shared_count; ++i) { >>>>> - struct dma_fence *fence = >>>>> - rcu_dereference(list->shared[i]); >>>>> - >>>>> + args->busy = false; >>>>> + dma_resv_iter_begin(&cursor, obj->base.resv, true); >>>>> + dma_resv_for_each_fence_unlocked(&cursor, fence) { >>>> >>>> You did not agree with my suggestion to reset args->busy on restart >>>> and so preserve current behaviour? >>> >>> No, I want to keep the restart behavior internally to the dma_resv >>> object and as far as I can see it should not make a difference here. >> >> To be clear, on paper difference between old and new implementation is >> if the restart happens while processing the shared fences. >> >> Old implementation unconditionally goes to "args->busy = >> >>> busy_check_writer(dma_resv_excl_fence(obj->base.resv));" and so >> overwrites the set of flags returned to userspace. >> >> New implementation can merge new read flags to the old set of flags >> and so return a composition of past and current fences. >> >> Maybe it does not matter hugely in this case, depends if userspace >> typically just restarts until flags are clear. But I am not sure. >> >> On the higher level - what do you mean with wanting to keep the >> restart behaviour internal? Not providing iterators users means of >> detecting it? I think it has to be provided. > > Ok I will adjust that for now to get the patch set upstream. But in > general when somebody outside of the dma_resv code base depends on the > restart behavior then that's a bug inside the design of that code. Thanks, no change in behaviour makes for an easy r-b. :) > The callers should only care about what unsignaled fences are inside the > dma_resv container and it shouldn't matter if those fences are presented > once or multiple times because of a reset.. > > When this makes a difference we have a bug in the handling and should > probably consider taking the dma_resv.lock instead. I agree, which is why I was mentioning earlier how it would be good to completely sort locked from unlocked iterators and avoid situations where unlocked one is called from a path where object is locked. Unfortunately for the display code path I cannot easily help with the audit of call paths. And I think there are at least two patches in your series which need KMS expertise. Regards, Tvrtko
next prev parent reply other threads:[~2021-09-21 13:10 UTC|newest] Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-17 12:34 Deploying new iterator interface for dma-buf Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 01/26] dma-buf: add dma_resv_for_each_fence_unlocked v2 Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 13:23 ` Daniel Vetter 2021-09-17 13:23 ` [Intel-gfx] " Daniel Vetter 2021-09-20 8:43 ` Tvrtko Ursulin 2021-09-20 10:09 ` Christian König 2021-09-20 10:26 ` Tvrtko Ursulin 2021-09-17 12:34 ` [PATCH 02/26] dma-buf: add dma_resv_for_each_fence Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 13:27 ` Daniel Vetter 2021-09-17 13:27 ` [Intel-gfx] " Daniel Vetter 2021-09-17 14:30 ` Daniel Vetter 2021-09-17 14:30 ` Daniel Vetter 2021-09-17 12:34 ` [PATCH 03/26] dma-buf: use new iterator in dma_resv_copy_fences Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:35 ` Daniel Vetter 2021-09-17 14:35 ` [Intel-gfx] " Daniel Vetter 2021-09-20 7:23 ` Christian König 2021-09-20 7:23 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 04/26] dma-buf: use new iterator in dma_resv_get_fences v2 Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:39 ` Daniel Vetter 2021-09-17 14:39 ` [Intel-gfx] " Daniel Vetter 2021-09-17 12:34 ` [PATCH 05/26] dma-buf: use new iterator in dma_resv_wait_timeout Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:43 ` Daniel Vetter 2021-09-17 14:43 ` [Intel-gfx] " Daniel Vetter 2021-09-20 7:27 ` Christian König 2021-09-20 7:27 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 06/26] dma-buf: use new iterator in dma_resv_test_signaled Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:45 ` Daniel Vetter 2021-09-17 14:45 ` [Intel-gfx] " Daniel Vetter 2021-09-17 12:34 ` [PATCH 07/26] drm/ttm: use the new iterator in ttm_bo_flush_all_fences Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:50 ` Daniel Vetter 2021-09-17 14:50 ` [Intel-gfx] " Daniel Vetter 2021-09-17 12:34 ` [PATCH 08/26] drm/amdgpu: use the new iterator in amdgpu_sync_resv Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 09/26] drm/amdgpu: use new iterator in amdgpu_ttm_bo_eviction_valuable Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 10/26] drm/msm: use new iterator in msm_gem_describe Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 11/26] drm/radeon: use new iterator in radeon_sync_resv Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 12:34 ` [PATCH 12/26] drm/scheduler: use new iterator in drm_sched_job_add_implicit_dependencies v2 Christian König 2021-09-17 12:34 ` [Intel-gfx] " Christian König 2021-09-17 14:52 ` Daniel Vetter 2021-09-17 14:52 ` [Intel-gfx] " Daniel Vetter 2021-11-15 14:03 ` Sascha Hauer 2021-11-15 14:03 ` Sascha Hauer 2021-11-15 14:03 ` [Intel-gfx] " Sascha Hauer 2021-11-15 14:08 ` Daniel Vetter 2021-11-15 14:08 ` [Intel-gfx] " Daniel Vetter 2021-11-15 14:08 ` Daniel Vetter 2021-11-15 20:32 ` Christian König 2021-11-15 20:32 ` Christian König 2021-11-15 20:32 ` [Intel-gfx] " Christian König 2021-11-16 7:56 ` Sascha Hauer 2021-11-16 7:56 ` [Intel-gfx] " Sascha Hauer 2021-11-16 7:56 ` Sascha Hauer 2021-09-17 12:35 ` [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-20 8:45 ` Tvrtko Ursulin 2021-09-20 10:13 ` Christian König 2021-09-20 10:33 ` Tvrtko Ursulin 2021-09-21 9:41 ` Christian König 2021-09-21 13:10 ` Tvrtko Ursulin [this message] 2021-09-17 12:35 ` [PATCH 14/26] drm/i915: use the new iterator in i915_sw_fence_await_reservation v3 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-20 8:45 ` Tvrtko Ursulin 2021-09-20 8:47 ` Tvrtko Ursulin 2021-09-20 10:14 ` Christian König 2021-09-17 12:35 ` [PATCH 15/26] drm/i915: use the new iterator in i915_request_await_object v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 16/26] drm/i915: use new iterator in i915_gem_object_wait_reservation v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-20 10:00 ` Tvrtko Ursulin 2021-09-21 17:35 ` Christian König 2021-09-17 12:35 ` [PATCH 17/26] drm/i915: use new iterator in i915_gem_object_wait_priority v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 18/26] drm/i915: use new iterator in i915_gem_object_last_write_engine v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 19/26] drm/i915: use new cursor in intel_prepare_plane_fb v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 20/26] drm: use new iterator in drm_gem_fence_array_add_implicit v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 14:53 ` Daniel Vetter 2021-09-17 14:53 ` [Intel-gfx] " Daniel Vetter 2021-09-20 7:31 ` Christian König 2021-09-20 7:31 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 21/26] drm: use new iterator in drm_gem_plane_helper_prepare_fb v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 14:55 ` Daniel Vetter 2021-09-17 14:55 ` [Intel-gfx] " Daniel Vetter 2021-09-20 7:35 ` Christian König 2021-09-20 7:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 22/26] drm/nouveau: use the new iterator in nouveau_fence_sync Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 23/26] drm/nouveau: use the new interator in nv50_wndw_prepare_fb v2 Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 24/26] drm/etnaviv: use new iterator in etnaviv_gem_describe Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 25/26] drm/etnaviv: replace dma_resv_get_excl_unlocked Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 12:35 ` [PATCH 26/26] dma-buf: nuke dma_resv_get_excl_unlocked Christian König 2021-09-17 12:35 ` [Intel-gfx] " Christian König 2021-09-17 14:56 ` Daniel Vetter 2021-09-17 14:56 ` [Intel-gfx] " Daniel Vetter 2021-09-17 14:01 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/26] dma-buf: add dma_resv_for_each_fence_unlocked v2 Patchwork 2021-09-17 14:29 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2021-09-17 15:43 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2021-09-22 9:10 Deploying new iterator interface for dma-buf Christian König 2021-09-22 9:10 ` [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Christian König 2021-09-22 10:21 ` Tvrtko Ursulin 2021-09-22 11:46 ` Tvrtko Ursulin 2021-09-22 12:15 ` Christian König 2021-09-22 12:20 ` Tvrtko Ursulin 2021-09-22 12:22 ` Christian König 2021-09-22 14:31 ` Christian König 2021-09-22 14:39 ` Tvrtko Ursulin 2021-09-21 17:36 [PATCH 01/26] dma-buf: add dma_resv_for_each_fence_unlocked v3 Christian König 2021-09-21 17:36 ` [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Christian König 2021-09-16 11:30 Deploying new iterator interface for dma-buf Christian König 2021-09-16 11:30 ` [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Christian König 2021-09-13 13:16 Deploying new iterator interface for dma-buf Christian König 2021-09-13 13:16 ` [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl Christian König 2021-09-14 13:18 ` Tvrtko Ursulin
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=5705c186-1c17-cd5d-c11d-8b5337204c8a@linux.intel.com \ --to=tvrtko.ursulin@linux.intel.com \ --cc=ckoenig.leichtzumerken@gmail.com \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=linaro-mm-sig@lists.linaro.org \ --cc=linux-media@vger.kernel.org \ --subject='Re: [Intel-gfx] [PATCH 13/26] drm/i915: use the new iterator in i915_gem_busy_ioctl' \ /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: link
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.