Re: [PATCH 18/26] drm/i915: use new iterator in i915_gem_object_last_write_engine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 22.09.21 um 12:27 schrieb Tvrtko Ursulin:

On 22/09/2021 10:10, Christian König wrote:
This is maybe even a fix since the RCU usage here looks incorrect.

I'm afraid I gazumped you here by removing this function shortly before you posted the respin.

Is that already landed in drm-misc-next? If not just give me an Acked-by and it will be fixed when merging trees together again by just dropping the change.

Alternatively if it is not in drm-next I will ping the drm-misc-next maintainer for a merge.

Regards,
Christian.


Regards,

Tvrtko

Signed-off-by: Christian König <christian.koenig@xxxxxxx>
---
  drivers/gpu/drm/i915/gem/i915_gem_object.h | 16 ++++++++--------
  1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h
index 48112b9d76df..e20efffce3a9 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h
@@ -507,16 +507,16 @@ static inline struct intel_engine_cs *
  i915_gem_object_last_write_engine(struct drm_i915_gem_object *obj)
  {
      struct intel_engine_cs *engine = NULL;
+    struct dma_resv_iter cursor;
      struct dma_fence *fence;
  -    rcu_read_lock();
-    fence = dma_resv_get_excl_unlocked(obj->base.resv);
-    rcu_read_unlock();
-
-    if (fence && dma_fence_is_i915(fence) && !dma_fence_is_signaled(fence))
-        engine = to_request(fence)->engine;
-    dma_fence_put(fence);
-
+    dma_resv_iter_begin(&cursor, obj->base.resv, false);
+    dma_resv_for_each_fence_unlocked(&cursor, fence) {
+        if (fence && dma_fence_is_i915(fence) &&
+            !dma_fence_is_signaled(fence))
+            engine = to_request(fence)->engine;
+    }
+    dma_resv_iter_end(&cursor);
      return engine;
  }





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux