@@ -1714,6 +1714,8 @@ 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.
@@ -1955,6 +1957,8 @@ struct drm_i915_gem_request {
/** deferred free list for dereferencing from IRQ context */
struct list_head free_list;
+
+ uint32_t uniq;
};
void i915_gem_request_free(struct kref *req_ref);
@@ -797,6 +797,7 @@ static int logical_ring_alloc_request(struct intel_engine_cs *ring,
struct intel_context *ctx)
{
struct drm_i915_gem_request *request;
+ struct drm_i915_private *dev_private = ring->dev->dev_private;
int ret;
if (ring->outstanding_lazy_request)
@@ -808,6 +809,7 @@ static int logical_ring_alloc_request(struct intel_engine_cs *ring,
kref_init(&request->ref);
request->ring = ring;
+ request->uniq = dev_private->request_uniq++;
ret = i915_gem_get_seqno(ring->dev, &request->seqno);
if (ret) {
@@ -2029,6 +2029,7 @@ intel_ring_alloc_request(struct intel_engine_cs *ring)
{
int ret;
struct drm_i915_gem_request *request;
+ struct drm_i915_private *dev_private = ring->dev->dev_private;
if (ring->outstanding_lazy_request)
return 0;
@@ -2039,6 +2040,7 @@ intel_ring_alloc_request(struct intel_engine_cs *ring)
kref_init(&request->ref);
request->ring = ring;
+ request->uniq = dev_private->request_uniq++;
ret = i915_gem_get_seqno(ring->dev, &request->seqno);
if (ret) {