From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH 5/8] drm/i915: Extract ringbuffer destroy & generalize alloc to take a ringbuf Date: Mon, 30 Jun 2014 13:57:06 -0700 Message-ID: <20140630135706.0b527ea8@jbarnes-desktop> References: <1403789059-5692-1-git-send-email-oscar.mateo@intel.com> <1403789059-5692-6-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) by gabe.freedesktop.org (Postfix) with ESMTP id 700256E24A for ; Mon, 30 Jun 2014 13:56:25 -0700 (PDT) Received: by mail-pa0-f45.google.com with SMTP id rd3so9271655pab.4 for ; Mon, 30 Jun 2014 13:56:25 -0700 (PDT) In-Reply-To: <1403789059-5692-6-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: oscar.mateo@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Thu, 26 Jun 2014 14:24:16 +0100 oscar.mateo@intel.com wrote: > From: Oscar Mateo > > More prep work: with Execlists, we are going to start creating a lot > of extra ringbuffers soon, so these functions are handy. > > No functional changes. > > v2: rename allocate/destroy_ring_buffer to alloc/destroy_ringbuffer_obj > because the name is more meaningful and to mirror a similar function in > the context world: i915_gem_alloc_context_obj(). Change suggested by Brad > Volkin. > > Signed-off-by: Oscar Mateo > --- > drivers/gpu/drm/i915/intel_ringbuffer.c | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c > index 2faef26..ffdb366 100644 > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c > @@ -1380,15 +1380,25 @@ static int init_phys_status_page(struct intel_engine_cs *ring) > return 0; > } > > -static int allocate_ring_buffer(struct intel_engine_cs *ring) > +static void intel_destroy_ringbuffer_obj(struct intel_ringbuffer *ringbuf) > +{ > + if (!ringbuf->obj) > + return; > + > + iounmap(ringbuf->virtual_start); > + i915_gem_object_ggtt_unpin(ringbuf->obj); > + drm_gem_object_unreference(&ringbuf->obj->base); > + ringbuf->obj = NULL; > +} > + > +static int intel_alloc_ringbuffer_obj(struct drm_device *dev, > + struct intel_ringbuffer *ringbuf) > { > - struct drm_device *dev = ring->dev; > struct drm_i915_private *dev_priv = to_i915(dev); > - struct intel_ringbuffer *ringbuf = ring->buffer; > struct drm_i915_gem_object *obj; > int ret; > > - if (intel_ring_initialized(ring)) > + if (ringbuf->obj) > return 0; > > obj = NULL; > @@ -1460,7 +1470,7 @@ static int intel_init_ring_buffer(struct drm_device *dev, > goto error; > } > > - ret = allocate_ring_buffer(ring); > + ret = intel_alloc_ringbuffer_obj(dev, ringbuf); > if (ret) { > DRM_ERROR("Failed to allocate ringbuffer %s: %d\n", ring->name, ret); > goto error; > @@ -1501,11 +1511,7 @@ void intel_cleanup_ring_buffer(struct intel_engine_cs *ring) > intel_stop_ring_buffer(ring); > WARN_ON(!IS_GEN2(ring->dev) && (I915_READ_MODE(ring) & MODE_IDLE) == 0); > > - iounmap(ringbuf->virtual_start); > - > - i915_gem_object_ggtt_unpin(ringbuf->obj); > - drm_gem_object_unreference(&ringbuf->obj->base); > - ringbuf->obj = NULL; > + intel_destroy_ringbuffer_obj(ringbuf); > ring->preallocated_lazy_request = NULL; > ring->outstanding_lazy_seqno = 0; > Reviewed-by: Jesse Barnes -- Jesse Barnes, Intel Open Source Technology Center