From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH 1/2] drm/i915: Use normal fb deref for the fbcon framebuffer Date: Mon, 10 Feb 2014 09:38:06 -0800 Message-ID: <20140210093806.35b40b5c@jbarnes-desktop> References: <1391803840-2629-4-git-send-email-jbarnes@virtuousgeek.org> <1392051639-6469-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from alt-proxy15.mail.unifiedlayer.com (alt-proxy15.mail.unifiedlayer.com [70.40.196.49]) by gabe.freedesktop.org (Postfix) with SMTP id D457610580B for ; Mon, 10 Feb 2014 09:38:12 -0800 (PST) In-Reply-To: <1392051639-6469-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Daniel Vetter Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org On Mon, 10 Feb 2014 18:00:38 +0100 Daniel Vetter wrote: > Now that it's a normally kmalloce buffer we can use the usual cleanup > paths. The upside here is that if we get the refcounting wrong will be > able to catch it, since the drm core will complain about leftover > framebuffers and kref about underflows. > > v2: Kill intel_framebuffer_fini - no longer needed now that we > refcount all fbs properly and only confusing. > > Cc: Jesse Barnes > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/i915/intel_display.c | 11 +++-------- > drivers/gpu/drm/i915/intel_drv.h | 1 - > drivers/gpu/drm/i915/intel_fbdev.c | 4 +--- > 3 files changed, 4 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 1b2faa44764b..6600931f213c 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -10526,18 +10526,13 @@ static void intel_setup_outputs(struct drm_device *dev) > drm_helper_move_panel_connectors_to_head(dev); > } > > -void intel_framebuffer_fini(struct intel_framebuffer *fb) > -{ > - drm_framebuffer_cleanup(&fb->base); > - WARN_ON(!fb->obj->framebuffer_references--); > - drm_gem_object_unreference_unlocked(&fb->obj->base); > -} > - > static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb) > { > struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); > > - intel_framebuffer_fini(intel_fb); > + drm_framebuffer_cleanup(fb); > + WARN_ON(!intel_fb->obj->framebuffer_references--); > + drm_gem_object_unreference_unlocked(&intel_fb->obj->base); > kfree(intel_fb); > } > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 4386faf34a9b..59348a4d0238 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -685,7 +685,6 @@ int intel_framebuffer_init(struct drm_device *dev, > struct intel_framebuffer *ifb, > struct drm_mode_fb_cmd2 *mode_cmd, > struct drm_i915_gem_object *obj); > -void intel_framebuffer_fini(struct intel_framebuffer *fb); > void intel_prepare_page_flip(struct drm_device *dev, int plane); > void intel_finish_page_flip(struct drm_device *dev, int pipe); > void intel_finish_page_flip_plane(struct drm_device *dev, int plane); > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c > index cd969c3c301e..e4f45293ccf5 100644 > --- a/drivers/gpu/drm/i915/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > @@ -268,9 +268,7 @@ static void intel_fbdev_destroy(struct drm_device *dev, > > drm_fb_helper_fini(&ifbdev->helper); > > - drm_framebuffer_unregister_private(&ifbdev->fb->base); > - intel_framebuffer_fini(ifbdev->fb); > - kfree(ifbdev->fb); > + drm_framebuffer_unreference(&ifbdev->fb->base); > } > > int intel_fbdev_init(struct drm_device *dev) Yeah, this looks correct, and gets rid of one of the functions in this maze of fb handling... Reviewed-by: Jesse Barnes -- Jesse Barnes, Intel Open Source Technology Center