We already assign a unique identifier to every request: seqno. That
someone felt like adding a second one without even mentioning why and
tweaking ABI smells very fishy.

Fixes regression from
commit b3a38998f042b862f5ba4d7f2268f3a8dfb4883a
Author: Nick Hoath <nicholas.ho...@intel.com>
Date:   Thu Feb 19 16:30:47 2015 +0000

    drm/i915: Fix a use after free, and unbalanced refcounting

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Cc: Nick Hoath <nicholas.ho...@intel.com>
Cc: Thomas Daniel <thomas.dan...@intel.com>
Cc: Daniel Vetter <dan...@ffwll.ch>
Cc: Jani Nikula <jani.nik...@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h         |  4 ----
 drivers/gpu/drm/i915/i915_trace.h       | 13 ++++---------
 drivers/gpu/drm/i915/intel_lrc.c        |  1 -
 drivers/gpu/drm/i915/intel_ringbuffer.c |  1 -
 4 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8fcf923aae3b..536344b99596 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1821,8 +1821,6 @@ struct drm_i915_private {
                void (*stop_ring)(struct intel_engine_cs *ring);
        } gt;
 
-       uint32_t request_uniq;
-
        /*
         * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
         * will be rejected. Instead look for a better place.
@@ -2101,8 +2099,6 @@ struct drm_i915_gem_request {
        /** process identifier submitting this request */
        struct pid *pid;
 
-       uint32_t uniq;
-
        /**
         * The ELSP only accepts two elements at a time, so we queue
         * context/tail pairs on a given queue (ring->execlist_queue) until the
diff --git a/drivers/gpu/drm/i915/i915_trace.h 
b/drivers/gpu/drm/i915/i915_trace.h
index ce8ee9e8bced..6e2eee52aaa2 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -499,7 +499,6 @@ DECLARE_EVENT_CLASS(i915_gem_request,
            TP_STRUCT__entry(
                             __field(u32, dev)
                             __field(u32, ring)
-                            __field(u32, uniq)
                             __field(u32, seqno)
                             ),
 
@@ -508,13 +507,11 @@ DECLARE_EVENT_CLASS(i915_gem_request,
                                                i915_gem_request_get_ring(req);
                           __entry->dev = ring->dev->primary->index;
                           __entry->ring = ring->id;
-                          __entry->uniq = req ? req->uniq : 0;
                           __entry->seqno = i915_gem_request_get_seqno(req);
                           ),
 
-           TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u",
-                     __entry->dev, __entry->ring, __entry->uniq,
-                     __entry->seqno)
+           TP_printk("dev=%u, ring=%u, seqno=%u",
+                     __entry->dev, __entry->ring, __entry->seqno)
 );
 
 DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
@@ -559,7 +556,6 @@ TRACE_EVENT(i915_gem_request_wait_begin,
            TP_STRUCT__entry(
                             __field(u32, dev)
                             __field(u32, ring)
-                            __field(u32, uniq)
                             __field(u32, seqno)
                             __field(bool, blocking)
                             ),
@@ -575,14 +571,13 @@ TRACE_EVENT(i915_gem_request_wait_begin,
                                                i915_gem_request_get_ring(req);
                           __entry->dev = ring->dev->primary->index;
                           __entry->ring = ring->id;
-                          __entry->uniq = req ? req->uniq : 0;
                           __entry->seqno = i915_gem_request_get_seqno(req);
                           __entry->blocking =
                                     mutex_is_locked(&ring->dev->struct_mutex);
                           ),
 
-           TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u, blocking=%s",
-                     __entry->dev, __entry->ring, __entry->uniq,
+           TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s",
+                     __entry->dev, __entry->ring,
                      __entry->seqno, __entry->blocking ?  "yes (NB)" : "no")
 );
 
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index cf00b507a853..f8ff3cf154a1 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -759,7 +759,6 @@ static int logical_ring_alloc_request(struct 
intel_engine_cs *ring,
        }
 
        request->ring = ring;
-       request->uniq = dev_private->request_uniq++;
 
        ret = i915_gem_get_seqno(ring->dev, &request->seqno);
        if (ret) {
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 01eacaf4dac1..c3a34eec917a 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -2185,7 +2185,6 @@ intel_ring_alloc_request(struct intel_engine_cs *ring)
 
        request->ring = ring;
        request->ringbuf = ring->buffer;
-       request->uniq = dev_private->request_uniq++;
 
        ret = i915_gem_get_seqno(ring->dev, &request->seqno);
        if (ret) {
-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to