On Fri, Nov 20, 2015 at 12:43:46PM +0000, Chris Wilson wrote: > In order to disambiguate between the pointer to the intel_engine_cs > (called ring) and the intel_ringbuffer (called ringbuf), rename > s/ring/engine/. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Ah, here we go. Slight amend for the commit message: "Where known that req is non-NULL replace get_ring() with req->engine too while at it. And also use dev_priv more while touching code." With that Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 11 ++- > drivers/gpu/drm/i915/i915_drv.h | 12 +-- > drivers/gpu/drm/i915/i915_gem.c | 76 ++++++++-------- > drivers/gpu/drm/i915/i915_gem_context.c | 63 ++++++------- > drivers/gpu/drm/i915/i915_gem_execbuffer.c | 8 +- > drivers/gpu/drm/i915/i915_gem_gtt.c | 49 +++++----- > drivers/gpu/drm/i915/i915_gem_render_state.c | 18 ++-- > drivers/gpu/drm/i915/i915_gpu_error.c | 3 +- > drivers/gpu/drm/i915/i915_trace.h | 34 +++---- > drivers/gpu/drm/i915/intel_display.c | 12 +-- > drivers/gpu/drm/i915/intel_lrc.c | 128 +++++++++++++-------------- > drivers/gpu/drm/i915/intel_mocs.c | 10 +-- > drivers/gpu/drm/i915/intel_ringbuffer.c | 66 +++++++------- > 13 files changed, 239 insertions(+), 251 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 359436162f3d..56375c36b381 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -190,8 +190,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) > seq_printf(m, " (%s mappable)", s); > } > if (obj->last_write_req != NULL) > - seq_printf(m, " (%s)", > - i915_gem_request_get_ring(obj->last_write_req)->name); > + seq_printf(m, " (%s)", obj->last_write_req->engine->name); > if (obj->frontbuffer_bits) > seq_printf(m, " (frontbuffer: 0x%03x)", obj->frontbuffer_bits); > } > @@ -594,14 +593,14 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data) > pipe, plane); > } > if (work->flip_queued_req) { > - struct intel_engine_cs *ring = > - i915_gem_request_get_ring(work->flip_queued_req); > + struct intel_engine_cs *engine = > + work->flip_queued_req->engine; > > seq_printf(m, "Flip queued on %s at seqno %x, next seqno %x [current breadcrumb %x], completed? %d\n", > - ring->name, > + engine->name, > i915_gem_request_get_seqno(work->flip_queued_req), > dev_priv->next_seqno, > - ring->get_seqno(ring, true), > + engine->get_seqno(engine, true), > i915_gem_request_completed(work->flip_queued_req, true)); > } else > seq_printf(m, "Flip not associated with any ring\n"); > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index fadf2ceb1f72..9ce8b3fcb3a0 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2156,7 +2156,7 @@ struct drm_i915_gem_request { > > /** On Which ring this request was generated */ > struct drm_i915_private *i915; > - struct intel_engine_cs *ring; > + struct intel_engine_cs *engine; > > /** GEM sequence number associated with this request. */ > uint32_t seqno; > @@ -2240,9 +2240,9 @@ i915_gem_request_get_seqno(struct drm_i915_gem_request *req) > } > > static inline struct intel_engine_cs * > -i915_gem_request_get_ring(struct drm_i915_gem_request *req) > +i915_gem_request_get_engine(struct drm_i915_gem_request *req) > { > - return req ? req->ring : NULL; > + return req ? req->engine : NULL; > } > > static inline struct drm_i915_gem_request * > @@ -2256,7 +2256,7 @@ i915_gem_request_reference(struct drm_i915_gem_request *req) > static inline void > i915_gem_request_unreference(struct drm_i915_gem_request *req) > { > - WARN_ON(!mutex_is_locked(&req->ring->dev->struct_mutex)); > + WARN_ON(!mutex_is_locked(&req->i915->dev->struct_mutex)); > kref_put(&req->ref, i915_gem_request_free); > } > > @@ -2268,7 +2268,7 @@ i915_gem_request_unreference__unlocked(struct drm_i915_gem_request *req) > if (!req) > return; > > - dev = req->ring->dev; > + dev = req->i915->dev; > if (kref_put_mutex(&req->ref, i915_gem_request_free, &dev->struct_mutex)) > mutex_unlock(&dev->struct_mutex); > } > @@ -2877,7 +2877,7 @@ static inline bool i915_gem_request_completed(struct drm_i915_gem_request *req, > > BUG_ON(req == NULL); > > - seqno = req->ring->get_seqno(req->ring, lazy_coherency); > + seqno = req->engine->get_seqno(req->engine, lazy_coherency); > > return i915_seqno_passed(seqno, req->seqno); > } > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 030fc9d14385..5a1b51a27fe3 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1174,7 +1174,7 @@ static int __i915_spin_request(struct drm_i915_gem_request *req, int state) > u64 timeout; > unsigned cpu; > > - if (i915_gem_request_get_ring(req)->irq_refcount) > + if (req->engine->irq_refcount) > return -EBUSY; > > timeout = local_clock_us(&cpu) + 2; > @@ -1220,10 +1220,10 @@ int __i915_wait_request(struct drm_i915_gem_request *req, > s64 *timeout, > struct intel_rps_client *rps) > { > - struct intel_engine_cs *ring = i915_gem_request_get_ring(req); > + struct intel_engine_cs *engine = req->engine; > struct drm_i915_private *dev_priv = req->i915; > const bool irq_test_in_progress = > - ACCESS_ONCE(dev_priv->gpu_error.test_irq_rings) & intel_ring_flag(ring); > + ACCESS_ONCE(dev_priv->gpu_error.test_irq_rings) & intel_ring_flag(engine); > int state = interruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE; > DEFINE_WAIT(wait); > unsigned long timeout_expire; > @@ -1252,7 +1252,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req, > if (ret == 0) > goto out; > > - if (!irq_test_in_progress && WARN_ON(!ring->irq_get(ring))) { > + if (!irq_test_in_progress && WARN_ON(!engine->irq_get(engine))) { > ret = -ENODEV; > goto out; > } > @@ -1260,7 +1260,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req, > for (;;) { > struct timer_list timer; > > - prepare_to_wait(&ring->irq_queue, &wait, state); > + prepare_to_wait(&engine->irq_queue, &wait, state); > > /* We need to check whether any gpu reset happened in between > * the caller grabbing the seqno and now ... */ > @@ -1289,11 +1289,11 @@ int __i915_wait_request(struct drm_i915_gem_request *req, > } > > timer.function = NULL; > - if (timeout || missed_irq(dev_priv, ring)) { > + if (timeout || missed_irq(dev_priv, engine)) { > unsigned long expire; > > setup_timer_on_stack(&timer, fake_irq, (unsigned long)current); > - expire = missed_irq(dev_priv, ring) ? jiffies + 1 : timeout_expire; > + expire = missed_irq(dev_priv, engine) ? jiffies + 1 : timeout_expire; > mod_timer(&timer, expire); > } > > @@ -1305,9 +1305,9 @@ int __i915_wait_request(struct drm_i915_gem_request *req, > } > } > if (!irq_test_in_progress) > - ring->irq_put(ring); > + engine->irq_put(engine); > > - finish_wait(&ring->irq_queue, &wait); > + finish_wait(&engine->irq_queue, &wait); > > out: > now = ktime_get_raw_ns(); > @@ -1397,7 +1397,7 @@ static void i915_gem_request_retire(struct drm_i915_gem_request *request) > static void > __i915_gem_request_retire__upto(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *engine = req->ring; > + struct intel_engine_cs *engine = req->engine; > struct drm_i915_gem_request *tmp; > > lockdep_assert_held(&engine->dev->struct_mutex); > @@ -1466,7 +1466,7 @@ i915_gem_object_wait_rendering(struct drm_i915_gem_object *obj, > if (ret) > return ret; > > - i = obj->last_write_req->ring->id; > + i = obj->last_write_req->engine->id; > if (obj->last_read_req[i] == obj->last_write_req) > i915_gem_object_retire__read(obj, i); > else > @@ -1493,7 +1493,7 @@ static void > i915_gem_object_retire_request(struct drm_i915_gem_object *obj, > struct drm_i915_gem_request *req) > { > - int ring = req->ring->id; > + int ring = req->engine->id; > > if (obj->last_read_req[ring] == req) > i915_gem_object_retire__read(obj, ring); > @@ -2415,17 +2415,15 @@ void i915_vma_move_to_active(struct i915_vma *vma, > struct drm_i915_gem_request *req) > { > struct drm_i915_gem_object *obj = vma->obj; > - struct intel_engine_cs *ring; > - > - ring = i915_gem_request_get_ring(req); > + struct intel_engine_cs *engine = req->engine;; > > /* Add a reference if we're newly entering the active list. */ > if (obj->active == 0) > drm_gem_object_reference(&obj->base); > - obj->active |= intel_ring_flag(ring); > + obj->active |= intel_ring_flag(engine); > > - list_move_tail(&obj->ring_list[ring->id], &ring->active_list); > - i915_gem_request_assign(&obj->last_read_req[ring->id], req); > + list_move_tail(&obj->ring_list[engine->id], &engine->active_list); > + i915_gem_request_assign(&obj->last_read_req[engine->id], req); > > list_move_tail(&vma->mm_list, &vma->vm->active_list); > } > @@ -2434,7 +2432,7 @@ static void > i915_gem_object_retire__write(struct drm_i915_gem_object *obj) > { > RQ_BUG_ON(obj->last_write_req == NULL); > - RQ_BUG_ON(!(obj->active & intel_ring_flag(obj->last_write_req->ring))); > + RQ_BUG_ON(!(obj->active & intel_ring_flag(obj->last_write_req->engine))); > > i915_gem_request_assign(&obj->last_write_req, NULL); > intel_fb_obj_flush(obj, true, ORIGIN_CS); > @@ -2451,7 +2449,7 @@ i915_gem_object_retire__read(struct drm_i915_gem_object *obj, int ring) > list_del_init(&obj->ring_list[ring]); > i915_gem_request_assign(&obj->last_read_req[ring], NULL); > > - if (obj->last_write_req && obj->last_write_req->ring->id == ring) > + if (obj->last_write_req && obj->last_write_req->engine->id == ring) > i915_gem_object_retire__write(obj); > > obj->active &= ~(1 << ring); > @@ -2553,7 +2551,7 @@ void __i915_add_request(struct drm_i915_gem_request *request, > struct drm_i915_gem_object *obj, > bool flush_caches) > { > - struct intel_engine_cs *ring; > + struct intel_engine_cs *engine; > struct drm_i915_private *dev_priv; > struct intel_ringbuffer *ringbuf; > u32 request_start; > @@ -2562,7 +2560,7 @@ void __i915_add_request(struct drm_i915_gem_request *request, > if (WARN_ON(request == NULL)) > return; > > - ring = request->ring; > + engine = request->engine; > dev_priv = request->i915; > ringbuf = request->ringbuf; > > @@ -2598,9 +2596,9 @@ void __i915_add_request(struct drm_i915_gem_request *request, > request->postfix = intel_ring_get_tail(ringbuf); > > if (i915.enable_execlists) > - ret = ring->emit_request(request); > + ret = engine->emit_request(request); > else { > - ret = ring->add_request(request); > + ret = engine->add_request(request); > > request->tail = intel_ring_get_tail(ringbuf); > } > @@ -2618,12 +2616,12 @@ void __i915_add_request(struct drm_i915_gem_request *request, > request->batch_obj = obj; > > request->emitted_jiffies = jiffies; > - ring->last_submitted_seqno = request->seqno; > - list_add_tail(&request->list, &ring->request_list); > + engine->last_submitted_seqno = request->seqno; > + list_add_tail(&request->list, &engine->request_list); > > trace_i915_gem_request_add(request); > > - i915_queue_hangcheck(ring->dev); > + i915_queue_hangcheck(engine->dev); > > queue_delayed_work(dev_priv->wq, > &dev_priv->mm.retire_work, > @@ -2690,7 +2688,7 @@ void i915_gem_request_free(struct kref *req_ref) > > if (ctx) { > if (i915.enable_execlists) { > - if (ctx != req->ring->default_context) > + if (ctx != req->engine->default_context) > intel_lr_context_unpin(req); > } > > @@ -2700,11 +2698,11 @@ void i915_gem_request_free(struct kref *req_ref) > kmem_cache_free(req->i915->requests, req); > } > > -int i915_gem_request_alloc(struct intel_engine_cs *ring, > +int i915_gem_request_alloc(struct intel_engine_cs *engine, > struct intel_context *ctx, > struct drm_i915_gem_request **req_out) > { > - struct drm_i915_private *dev_priv = to_i915(ring->dev); > + struct drm_i915_private *dev_priv = to_i915(engine->dev); > struct drm_i915_gem_request *req; > int ret; > > @@ -2717,13 +2715,13 @@ int i915_gem_request_alloc(struct intel_engine_cs *ring, > if (req == NULL) > return -ENOMEM; > > - ret = i915_gem_get_seqno(ring->dev, &req->seqno); > + ret = i915_gem_get_seqno(engine->dev, &req->seqno); > if (ret) > goto err; > > kref_init(&req->ref); > req->i915 = dev_priv; > - req->ring = ring; > + req->engine = engine; > req->ctx = ctx; > i915_gem_context_reference(req->ctx); > > @@ -3137,7 +3135,7 @@ __i915_gem_object_sync(struct drm_i915_gem_object *obj, > struct intel_engine_cs *from; > int ret; > > - from = i915_gem_request_get_ring(from_req); > + from = from_req->engine; > if (to == from) > return 0; > > @@ -4308,7 +4306,7 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, > BUILD_BUG_ON(I915_NUM_RINGS > 16); > args->busy = obj->active << 16; > if (obj->last_write_req) > - args->busy |= obj->last_write_req->ring->id; > + args->busy |= obj->last_write_req->engine->id; > > unref: > drm_gem_object_unreference(&obj->base); > @@ -4641,7 +4639,6 @@ err: > > int i915_gem_l3_remap(struct drm_i915_gem_request *req, int slice) > { > - struct intel_ringbuffer *ring = req->ringbuf; > struct drm_i915_private *dev_priv = req->i915; > u32 reg_base = GEN7_L3LOG_BASE + (slice * 0x200); > u32 *remap_info = dev_priv->l3_parity.remap_info[slice]; > @@ -4660,12 +4657,11 @@ int i915_gem_l3_remap(struct drm_i915_gem_request *req, int slice) > * at initialization time. > */ > for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) { > - intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); > - intel_ring_emit(ring, reg_base + i); > - intel_ring_emit(ring, remap_info[i/4]); > + intel_ring_emit(req->ringbuf, MI_LOAD_REGISTER_IMM(1)); > + intel_ring_emit(req->ringbuf, reg_base + i); > + intel_ring_emit(req->ringbuf, remap_info[i/4]); > } > - > - intel_ring_advance(ring); > + intel_ring_advance(req->ringbuf); > > return ret; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index c3adc121aab4..047c2f94bd22 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -410,14 +410,14 @@ void i915_gem_context_fini(struct drm_device *dev) > > int i915_gem_context_enable(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > int ret; > > if (i915.enable_execlists) { > - if (ring->init_context == NULL) > + if (engine->init_context == NULL) > return 0; > > - ret = ring->init_context(req); > + ret = engine->init_context(req); > } else > ret = i915_switch_context(req); > > @@ -494,7 +494,7 @@ mi_set_context(struct drm_i915_gem_request *req, u32 hw_flags) > * itlb_before_ctx_switch. > */ > if (IS_GEN6(req->i915)) { > - ret = req->ring->flush(req, I915_GEM_GPU_DOMAINS, 0); > + ret = req->engine->flush(req, I915_GEM_GPU_DOMAINS, 0); > if (ret) > return ret; > } > @@ -522,7 +522,7 @@ mi_set_context(struct drm_i915_gem_request *req, u32 hw_flags) > > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(num_rings)); > for_each_ring(signaller, req->i915, i) { > - if (signaller == req->ring) > + if (signaller == req->engine) > continue; > > intel_ring_emit(ring, RING_PSMI_CTL(signaller->mmio_base)); > @@ -547,7 +547,7 @@ mi_set_context(struct drm_i915_gem_request *req, u32 hw_flags) > > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(num_rings)); > for_each_ring(signaller, req->i915, i) { > - if (signaller == req->ring) > + if (signaller == req->engine) > continue; > > intel_ring_emit(ring, RING_PSMI_CTL(signaller->mmio_base)); > @@ -618,19 +618,19 @@ needs_pd_load_post(struct intel_engine_cs *ring, struct intel_context *to, > static int do_switch(struct drm_i915_gem_request *req) > { > struct intel_context *to = req->ctx; > - struct intel_engine_cs *ring = req->ring; > - struct intel_context *from = ring->last_context; > + struct intel_engine_cs *engine = req->engine; > + struct intel_context *from = engine->last_context; > u32 hw_flags = 0; > bool uninitialized = false; > int ret, i; > > - if (should_skip_switch(ring, from, to)) > + if (should_skip_switch(engine, from, to)) > return 0; > > /* Trying to pin first makes error handling easier. */ > - if (ring->id == RCS) { > + if (engine->id == RCS) { > ret = i915_gem_obj_ggtt_pin(to->legacy_hw_ctx.rcs_state, > - get_context_alignment(ring->dev), 0); > + get_context_alignment(engine->dev), 0); > if (ret) > return ret; > } > @@ -640,23 +640,23 @@ static int do_switch(struct drm_i915_gem_request *req) > * evict_everything - as a last ditch gtt defrag effort that also > * switches to the default context. Hence we need to reload from here. > */ > - from = ring->last_context; > + from = engine->last_context; > > - if (needs_pd_load_pre(ring, to)) { > + if (needs_pd_load_pre(engine, to)) { > /* Older GENs and non render rings still want the load first, > * "PP_DCLV followed by PP_DIR_BASE register through Load > * Register Immediate commands in Ring Buffer before submitting > * a context."*/ > - trace_switch_mm(ring, to); > + trace_switch_mm(engine, to); > ret = to->ppgtt->switch_mm(to->ppgtt, req); > if (ret) > goto unpin_out; > > /* Doing a PD load always reloads the page dirs */ > - to->ppgtt->pd_dirty_rings &= ~intel_ring_flag(ring); > + to->ppgtt->pd_dirty_rings &= ~intel_ring_flag(engine); > } > > - if (ring->id != RCS) { > + if (engine->id != RCS) { > if (from) > i915_gem_context_unreference(from); > goto done; > @@ -681,14 +681,14 @@ static int do_switch(struct drm_i915_gem_request *req) > * space. This means we must enforce that a page table load > * occur when this occurs. */ > } else if (to->ppgtt && > - (intel_ring_flag(ring) & to->ppgtt->pd_dirty_rings)) { > + (intel_ring_flag(engine) & to->ppgtt->pd_dirty_rings)) { > hw_flags |= MI_FORCE_RESTORE; > - to->ppgtt->pd_dirty_rings &= ~intel_ring_flag(ring); > + to->ppgtt->pd_dirty_rings &= ~intel_ring_flag(engine); > } > > /* We should never emit switch_mm more than once */ > - WARN_ON(needs_pd_load_pre(ring, to) && > - needs_pd_load_post(ring, to, hw_flags)); > + WARN_ON(needs_pd_load_pre(engine, to) && > + needs_pd_load_post(engine, to, hw_flags)); > > ret = mi_set_context(req, hw_flags); > if (ret) > @@ -697,8 +697,8 @@ static int do_switch(struct drm_i915_gem_request *req) > /* GEN8 does *not* require an explicit reload if the PDPs have been > * setup, and we do not wish to move them. > */ > - if (needs_pd_load_post(ring, to, hw_flags)) { > - trace_switch_mm(ring, to); > + if (needs_pd_load_post(engine, to, hw_flags)) { > + trace_switch_mm(engine, to); > ret = to->ppgtt->switch_mm(to->ppgtt, req); > /* The hardware context switch is emitted, but we haven't > * actually changed the state - so it's probably safe to bail > @@ -751,11 +751,11 @@ static int do_switch(struct drm_i915_gem_request *req) > > done: > i915_gem_context_reference(to); > - ring->last_context = to; > + engine->last_context = to; > > if (uninitialized) { > - if (ring->init_context) { > - ret = ring->init_context(req); > + if (engine->init_context) { > + ret = engine->init_context(req); > if (ret) > DRM_ERROR("ring init context: %d\n", ret); > } > @@ -764,7 +764,7 @@ done: > return 0; > > unpin_out: > - if (ring->id == RCS) > + if (engine->id == RCS) > i915_gem_object_ggtt_unpin(to->legacy_hw_ctx.rcs_state); > return ret; > } > @@ -784,17 +784,18 @@ unpin_out: > */ > int i915_switch_context(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > > WARN_ON(i915.enable_execlists); > WARN_ON(!mutex_is_locked(&req->i915->dev->struct_mutex)); > > if (req->ctx->legacy_hw_ctx.rcs_state == NULL) { /* We have the fake context */ > - if (req->ctx != ring->last_context) { > + struct intel_engine_cs *engine = req->engine; > + > + if (req->ctx != engine->last_context) { > i915_gem_context_reference(req->ctx); > - if (ring->last_context) > - i915_gem_context_unreference(ring->last_context); > - ring->last_context = req->ctx; > + if (engine->last_context) > + i915_gem_context_unreference(engine->last_context); > + engine->last_context = req->ctx; > } > return 0; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c > index 5f1b9b7df051..32c2d08bdd4c 100644 > --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c > +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c > @@ -922,7 +922,7 @@ static int > i915_gem_execbuffer_move_to_gpu(struct drm_i915_gem_request *req, > struct list_head *vmas) > { > - const unsigned other_rings = ~intel_ring_flag(req->ring); > + const unsigned other_rings = ~intel_ring_flag(req->engine); > struct i915_vma *vma; > uint32_t flush_domains = 0; > bool flush_chipset = false; > @@ -932,7 +932,7 @@ i915_gem_execbuffer_move_to_gpu(struct drm_i915_gem_request *req, > struct drm_i915_gem_object *obj = vma->obj; > > if (obj->active & other_rings) { > - ret = i915_gem_object_sync(obj, req->ring, &req); > + ret = i915_gem_object_sync(obj, req->engine, &req); > if (ret) > return ret; > } > @@ -944,7 +944,7 @@ i915_gem_execbuffer_move_to_gpu(struct drm_i915_gem_request *req, > } > > if (flush_chipset) > - i915_gem_chipset_flush(req->ring->dev); > + i915_gem_chipset_flush(req->engine->dev); > > if (flush_domains & I915_GEM_DOMAIN_GTT) > wmb(); > @@ -1118,7 +1118,7 @@ i915_reset_gen7_sol_offsets(struct drm_i915_gem_request *req) > struct intel_ringbuffer *ring = req->ringbuf; > int ret, i; > > - if (!IS_GEN7(req->i915) || req->ring->id != RCS) { > + if (!IS_GEN7(req->i915) || req->engine->id != RCS) { > DRM_DEBUG("sol reset is gen7/rcs only\n"); > return -EINVAL; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 4608884adfc8..c222456961fb 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -661,10 +661,10 @@ static int gen8_write_pdp(struct drm_i915_gem_request *req, > return ret; > > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); > - intel_ring_emit(ring, GEN8_RING_PDP_UDW(req->ring, entry)); > + intel_ring_emit(ring, GEN8_RING_PDP_UDW(req->engine, entry)); > intel_ring_emit(ring, upper_32_bits(addr)); > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); > - intel_ring_emit(ring, GEN8_RING_PDP_LDW(req->ring, entry)); > + intel_ring_emit(ring, GEN8_RING_PDP_LDW(req->engine, entry)); > intel_ring_emit(ring, lower_32_bits(addr)); > intel_ring_advance(ring); > > @@ -1592,7 +1592,9 @@ static int hsw_mm_switch(struct i915_hw_ppgtt *ppgtt, > int ret; > > /* NB: TLBs must be flushed and invalidated before a switch */ > - ret = req->ring->flush(req, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); > + ret = req->engine->flush(req, > + I915_GEM_GPU_DOMAINS, > + I915_GEM_GPU_DOMAINS); > if (ret) > return ret; > > @@ -1601,9 +1603,9 @@ static int hsw_mm_switch(struct i915_hw_ppgtt *ppgtt, > return ret; > > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(2)); > - intel_ring_emit(ring, RING_PP_DIR_DCLV(req->ring)); > + intel_ring_emit(ring, RING_PP_DIR_DCLV(req->engine)); > intel_ring_emit(ring, PP_DIR_DCLV_2G); > - intel_ring_emit(ring, RING_PP_DIR_BASE(req->ring)); > + intel_ring_emit(ring, RING_PP_DIR_BASE(req->engine)); > intel_ring_emit(ring, get_pd_offset(ppgtt)); > intel_ring_emit(ring, MI_NOOP); > intel_ring_advance(ring); > @@ -1614,11 +1616,10 @@ static int hsw_mm_switch(struct i915_hw_ppgtt *ppgtt, > static int vgpu_mm_switch(struct i915_hw_ppgtt *ppgtt, > struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > - struct drm_i915_private *dev_priv = to_i915(ppgtt->base.dev); > + struct drm_i915_private *dev_priv = req->i915; > > - I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G); > - I915_WRITE(RING_PP_DIR_BASE(ring), get_pd_offset(ppgtt)); > + I915_WRITE(RING_PP_DIR_DCLV(req->engine), PP_DIR_DCLV_2G); > + I915_WRITE(RING_PP_DIR_BASE(req->engine), get_pd_offset(ppgtt)); > return 0; > } > > @@ -1629,7 +1630,9 @@ static int gen7_mm_switch(struct i915_hw_ppgtt *ppgtt, > int ret; > > /* NB: TLBs must be flushed and invalidated before a switch */ > - ret = req->ring->flush(req, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); > + ret = req->engine->flush(req, > + I915_GEM_GPU_DOMAINS, > + I915_GEM_GPU_DOMAINS); > if (ret) > return ret; > > @@ -1638,16 +1641,18 @@ static int gen7_mm_switch(struct i915_hw_ppgtt *ppgtt, > return ret; > > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(2)); > - intel_ring_emit(ring, RING_PP_DIR_DCLV(req->ring)); > + intel_ring_emit(ring, RING_PP_DIR_DCLV(req->engine)); > intel_ring_emit(ring, PP_DIR_DCLV_2G); > - intel_ring_emit(ring, RING_PP_DIR_BASE(req->ring)); > + intel_ring_emit(ring, RING_PP_DIR_BASE(req->engine)); > intel_ring_emit(ring, get_pd_offset(ppgtt)); > intel_ring_emit(ring, MI_NOOP); > intel_ring_advance(ring); > > /* XXX: RCS is the only one to auto invalidate the TLBs? */ > - if (req->ring->id != RCS) { > - ret = req->ring->flush(req, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); > + if (req->engine->id != RCS) { > + ret = req->engine->flush(req, > + I915_GEM_GPU_DOMAINS, > + I915_GEM_GPU_DOMAINS); > if (ret) > return ret; > } > @@ -1658,15 +1663,12 @@ static int gen7_mm_switch(struct i915_hw_ppgtt *ppgtt, > static int gen6_mm_switch(struct i915_hw_ppgtt *ppgtt, > struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > - struct drm_device *dev = ppgtt->base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - > + struct drm_i915_private *dev_priv = req->i915; > > - I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G); > - I915_WRITE(RING_PP_DIR_BASE(ring), get_pd_offset(ppgtt)); > + I915_WRITE(RING_PP_DIR_DCLV(req->engine), PP_DIR_DCLV_2G); > + I915_WRITE(RING_PP_DIR_BASE(req->engine), get_pd_offset(ppgtt)); > > - POSTING_READ(RING_PP_DIR_DCLV(ring)); > + POSTING_READ(RING_PP_DIR_DCLV(req->engine)); > > return 0; > } > @@ -2101,8 +2103,7 @@ int i915_ppgtt_init_hw(struct drm_device *dev) > > int i915_ppgtt_init_ring(struct drm_i915_gem_request *req) > { > - struct drm_i915_private *dev_priv = req->ring->dev->dev_private; > - struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; > + struct i915_hw_ppgtt *ppgtt = req->i915->mm.aliasing_ppgtt; > int ret; > > if (i915.enable_execlists) > @@ -2115,7 +2116,7 @@ int i915_ppgtt_init_ring(struct drm_i915_gem_request *req) > if (ret) > return ret; > > - ppgtt->pd_dirty_rings &= ~intel_ring_flag(req->ring); > + ppgtt->pd_dirty_rings &= ~intel_ring_flag(req->engine); > return 0; > } > > diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c > index 5026a6267a88..f11e8685b1af 100644 > --- a/drivers/gpu/drm/i915/i915_gem_render_state.c > +++ b/drivers/gpu/drm/i915/i915_gem_render_state.c > @@ -198,25 +198,25 @@ int i915_gem_render_state_init(struct drm_i915_gem_request *req) > struct render_state so; > int ret; > > - ret = i915_gem_render_state_prepare(req->ring, &so); > + ret = i915_gem_render_state_prepare(req->engine, &so); > if (ret) > return ret; > > if (so.rodata == NULL) > return 0; > > - ret = req->ring->dispatch_execbuffer(req, so.ggtt_offset, > - so.rodata->batch_items * 4, > - I915_DISPATCH_SECURE); > + ret = req->engine->dispatch_execbuffer(req, so.ggtt_offset, > + so.rodata->batch_items * 4, > + I915_DISPATCH_SECURE); > if (ret) > goto out; > > if (so.aux_batch_size > 8) { > - ret = req->ring->dispatch_execbuffer(req, > - (so.ggtt_offset + > - so.aux_batch_offset), > - so.aux_batch_size, > - I915_DISPATCH_SECURE); > + ret = req->engine->dispatch_execbuffer(req, > + (so.ggtt_offset + > + so.aux_batch_offset), > + so.aux_batch_size, > + I915_DISPATCH_SECURE); > if (ret) > goto out; > } > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c > index d8e035e126d7..974e3481e449 100644 > --- a/drivers/gpu/drm/i915/i915_gpu_error.c > +++ b/drivers/gpu/drm/i915/i915_gpu_error.c > @@ -709,8 +709,7 @@ static void capture_bo(struct drm_i915_error_buffer *err, > err->dirty = obj->dirty; > err->purgeable = obj->madv != I915_MADV_WILLNEED; > err->userptr = obj->userptr.mm != NULL; > - err->ring = obj->last_write_req ? > - i915_gem_request_get_ring(obj->last_write_req)->id : -1; > + err->ring = obj->last_write_req ? obj->last_write_req->engine->id : -1; > err->cache_level = obj->cache_level; > } > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h > index ad64d6ba13a2..533b6a87fd1d 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -498,7 +498,7 @@ TRACE_EVENT(i915_gem_ring_sync_to, > TP_fast_assign( > __entry->dev = from->dev->primary->index; > __entry->sync_from = from->id; > - __entry->sync_to = to_req->ring->id; > + __entry->sync_to = to_req->engine->id; > __entry->seqno = i915_gem_request_get_seqno(req); > ), > > @@ -520,13 +520,11 @@ TRACE_EVENT(i915_gem_ring_dispatch, > ), > > TP_fast_assign( > - struct intel_engine_cs *ring = > - i915_gem_request_get_ring(req); > - __entry->dev = ring->dev->primary->index; > - __entry->ring = ring->id; > - __entry->seqno = i915_gem_request_get_seqno(req); > + __entry->dev = req->i915->dev->primary->index; > + __entry->ring = req->engine->id; > + __entry->seqno = req->seqno; > __entry->flags = flags; > - i915_trace_irq_get(ring, req); > + i915_trace_irq_get(req->engine, req); > ), > > TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x", > @@ -545,8 +543,8 @@ TRACE_EVENT(i915_gem_ring_flush, > ), > > TP_fast_assign( > - __entry->dev = req->ring->dev->primary->index; > - __entry->ring = req->ring->id; > + __entry->dev = req->engine->dev->primary->index; > + __entry->ring = req->engine->id; > __entry->invalidate = invalidate; > __entry->flush = flush; > ), > @@ -567,11 +565,9 @@ DECLARE_EVENT_CLASS(i915_gem_request, > ), > > TP_fast_assign( > - struct intel_engine_cs *ring = > - i915_gem_request_get_ring(req); > - __entry->dev = ring->dev->primary->index; > - __entry->ring = ring->id; > - __entry->seqno = i915_gem_request_get_seqno(req); > + __entry->dev = req->i915->dev->primary->index; > + __entry->ring = req->engine->id; > + __entry->seqno = req->seqno; > ), > > TP_printk("dev=%u, ring=%u, seqno=%u", > @@ -631,13 +627,11 @@ TRACE_EVENT(i915_gem_request_wait_begin, > * less desirable. > */ > TP_fast_assign( > - struct intel_engine_cs *ring = > - i915_gem_request_get_ring(req); > - __entry->dev = ring->dev->primary->index; > - __entry->ring = ring->id; > - __entry->seqno = i915_gem_request_get_seqno(req); > + __entry->dev = req->i915->dev->primary->index; > + __entry->ring = req->engine->id; > + __entry->seqno = req->seqno; > __entry->blocking = > - mutex_is_locked(&ring->dev->struct_mutex); > + mutex_is_locked(&req->i915->dev->struct_mutex); > ), > > TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index f6dae2cfd9c9..2447f1a36fb0 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -10987,7 +10987,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, > } > > len = 4; > - if (req->ring->id == RCS) { > + if (req->engine->id == RCS) { > len += 6; > /* > * On Gen 8, SRM is now taking an extra dword to accommodate > @@ -11025,7 +11025,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, > * for the RCS also doesn't appear to drop events. Setting the DERRMR > * to zero does lead to lockups within MI_DISPLAY_FLIP. > */ > - if (req->ring->id == RCS) { > + if (req->engine->id == RCS) { > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); > intel_ring_emit(ring, DERRMR); > intel_ring_emit(ring, ~(DERRMR_PIPEA_PRI_FLIP_DONE | > @@ -11038,7 +11038,7 @@ static int intel_gen7_queue_flip(struct drm_device *dev, > intel_ring_emit(ring, MI_STORE_REGISTER_MEM(1) | > MI_SRM_LRM_GLOBAL_GTT); > intel_ring_emit(ring, DERRMR); > - intel_ring_emit(ring, req->ring->scratch.gtt_offset + 256); > + intel_ring_emit(ring, req->engine->scratch.gtt_offset + 256); > if (IS_GEN8(req->i915)) { > intel_ring_emit(ring, 0); > intel_ring_emit(ring, MI_NOOP); > @@ -11078,7 +11078,7 @@ static bool use_mmio_flip(struct intel_engine_cs *ring, > else if (i915.enable_execlists) > return true; > else > - return ring != i915_gem_request_get_ring(obj->last_write_req); > + return ring != i915_gem_request_get_engine(obj->last_write_req); > } > > static void skl_do_mmio_flip(struct intel_crtc *intel_crtc) > @@ -11395,7 +11395,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, > } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { > ring = &dev_priv->ring[BCS]; > } else if (INTEL_INFO(dev)->gen >= 7) { > - ring = i915_gem_request_get_ring(obj->last_write_req); > + ring = i915_gem_request_get_engine(obj->last_write_req); > if (ring == NULL || ring->id != RCS) > ring = &dev_priv->ring[BCS]; > } else { > @@ -11411,7 +11411,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, > */ > ret = intel_pin_and_fence_fb_obj(crtc->primary, fb, > crtc->primary->state, > - mmio_flip ? i915_gem_request_get_ring(obj->last_write_req) : ring, &request); > + mmio_flip ? i915_gem_request_get_engine(obj->last_write_req) : ring, &request); > if (ret) > goto cleanup_pending; > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c > index 2458804c521d..1502e53d2ad6 100644 > --- a/drivers/gpu/drm/i915/intel_lrc.c > +++ b/drivers/gpu/drm/i915/intel_lrc.c > @@ -272,17 +272,16 @@ u32 intel_execlists_ctx_id(struct drm_i915_gem_object *ctx_obj) > > static uint64_t execlists_ctx_descriptor(struct drm_i915_gem_request *rq) > { > - struct intel_engine_cs *ring = rq->ring; > - struct drm_device *dev = ring->dev; > - struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[ring->id].state; > - uint64_t desc; > + int ring = rq->engine->id; > + struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[ring].state; > uint64_t lrca = i915_gem_obj_ggtt_offset(ctx_obj); > + uint64_t desc; > > WARN_ON(lrca & 0xFFFFFFFF00000FFFULL); > > desc = GEN8_CTX_VALID; > - desc |= GEN8_CTX_ADDRESSING_MODE(dev) << GEN8_CTX_ADDRESSING_MODE_SHIFT; > - if (IS_GEN8(ctx_obj->base.dev)) > + desc |= GEN8_CTX_ADDRESSING_MODE(rq->i915) << GEN8_CTX_ADDRESSING_MODE_SHIFT; > + if (IS_GEN8(rq->i915)) > desc |= GEN8_CTX_L3LLC_COHERENT; > desc |= GEN8_CTX_PRIVILEGE; > desc |= lrca; > @@ -293,10 +292,10 @@ static uint64_t execlists_ctx_descriptor(struct drm_i915_gem_request *rq) > /* desc |= GEN8_CTX_FORCE_RESTORE; */ > > /* WaEnableForceRestoreInCtxtDescForVCS:skl */ > - if (IS_GEN9(dev) && > - INTEL_REVID(dev) <= SKL_REVID_B0 && > - (ring->id == BCS || ring->id == VCS || > - ring->id == VECS || ring->id == VCS2)) > + if (IS_GEN9(rq->i915) && > + INTEL_REVID(rq->i915) <= SKL_REVID_B0 && > + (ring == BCS || ring == VCS || > + ring == VECS || ring == VCS2)) > desc |= GEN8_CTX_FORCE_RESTORE; > > return desc; > @@ -306,7 +305,7 @@ static void execlists_elsp_write(struct drm_i915_gem_request *rq0, > struct drm_i915_gem_request *rq1) > { > > - struct intel_engine_cs *ring = rq0->ring; > + struct intel_engine_cs *engine = rq0->engine; > struct drm_i915_private *dev_priv = rq0->i915; > uint64_t desc[2]; > > @@ -323,24 +322,23 @@ static void execlists_elsp_write(struct drm_i915_gem_request *rq0, > /* You must always write both descriptors in the order below. */ > spin_lock(&dev_priv->uncore.lock); > intel_uncore_forcewake_get__locked(dev_priv, FORCEWAKE_ALL); > - I915_WRITE_FW(RING_ELSP(ring), upper_32_bits(desc[1])); > - I915_WRITE_FW(RING_ELSP(ring), lower_32_bits(desc[1])); > + I915_WRITE_FW(RING_ELSP(engine), upper_32_bits(desc[1])); > + I915_WRITE_FW(RING_ELSP(engine), lower_32_bits(desc[1])); > > - I915_WRITE_FW(RING_ELSP(ring), upper_32_bits(desc[0])); > + I915_WRITE_FW(RING_ELSP(engine), upper_32_bits(desc[0])); > /* The context is automatically loaded after the following */ > - I915_WRITE_FW(RING_ELSP(ring), lower_32_bits(desc[0])); > + I915_WRITE_FW(RING_ELSP(engine), lower_32_bits(desc[0])); > > /* ELSP is a wo register, use another nearby reg for posting */ > - POSTING_READ_FW(RING_EXECLIST_STATUS(ring)); > + POSTING_READ_FW(RING_EXECLIST_STATUS(engine)); > intel_uncore_forcewake_put__locked(dev_priv, FORCEWAKE_ALL); > spin_unlock(&dev_priv->uncore.lock); > } > > static int execlists_update_context(struct drm_i915_gem_request *rq) > { > - struct intel_engine_cs *ring = rq->ring; > struct i915_hw_ppgtt *ppgtt = rq->ctx->ppgtt; > - struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[ring->id].state; > + struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[rq->engine->id].state; > struct drm_i915_gem_object *rb_obj = rq->ringbuf->obj; > struct page *page; > uint32_t *reg_state; > @@ -355,7 +353,7 @@ static int execlists_update_context(struct drm_i915_gem_request *rq) > reg_state[CTX_RING_TAIL+1] = rq->tail; > reg_state[CTX_RING_BUFFER_START+1] = i915_gem_obj_ggtt_offset(rb_obj); > > - if (ppgtt && !USES_FULL_48BIT_PPGTT(ppgtt->base.dev)) { > + if (ppgtt && !USES_FULL_48BIT_PPGTT(rq->i915)) { > /* True 32b PPGTT with dynamic page allocation: update PDP > * registers and point the unallocated PDPs to scratch page. > * PML4 is allocated during ppgtt init, so this is not needed > @@ -538,27 +536,27 @@ void intel_lrc_irq_handler(struct intel_engine_cs *ring) > > static int execlists_context_queue(struct drm_i915_gem_request *request) > { > - struct intel_engine_cs *ring = request->ring; > + struct intel_engine_cs *engine = request->engine; > struct drm_i915_gem_request *cursor; > int num_elements = 0; > > - if (request->ctx != ring->default_context) > + if (request->ctx != engine->default_context) > intel_lr_context_pin(request); > > i915_gem_request_reference(request); > > request->tail = request->ringbuf->tail; > > - spin_lock_irq(&ring->execlist_lock); > + spin_lock_irq(&engine->execlist_lock); > > - list_for_each_entry(cursor, &ring->execlist_queue, execlist_link) > + list_for_each_entry(cursor, &engine->execlist_queue, execlist_link) > if (++num_elements > 2) > break; > > if (num_elements > 2) { > struct drm_i915_gem_request *tail_req; > > - tail_req = list_last_entry(&ring->execlist_queue, > + tail_req = list_last_entry(&engine->execlist_queue, > struct drm_i915_gem_request, > execlist_link); > > @@ -567,41 +565,41 @@ static int execlists_context_queue(struct drm_i915_gem_request *request) > "More than 2 already-submitted reqs queued\n"); > list_del(&tail_req->execlist_link); > list_add_tail(&tail_req->execlist_link, > - &ring->execlist_retired_req_list); > + &engine->execlist_retired_req_list); > } > } > > - list_add_tail(&request->execlist_link, &ring->execlist_queue); > + list_add_tail(&request->execlist_link, &engine->execlist_queue); > if (num_elements == 0) > - execlists_context_unqueue(ring); > + execlists_context_unqueue(engine); > > - spin_unlock_irq(&ring->execlist_lock); > + spin_unlock_irq(&engine->execlist_lock); > > return 0; > } > > static int logical_ring_invalidate_all_caches(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > uint32_t flush_domains; > int ret; > > flush_domains = 0; > - if (ring->gpu_caches_dirty) > + if (engine->gpu_caches_dirty) > flush_domains = I915_GEM_GPU_DOMAINS; > > - ret = ring->emit_flush(req, I915_GEM_GPU_DOMAINS, flush_domains); > + ret = engine->emit_flush(req, I915_GEM_GPU_DOMAINS, flush_domains); > if (ret) > return ret; > > - ring->gpu_caches_dirty = false; > + engine->gpu_caches_dirty = false; > return 0; > } > > static int execlists_move_to_gpu(struct drm_i915_gem_request *req, > struct list_head *vmas) > { > - const unsigned other_rings = ~intel_ring_flag(req->ring); > + const unsigned other_rings = ~intel_ring_flag(req->engine); > struct i915_vma *vma; > uint32_t flush_domains = 0; > bool flush_chipset = false; > @@ -611,7 +609,7 @@ static int execlists_move_to_gpu(struct drm_i915_gem_request *req, > struct drm_i915_gem_object *obj = vma->obj; > > if (obj->active & other_rings) { > - ret = i915_gem_object_sync(obj, req->ring, &req); > + ret = i915_gem_object_sync(obj, req->engine, &req); > if (ret) > return ret; > } > @@ -635,9 +633,9 @@ int intel_logical_ring_alloc_request_extras(struct drm_i915_gem_request *request > { > int ret; > > - request->ringbuf = request->ctx->engine[request->ring->id].ringbuf; > + request->ringbuf = request->ctx->engine[request->engine->id].ringbuf; > > - if (request->ctx != request->ring->default_context) { > + if (request->ctx != request->engine->default_context) { > ret = intel_lr_context_pin(request); > if (ret) > return ret; > @@ -660,7 +658,7 @@ intel_logical_ring_advance_and_submit(struct drm_i915_gem_request *request) > { > intel_ring_advance(request->ringbuf); > > - if (intel_ring_stopped(request->ring)) > + if (intel_ring_stopped(request->engine)) > return; > > execlists_context_queue(request); > @@ -811,35 +809,35 @@ void intel_logical_ring_stop(struct intel_engine_cs *ring) > > int logical_ring_flush_all_caches(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > int ret; > > - if (!ring->gpu_caches_dirty) > + if (!engine->gpu_caches_dirty) > return 0; > > - ret = ring->emit_flush(req, 0, I915_GEM_GPU_DOMAINS); > + ret = engine->emit_flush(req, 0, I915_GEM_GPU_DOMAINS); > if (ret) > return ret; > > - ring->gpu_caches_dirty = false; > + engine->gpu_caches_dirty = false; > return 0; > } > > static int intel_lr_context_pin(struct drm_i915_gem_request *rq) > { > - struct intel_engine_cs *ring = rq->ring; > - struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[ring->id].state; > + int engine = rq->engine->id; > + struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[engine].state; > struct intel_ringbuffer *ringbuf = rq->ringbuf; > int ret = 0; > > - WARN_ON(!mutex_is_locked(&ring->dev->struct_mutex)); > - if (rq->ctx->engine[ring->id].pin_count++ == 0) { > + WARN_ON(!mutex_is_locked(&rq->i915->dev->struct_mutex)); > + if (rq->ctx->engine[engine].pin_count++ == 0) { > ret = i915_gem_obj_ggtt_pin(ctx_obj, > GEN8_LR_CONTEXT_ALIGN, 0); > if (ret) > goto reset_pin_count; > > - ret = intel_pin_and_map_ringbuffer_obj(ring->dev, ringbuf); > + ret = intel_pin_and_map_ringbuffer_obj(rq->i915->dev, ringbuf); > if (ret) > goto unpin_ctx_obj; > > @@ -851,20 +849,20 @@ static int intel_lr_context_pin(struct drm_i915_gem_request *rq) > unpin_ctx_obj: > i915_gem_object_ggtt_unpin(ctx_obj); > reset_pin_count: > - rq->ctx->engine[ring->id].pin_count = 0; > + rq->ctx->engine[engine].pin_count = 0; > > return ret; > } > > void intel_lr_context_unpin(struct drm_i915_gem_request *rq) > { > - struct intel_engine_cs *ring = rq->ring; > - struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[ring->id].state; > + int engine = rq->engine->id; > + struct drm_i915_gem_object *ctx_obj = rq->ctx->engine[engine].state; > struct intel_ringbuffer *ringbuf = rq->ringbuf; > > if (ctx_obj) { > - WARN_ON(!mutex_is_locked(&ring->dev->struct_mutex)); > - if (--rq->ctx->engine[ring->id].pin_count == 0) { > + WARN_ON(!mutex_is_locked(&rq->i915->dev->struct_mutex)); > + if (--rq->ctx->engine[engine].pin_count == 0) { > intel_unpin_ringbuffer_obj(ringbuf); > i915_gem_object_ggtt_unpin(ctx_obj); > } > @@ -874,7 +872,7 @@ void intel_lr_context_unpin(struct drm_i915_gem_request *rq) > static int intel_logical_ring_workarounds_emit(struct drm_i915_gem_request *req) > { > int ret, i; > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > struct intel_ringbuffer *ringbuf = req->ringbuf; > struct drm_i915_private *dev_priv = req->i915; > struct i915_workarounds *w = &dev_priv->workarounds; > @@ -882,7 +880,7 @@ static int intel_logical_ring_workarounds_emit(struct drm_i915_gem_request *req) > if (WARN_ON_ONCE(w->count == 0)) > return 0; > > - ring->gpu_caches_dirty = true; > + engine->gpu_caches_dirty = true; > ret = logical_ring_flush_all_caches(req); > if (ret) > return ret; > @@ -900,7 +898,7 @@ static int intel_logical_ring_workarounds_emit(struct drm_i915_gem_request *req) > > intel_ring_advance(ringbuf); > > - ring->gpu_caches_dirty = true; > + engine->gpu_caches_dirty = true; > ret = logical_ring_flush_all_caches(req); > if (ret) > return ret; > @@ -1319,7 +1317,7 @@ static int gen9_init_render_ring(struct intel_engine_cs *ring) > static int intel_logical_ring_emit_pdps(struct drm_i915_gem_request *req) > { > struct i915_hw_ppgtt *ppgtt = req->ctx->ppgtt; > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > struct intel_ringbuffer *ringbuf = req->ringbuf; > const int num_lri_cmds = GEN8_LEGACY_PDPES * 2; > int i, ret; > @@ -1332,9 +1330,9 @@ static int intel_logical_ring_emit_pdps(struct drm_i915_gem_request *req) > for (i = GEN8_LEGACY_PDPES - 1; i >= 0; i--) { > const dma_addr_t pd_daddr = i915_page_dir_dma_addr(ppgtt, i); > > - intel_ring_emit(ringbuf, GEN8_RING_PDP_UDW(ring, i)); > + intel_ring_emit(ringbuf, GEN8_RING_PDP_UDW(engine, i)); > intel_ring_emit(ringbuf, upper_32_bits(pd_daddr)); > - intel_ring_emit(ringbuf, GEN8_RING_PDP_LDW(ring, i)); > + intel_ring_emit(ringbuf, GEN8_RING_PDP_LDW(engine, i)); > intel_ring_emit(ringbuf, lower_32_bits(pd_daddr)); > } > > @@ -1358,14 +1356,14 @@ static int gen8_emit_bb_start(struct drm_i915_gem_request *req, > * not idle). PML4 is allocated during ppgtt init so this is > * not needed in 48-bit.*/ > if (req->ctx->ppgtt && > - (intel_ring_flag(req->ring) & req->ctx->ppgtt->pd_dirty_rings)) { > + (intel_ring_flag(req->engine) & req->ctx->ppgtt->pd_dirty_rings)) { > if (!USES_FULL_48BIT_PPGTT(req->i915)) { > ret = intel_logical_ring_emit_pdps(req); > if (ret) > return ret; > } > > - req->ctx->ppgtt->pd_dirty_rings &= ~intel_ring_flag(req->ring); > + req->ctx->ppgtt->pd_dirty_rings &= ~intel_ring_flag(req->engine); > } > > ret = intel_ring_begin(req, 4); > @@ -1575,21 +1573,21 @@ static int intel_lr_context_render_state_init(struct drm_i915_gem_request *req) > struct render_state so; > int ret; > > - ret = i915_gem_render_state_prepare(req->ring, &so); > + ret = i915_gem_render_state_prepare(req->engine, &so); > if (ret) > return ret; > > if (so.rodata == NULL) > return 0; > > - ret = req->ring->emit_bb_start(req, so.ggtt_offset, > - I915_DISPATCH_SECURE); > + ret = req->engine->emit_bb_start(req, so.ggtt_offset, > + I915_DISPATCH_SECURE); > if (ret) > goto out; > > - ret = req->ring->emit_bb_start(req, > - (so.ggtt_offset + so.aux_batch_offset), > - I915_DISPATCH_SECURE); > + ret = req->engine->emit_bb_start(req, > + (so.ggtt_offset + so.aux_batch_offset), > + I915_DISPATCH_SECURE); > if (ret) > goto out; > > diff --git a/drivers/gpu/drm/i915/intel_mocs.c b/drivers/gpu/drm/i915/intel_mocs.c > index ac0a982bbf55..d79c9c0bbffb 100644 > --- a/drivers/gpu/drm/i915/intel_mocs.c > +++ b/drivers/gpu/drm/i915/intel_mocs.c > @@ -138,21 +138,21 @@ static const struct drm_i915_mocs_entry broxton_mocs_table[] = { > * > * Return: true if there are applicable MOCS settings for the device. > */ > -static bool get_mocs_settings(struct drm_device *dev, > +static bool get_mocs_settings(struct drm_i915_private *dev_priv, > struct drm_i915_mocs_table *table) > { > bool result = false; > > - if (IS_SKYLAKE(dev)) { > + if (IS_SKYLAKE(dev_priv)) { > table->size = ARRAY_SIZE(skylake_mocs_table); > table->table = skylake_mocs_table; > result = true; > - } else if (IS_BROXTON(dev)) { > + } else if (IS_BROXTON(dev_priv)) { > table->size = ARRAY_SIZE(broxton_mocs_table); > table->table = broxton_mocs_table; > result = true; > } else { > - WARN_ONCE(INTEL_INFO(dev)->gen >= 9, > + WARN_ONCE(INTEL_INFO(dev_priv)->gen >= 9, > "Platform that should have a MOCS table does not.\n"); > } > > @@ -297,7 +297,7 @@ int intel_rcs_context_init_mocs(struct drm_i915_gem_request *req) > struct drm_i915_mocs_table t; > int ret; > > - if (get_mocs_settings(req->ring->dev, &t)) { > + if (get_mocs_settings(req->i915, &t)) { > /* Program the control registers */ > ret = emit_mocs_control_table(req, &t, GEN9_GFX_MOCS_0); > if (ret) > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c > index 9821c2a8074a..cc060588a287 100644 > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c > @@ -216,7 +216,7 @@ static int > intel_emit_post_sync_nonzero_flush(struct drm_i915_gem_request *req) > { > struct intel_ringbuffer *ring = req->ringbuf; > - u32 scratch_addr = req->ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; > + u32 scratch_addr = req->engine->scratch.gtt_offset + 2 * CACHELINE_BYTES; > int ret; > > ret = intel_ring_begin(req, 6); > @@ -253,7 +253,7 @@ gen6_render_ring_flush(struct drm_i915_gem_request *req, > { > struct intel_ringbuffer *ring = req->ringbuf; > u32 flags = 0; > - u32 scratch_addr = req->ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; > + u32 scratch_addr = req->engine->scratch.gtt_offset + 2 * CACHELINE_BYTES; > int ret; > > /* Force SNB workarounds for PIPE_CONTROL flushes */ > @@ -326,7 +326,7 @@ gen7_render_ring_flush(struct drm_i915_gem_request *req, > { > struct intel_ringbuffer *ring = req->ringbuf; > u32 flags = 0; > - u32 scratch_addr = req->ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; > + u32 scratch_addr = req->engine->scratch.gtt_offset + 2 * CACHELINE_BYTES; > int ret; > > /* > @@ -410,7 +410,7 @@ gen8_render_ring_flush(struct drm_i915_gem_request *req, > u32 invalidate_domains, u32 flush_domains) > { > u32 flags = 0; > - u32 scratch_addr = req->ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; > + u32 scratch_addr = req->engine->scratch.gtt_offset + 2 * CACHELINE_BYTES; > int ret; > > flags |= PIPE_CONTROL_CS_STALL; > @@ -720,7 +720,7 @@ static int intel_ring_workarounds_emit(struct drm_i915_gem_request *req) > if (WARN_ON_ONCE(w->count == 0)) > return 0; > > - req->ring->gpu_caches_dirty = true; > + req->engine->gpu_caches_dirty = true; > ret = intel_ring_flush_all_caches(req); > if (ret) > return ret; > @@ -738,7 +738,7 @@ static int intel_ring_workarounds_emit(struct drm_i915_gem_request *req) > > intel_ring_advance(ring); > > - req->ring->gpu_caches_dirty = true; > + req->engine->gpu_caches_dirty = true; > ret = intel_ring_flush_all_caches(req); > if (ret) > return ret; > @@ -1199,7 +1199,7 @@ static int gen8_rcs_signal(struct drm_i915_gem_request *signaller_req, > > for_each_ring(waiter, dev_priv, i) { > u32 seqno; > - u64 gtt_offset = signaller_req->ring->semaphore.signal_ggtt[i]; > + u64 gtt_offset = signaller_req->engine->semaphore.signal_ggtt[i]; > if (gtt_offset == MI_SEMAPHORE_SYNC_INVALID) > continue; > > @@ -1239,7 +1239,7 @@ static int gen8_xcs_signal(struct drm_i915_gem_request *signaller_req, > > for_each_ring(waiter, dev_priv, i) { > u32 seqno; > - u64 gtt_offset = signaller_req->ring->semaphore.signal_ggtt[i]; > + u64 gtt_offset = signaller_req->engine->semaphore.signal_ggtt[i]; > if (gtt_offset == MI_SEMAPHORE_SYNC_INVALID) > continue; > > @@ -1276,7 +1276,7 @@ static int gen6_signal(struct drm_i915_gem_request *signaller_req, > return ret; > > for_each_ring(useless, dev_priv, i) { > - u32 mbox_reg = signaller_req->ring->semaphore.mbox.signal[i]; > + u32 mbox_reg = signaller_req->engine->semaphore.mbox.signal[i]; > if (mbox_reg != GEN6_NOSYNC) { > u32 seqno = i915_gem_request_get_seqno(signaller_req); > intel_ring_emit(signaller, MI_LOAD_REGISTER_IMM(1)); > @@ -1306,8 +1306,8 @@ gen6_add_request(struct drm_i915_gem_request *req) > struct intel_ringbuffer *ring = req->ringbuf; > int ret; > > - if (req->ring->semaphore.signal) > - ret = req->ring->semaphore.signal(req, 4); > + if (req->engine->semaphore.signal) > + ret = req->engine->semaphore.signal(req, 4); > else > ret = intel_ring_begin(req, 4); > > @@ -1318,7 +1318,7 @@ gen6_add_request(struct drm_i915_gem_request *req) > intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); > intel_ring_emit(ring, i915_gem_request_get_seqno(req)); > intel_ring_emit(ring, MI_USER_INTERRUPT); > - __intel_ring_advance(req->ring); > + __intel_ring_advance(req->engine); > > return 0; > } > @@ -1356,10 +1356,10 @@ gen8_ring_sync(struct drm_i915_gem_request *waiter_req, > MI_SEMAPHORE_SAD_GTE_SDD); > intel_ring_emit(waiter, seqno); > intel_ring_emit(waiter, > - lower_32_bits(GEN8_WAIT_OFFSET(waiter_req->ring, > + lower_32_bits(GEN8_WAIT_OFFSET(waiter_req->engine, > signaller->id))); > intel_ring_emit(waiter, > - upper_32_bits(GEN8_WAIT_OFFSET(waiter_req->ring, > + upper_32_bits(GEN8_WAIT_OFFSET(waiter_req->engine, > signaller->id))); > intel_ring_advance(waiter); > return 0; > @@ -1374,7 +1374,7 @@ gen6_ring_sync(struct drm_i915_gem_request *waiter_req, > u32 dw1 = MI_SEMAPHORE_MBOX | > MI_SEMAPHORE_COMPARE | > MI_SEMAPHORE_REGISTER; > - u32 wait_mbox = signaller->semaphore.mbox.wait[waiter_req->ring->id]; > + u32 wait_mbox = signaller->semaphore.mbox.wait[waiter_req->engine->id]; > int ret; > > /* Throughout all of the GEM code, seqno passed implies our current > @@ -1419,7 +1419,7 @@ static int > pc_render_add_request(struct drm_i915_gem_request *req) > { > struct intel_ringbuffer *ring = req->ringbuf; > - u32 scratch_addr = req->ring->scratch.gtt_offset + 2 * CACHELINE_BYTES; > + u32 scratch_addr = req->engine->scratch.gtt_offset + 2 * CACHELINE_BYTES; > int ret; > > /* For Ironlake, MI_USER_INTERRUPT was deprecated and apparently > @@ -1437,7 +1437,7 @@ pc_render_add_request(struct drm_i915_gem_request *req) > intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | > PIPE_CONTROL_WRITE_FLUSH | > PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE); > - intel_ring_emit(ring, req->ring->scratch.gtt_offset | PIPE_CONTROL_GLOBAL_GTT); > + intel_ring_emit(ring, req->engine->scratch.gtt_offset | PIPE_CONTROL_GLOBAL_GTT); > intel_ring_emit(ring, i915_gem_request_get_seqno(req)); > intel_ring_emit(ring, 0); > PIPE_CONTROL_FLUSH(ring, scratch_addr); > @@ -1456,10 +1456,10 @@ pc_render_add_request(struct drm_i915_gem_request *req) > PIPE_CONTROL_WRITE_FLUSH | > PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE | > PIPE_CONTROL_NOTIFY); > - intel_ring_emit(ring, req->ring->scratch.gtt_offset | PIPE_CONTROL_GLOBAL_GTT); > + intel_ring_emit(ring, req->engine->scratch.gtt_offset | PIPE_CONTROL_GLOBAL_GTT); > intel_ring_emit(ring, i915_gem_request_get_seqno(req)); > intel_ring_emit(ring, 0); > - __intel_ring_advance(req->ring); > + __intel_ring_advance(req->engine); > > return 0; > } > @@ -1639,7 +1639,7 @@ i9xx_add_request(struct drm_i915_gem_request *req) > intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); > intel_ring_emit(ring, i915_gem_request_get_seqno(req)); > intel_ring_emit(ring, MI_USER_INTERRUPT); > - __intel_ring_advance(req->ring); > + __intel_ring_advance(req->engine); > > return 0; > } > @@ -1801,7 +1801,7 @@ i830_dispatch_execbuffer(struct drm_i915_gem_request *req, > unsigned dispatch_flags) > { > struct intel_ringbuffer *ring = req->ringbuf; > - u32 cs_offset = req->ring->scratch.gtt_offset; > + u32 cs_offset = req->engine->scratch.gtt_offset; > int ret; > > ret = intel_ring_begin(req, 6); > @@ -2164,7 +2164,7 @@ int intel_ring_idle(struct intel_engine_cs *ring) > > int intel_ring_alloc_request_extras(struct drm_i915_gem_request *request) > { > - request->ringbuf = request->ring->buffer; > + request->ringbuf = request->engine->buffer; > return 0; > } > > @@ -2218,7 +2218,7 @@ void intel_ring_reserved_space_end(struct intel_ringbuffer *ringbuf) > static int wait_for_space(struct drm_i915_gem_request *req, int bytes) > { > struct intel_ringbuffer *ringbuf = req->ringbuf; > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > struct drm_i915_gem_request *target; > unsigned space; > int ret; > @@ -2229,7 +2229,7 @@ static int wait_for_space(struct drm_i915_gem_request *req, int bytes) > /* The whole point of reserving space is to not wait! */ > WARN_ON(ringbuf->reserved_in_use); > > - list_for_each_entry(target, &ring->request_list, list) { > + list_for_each_entry(target, &engine->request_list, list) { > /* > * The request queue is per-engine, so can contain requests > * from multiple ringbuffers. Here, we must ignore any that > @@ -2245,7 +2245,7 @@ static int wait_for_space(struct drm_i915_gem_request *req, int bytes) > break; > } > > - if (WARN_ON(&target->list == &ring->request_list)) > + if (WARN_ON(&target->list == &engine->request_list)) > return -ENOSPC; > > ret = i915_wait_request(target); > @@ -2931,40 +2931,40 @@ int intel_init_vebox_ring_buffer(struct drm_device *dev) > int > intel_ring_flush_all_caches(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > int ret; > > - if (!ring->gpu_caches_dirty) > + if (!engine->gpu_caches_dirty) > return 0; > > - ret = ring->flush(req, 0, I915_GEM_GPU_DOMAINS); > + ret = engine->flush(req, 0, I915_GEM_GPU_DOMAINS); > if (ret) > return ret; > > trace_i915_gem_ring_flush(req, 0, I915_GEM_GPU_DOMAINS); > > - ring->gpu_caches_dirty = false; > + engine->gpu_caches_dirty = false; > return 0; > } > > int > intel_ring_invalidate_all_caches(struct drm_i915_gem_request *req) > { > - struct intel_engine_cs *ring = req->ring; > + struct intel_engine_cs *engine = req->engine; > uint32_t flush_domains; > int ret; > > flush_domains = 0; > - if (ring->gpu_caches_dirty) > + if (engine->gpu_caches_dirty) > flush_domains = I915_GEM_GPU_DOMAINS; > > - ret = ring->flush(req, I915_GEM_GPU_DOMAINS, flush_domains); > + ret = engine->flush(req, I915_GEM_GPU_DOMAINS, flush_domains); > if (ret) > return ret; > > trace_i915_gem_ring_flush(req, I915_GEM_GPU_DOMAINS, flush_domains); > > - ring->gpu_caches_dirty = false; > + engine->gpu_caches_dirty = false; > return 0; > } > > -- > 2.6.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx