From mboxrd@z Thu Jan 1 00:00:00 1970 From: Damien Lespiau Subject: Re: [PATCH] drm/i915: Emit even number of dwords when emitting LRIs Date: Wed, 22 Oct 2014 11:40:30 +0100 Message-ID: <20141022104030.GA3470@strange.amr.corp.intel.com> References: <1413968989-16840-1-git-send-email-arun.siluvery@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B2276E2C0 for ; Wed, 22 Oct 2014 03:40:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1413968989-16840-1-git-send-email-arun.siluvery@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Arun Siluvery Cc: intel-gfx@lists.freedesktop.org, Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org On Wed, Oct 22, 2014 at 10:09:49AM +0100, Arun Siluvery wrote: > The number of DWords should be even when doing ring emits as > command sequences require QWord alignment. It looks like we could just pad at the end of the batch instead of one NOP per register write? Also, It looks like we could use the LRI variant that can write more than one register in one go (separate patch)?. -- Damien > Cc: Mika Kuoppala > Signed-off-by: Arun Siluvery > --- > drivers/gpu/drm/i915/intel_ringbuffer.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c > index 12a546f..79211ae 100644 > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c > @@ -680,7 +680,7 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring) > if (ret) > return ret; > > - ret = intel_ring_begin(ring, w->count * 3); > + ret = intel_ring_begin(ring, w->count * 4); > if (ret) > return ret; > > @@ -688,6 +688,7 @@ static int intel_ring_workarounds_emit(struct intel_engine_cs *ring) > intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); > intel_ring_emit(ring, w->reg[i].addr); > intel_ring_emit(ring, w->reg[i].value); > + intel_ring_emit(ring, MI_NOOP); > } > > intel_ring_advance(ring); > -- > 2.1.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx