[Intel-gfx] [PATCH] drm/fb-helper: Automatically clean up fb_info
Sean Paul
seanpaul at chromium.org
Tue Feb 7 16:27:20 UTC 2017
On Tue, Feb 07, 2017 at 05:16:03PM +0100, Daniel Vetter wrote:
> Noticed that everyone duplicates the same logic here and we could safe
> a few lines per driver. Yay for lots of drivers to make such tiny
> refactors worth-while!
>
> v2: Forgot to git add everything :(
>
> v3: Actually remove release_fbi (Sean, Emil, Chris) ...
>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Sean Paul <seanpaul at chromium.org>
> Cc: Noralf Trønnes <noralf at tronnes.org>
> Cc: Emil Velikov <emil.l.velikov at gmail.com>
Reviewed-by: Sean Paul <seanpaul at chromium.org>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 11 +++----
> drivers/gpu/drm/armada/armada_fbdev.c | 2 --
> drivers/gpu/drm/ast/ast_fb.c | 9 ++----
> drivers/gpu/drm/bochs/bochs_fbdev.c | 5 +--
> drivers/gpu/drm/cirrus/cirrus_fbdev.c | 1 -
> drivers/gpu/drm/drm_fb_cma_helper.c | 3 +-
> drivers/gpu/drm/drm_fb_helper.c | 39 ++++++++---------------
> drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 2 --
> drivers/gpu/drm/gma500/framebuffer.c | 9 ++----
> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c | 2 --
> drivers/gpu/drm/i915/intel_fbdev.c | 5 +--
> drivers/gpu/drm/mgag200/mgag200_fb.c | 5 +--
> drivers/gpu/drm/msm/msm_fbdev.c | 1 -
> drivers/gpu/drm/nouveau/nouveau_fbcon.c | 1 -
> drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 ---
> drivers/gpu/drm/qxl/qxl_fb.c | 5 +--
> drivers/gpu/drm/radeon/radeon_fb.c | 11 +++----
> drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 9 ++----
> drivers/gpu/drm/tegra/fb.c | 5 +--
> drivers/gpu/drm/udl/udl_fb.c | 5 +--
> drivers/gpu/drm/virtio/virtgpu_fb.c | 5 +--
> include/drm/drm_fb_helper.h | 4 ---
> 22 files changed, 39 insertions(+), 104 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index 838943d0962e..f4a2f1f0a6ca 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -224,7 +224,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
> info = drm_fb_helper_alloc_fbi(helper);
> if (IS_ERR(info)) {
> ret = PTR_ERR(info);
> - goto out_unref;
> + goto out;
> }
>
> info->par = rfbdev;
> @@ -233,7 +233,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
> ret = amdgpu_framebuffer_init(adev->ddev, &rfbdev->rfb, &mode_cmd, gobj);
> if (ret) {
> DRM_ERROR("failed to initialize framebuffer %d\n", ret);
> - goto out_destroy_fbi;
> + goto out;
> }
>
> fb = &rfbdev->rfb.base;
> @@ -266,7 +266,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
>
> if (info->screen_base == NULL) {
> ret = -ENOSPC;
> - goto out_destroy_fbi;
> + goto out;
> }
>
> DRM_INFO("fb mappable at 0x%lX\n", info->fix.smem_start);
> @@ -278,9 +278,7 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
> vga_switcheroo_client_fb_set(adev->ddev->pdev, info);
> return 0;
>
> -out_destroy_fbi:
> - drm_fb_helper_release_fbi(helper);
> -out_unref:
> +out:
> if (abo) {
>
> }
> @@ -304,7 +302,6 @@ static int amdgpu_fbdev_destroy(struct drm_device *dev, struct amdgpu_fbdev *rfb
> struct amdgpu_framebuffer *rfb = &rfbdev->rfb;
>
> drm_fb_helper_unregister_fbi(&rfbdev->helper);
> - drm_fb_helper_release_fbi(&rfbdev->helper);
>
> if (rfb->obj) {
> amdgpufb_destroy_pinned_object(rfb->obj);
> diff --git a/drivers/gpu/drm/armada/armada_fbdev.c b/drivers/gpu/drm/armada/armada_fbdev.c
> index 78335100cbc3..7f184a52594e 100644
> --- a/drivers/gpu/drm/armada/armada_fbdev.c
> +++ b/drivers/gpu/drm/armada/armada_fbdev.c
> @@ -157,7 +157,6 @@ int armada_fbdev_init(struct drm_device *dev)
>
> return 0;
> err_fb_setup:
> - drm_fb_helper_release_fbi(fbh);
> drm_fb_helper_fini(fbh);
> err_fb_helper:
> priv->fbdev = NULL;
> @@ -179,7 +178,6 @@ void armada_fbdev_fini(struct drm_device *dev)
>
> if (fbh) {
> drm_fb_helper_unregister_fbi(fbh);
> - drm_fb_helper_release_fbi(fbh);
>
> drm_fb_helper_fini(fbh);
>
> diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
> index b085140fae95..f8421d23946a 100644
> --- a/drivers/gpu/drm/ast/ast_fb.c
> +++ b/drivers/gpu/drm/ast/ast_fb.c
> @@ -215,13 +215,13 @@ static int astfb_create(struct drm_fb_helper *helper,
> info = drm_fb_helper_alloc_fbi(helper);
> if (IS_ERR(info)) {
> ret = PTR_ERR(info);
> - goto err_free_vram;
> + goto out;
> }
> info->par = afbdev;
>
> ret = ast_framebuffer_init(dev, &afbdev->afb, &mode_cmd, gobj);
> if (ret)
> - goto err_release_fbi;
> + goto out;
>
> afbdev->sysram = sysram;
> afbdev->size = size;
> @@ -250,9 +250,7 @@ static int astfb_create(struct drm_fb_helper *helper,
>
> return 0;
>
> -err_release_fbi:
> - drm_fb_helper_release_fbi(helper);
> -err_free_vram:
> +out:
> vfree(sysram);
> return ret;
> }
> @@ -287,7 +285,6 @@ static void ast_fbdev_destroy(struct drm_device *dev,
> struct ast_framebuffer *afb = &afbdev->afb;
>
> drm_fb_helper_unregister_fbi(&afbdev->helper);
> - drm_fb_helper_release_fbi(&afbdev->helper);
>
> if (afb->obj) {
> drm_gem_object_unreference_unlocked(afb->obj);
> diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c
> index 0317c3df6a22..d9821e6d2c3c 100644
> --- a/drivers/gpu/drm/bochs/bochs_fbdev.c
> +++ b/drivers/gpu/drm/bochs/bochs_fbdev.c
> @@ -107,10 +107,8 @@ static int bochsfb_create(struct drm_fb_helper *helper,
> info->par = &bochs->fb.helper;
>
> ret = bochs_framebuffer_init(bochs->dev, &bochs->fb.gfb, &mode_cmd, gobj);
> - if (ret) {
> - drm_fb_helper_release_fbi(helper);
> + if (ret)
> return ret;
> - }
>
> bochs->fb.size = size;
>
> @@ -144,7 +142,6 @@ static int bochs_fbdev_destroy(struct bochs_device *bochs)
> DRM_DEBUG_DRIVER("\n");
>
> drm_fb_helper_unregister_fbi(&bochs->fb.helper);
> - drm_fb_helper_release_fbi(&bochs->fb.helper);
>
> if (gfb->obj) {
> drm_gem_object_unreference_unlocked(gfb->obj);
> diff --git a/drivers/gpu/drm/cirrus/cirrus_fbdev.c b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> index 79a5cd108245..606da15955fa 100644
> --- a/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> +++ b/drivers/gpu/drm/cirrus/cirrus_fbdev.c
> @@ -250,7 +250,6 @@ static int cirrus_fbdev_destroy(struct drm_device *dev,
> struct cirrus_framebuffer *gfb = &gfbdev->gfb;
>
> drm_fb_helper_unregister_fbi(&gfbdev->helper);
> - drm_fb_helper_release_fbi(&gfbdev->helper);
>
> if (gfb->obj) {
> drm_gem_object_unreference_unlocked(gfb->obj);
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 0ef8b284a4b8..45df245b79a0 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -475,7 +475,7 @@ drm_fbdev_cma_create(struct drm_fb_helper *helper,
> err_cma_destroy:
> drm_framebuffer_remove(&fbdev_cma->fb->fb);
> err_fb_info_destroy:
> - drm_fb_helper_release_fbi(helper);
> + drm_fb_helper_fini(helper);
> err_gem_free_object:
> drm_gem_object_unreference_unlocked(&obj->base);
> return ret;
> @@ -571,7 +571,6 @@ void drm_fbdev_cma_fini(struct drm_fbdev_cma *fbdev_cma)
> drm_fb_helper_unregister_fbi(&fbdev_cma->fb_helper);
> if (fbdev_cma->fb_helper.fbdev)
> drm_fbdev_cma_defio_fini(fbdev_cma->fb_helper.fbdev);
> - drm_fb_helper_release_fbi(&fbdev_cma->fb_helper);
>
> if (fbdev_cma->fb)
> drm_framebuffer_remove(&fbdev_cma->fb->fb);
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 5220a7b5e6ff..c2460092375e 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -781,7 +781,9 @@ EXPORT_SYMBOL(drm_fb_helper_init);
> * @fb_helper: driver-allocated fbdev helper
> *
> * A helper to alloc fb_info and the members cmap and apertures. Called
> - * by the driver within the fb_probe fb_helper callback function.
> + * by the driver within the fb_probe fb_helper callback function. Drivers do not
> + * need to release the allocated fb_info structure themselves, this is
> + * automatically done when calling drm_fb_helper_fini().
> *
> * RETURNS:
> * fb_info pointer if things went okay, pointer containing error code
> @@ -835,29 +837,6 @@ void drm_fb_helper_unregister_fbi(struct drm_fb_helper *fb_helper)
> EXPORT_SYMBOL(drm_fb_helper_unregister_fbi);
>
> /**
> - * drm_fb_helper_release_fbi - dealloc fb_info and its members
> - * @fb_helper: driver-allocated fbdev helper
> - *
> - * A helper to free memory taken by fb_info and the members cmap and
> - * apertures
> - */
> -void drm_fb_helper_release_fbi(struct drm_fb_helper *fb_helper)
> -{
> - if (fb_helper) {
> - struct fb_info *info = fb_helper->fbdev;
> -
> - if (info) {
> - if (info->cmap.len)
> - fb_dealloc_cmap(&info->cmap);
> - framebuffer_release(info);
> - }
> -
> - fb_helper->fbdev = NULL;
> - }
> -}
> -EXPORT_SYMBOL(drm_fb_helper_release_fbi);
> -
> -/**
> * drm_fb_helper_fini - finialize a &struct drm_fb_helper
> * @fb_helper: driver-allocated fbdev helper
> *
> @@ -866,9 +845,19 @@ EXPORT_SYMBOL(drm_fb_helper_release_fbi);
> */
> void drm_fb_helper_fini(struct drm_fb_helper *fb_helper)
> {
> - if (!drm_fbdev_emulation)
> + struct fb_info *info;
> +
> + if (!drm_fbdev_emulation || !fb_helper)
> return;
>
> + info = fb_helper->fbdev;
> + if (info) {
> + if (info->cmap.len)
> + fb_dealloc_cmap(&info->cmap);
> + framebuffer_release(info);
> + }
> + fb_helper->fbdev = NULL;
> +
> mutex_lock(&kernel_fb_helper_lock);
> if (!list_empty(&fb_helper->kernel_fb_list)) {
> list_del(&fb_helper->kernel_fb_list);
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> index a7884bea42eb..36933eb63d19 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
> @@ -99,7 +99,6 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
> VM_MAP, pgprot_writecombine(PAGE_KERNEL));
> if (!exynos_gem->kvaddr) {
> DRM_ERROR("failed to map pages to kernel space.\n");
> - drm_fb_helper_release_fbi(helper);
> return -EIO;
> }
>
> @@ -275,7 +274,6 @@ static void exynos_drm_fbdev_destroy(struct drm_device *dev,
> }
>
> drm_fb_helper_unregister_fbi(fb_helper);
> - drm_fb_helper_release_fbi(fb_helper);
>
> drm_fb_helper_fini(fb_helper);
> }
> diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
> index fd1488bf5189..1b45075fc7b0 100644
> --- a/drivers/gpu/drm/gma500/framebuffer.c
> +++ b/drivers/gpu/drm/gma500/framebuffer.c
> @@ -392,7 +392,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
> info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper);
> if (IS_ERR(info)) {
> ret = PTR_ERR(info);
> - goto err_free_range;
> + goto out;
> }
> info->par = fbdev;
>
> @@ -400,7 +400,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
>
> ret = psb_framebuffer_init(dev, psbfb, &mode_cmd, backing);
> if (ret)
> - goto err_release;
> + goto out;
>
> fb = &psbfb->base;
> psbfb->fbdev = info;
> @@ -445,9 +445,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
> psbfb->base.width, psbfb->base.height);
>
> return 0;
> -err_release:
> - drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
> -err_free_range:
> +out:
> psb_gtt_free_range(dev, backing);
> return ret;
> }
> @@ -536,7 +534,6 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
> struct psb_framebuffer *psbfb = &fbdev->pfb;
>
> drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
> - drm_fb_helper_release_fbi(&fbdev->psb_fb_helper);
>
> drm_fb_helper_fini(&fbdev->psb_fb_helper);
> drm_framebuffer_unregister_private(&psbfb->base);
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> index 16fe79053ee1..7ffc1c593ae1 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_fbdev.c
> @@ -147,7 +147,6 @@ static int hibmc_drm_fb_create(struct drm_fb_helper *helper,
> return 0;
>
> out_release_fbi:
> - drm_fb_helper_release_fbi(helper);
> ret1 = ttm_bo_reserve(&bo->bo, true, false, NULL);
> if (ret1) {
> DRM_ERROR("failed to rsv ttm_bo when release fbi: %d\n", ret1);
> @@ -170,7 +169,6 @@ static void hibmc_fbdev_destroy(struct hibmc_fbdev *fbdev)
> struct drm_fb_helper *fbh = &fbdev->helper;
>
> drm_fb_helper_unregister_fbi(fbh);
> - drm_fb_helper_release_fbi(fbh);
>
> drm_fb_helper_fini(fbh);
>
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index e0d9e72cf3d1..8ea2bd85a474 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -253,7 +253,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
> if (IS_ERR(vaddr)) {
> DRM_ERROR("Failed to remap framebuffer into virtual memory\n");
> ret = PTR_ERR(vaddr);
> - goto out_destroy_fbi;
> + goto out_unpin;
> }
> info->screen_base = vaddr;
> info->screen_size = vma->node.size;
> @@ -281,8 +281,6 @@ static int intelfb_create(struct drm_fb_helper *helper,
> vga_switcheroo_client_fb_set(pdev, info);
> return 0;
>
> -out_destroy_fbi:
> - drm_fb_helper_release_fbi(helper);
> out_unpin:
> intel_unpin_fb_vma(vma);
> out_unlock:
> @@ -543,7 +541,6 @@ static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)
> */
>
> drm_fb_helper_unregister_fbi(&ifbdev->helper);
> - drm_fb_helper_release_fbi(&ifbdev->helper);
>
> drm_fb_helper_fini(&ifbdev->helper);
>
> diff --git a/drivers/gpu/drm/mgag200/mgag200_fb.c b/drivers/gpu/drm/mgag200/mgag200_fb.c
> index 1a665e1671b8..320b0d33c380 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_fb.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_fb.c
> @@ -198,7 +198,7 @@ static int mgag200fb_create(struct drm_fb_helper *helper,
>
> ret = mgag200_framebuffer_init(dev, &mfbdev->mfb, &mode_cmd, gobj);
> if (ret)
> - goto err_framebuffer_init;
> + goto err_alloc_fbi;
>
> mfbdev->sysram = sysram;
> mfbdev->size = size;
> @@ -230,8 +230,6 @@ static int mgag200fb_create(struct drm_fb_helper *helper,
>
> return 0;
>
> -err_framebuffer_init:
> - drm_fb_helper_release_fbi(helper);
> err_alloc_fbi:
> vfree(sysram);
> err_sysram:
> @@ -246,7 +244,6 @@ static int mga_fbdev_destroy(struct drm_device *dev,
> struct mga_framebuffer *mfb = &mfbdev->mfb;
>
> drm_fb_helper_unregister_fbi(&mfbdev->helper);
> - drm_fb_helper_release_fbi(&mfbdev->helper);
>
> if (mfb->obj) {
> drm_gem_object_unreference_unlocked(mfb->obj);
> diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
> index f8a587eac6b8..a7d9b8e3f8ca 100644
> --- a/drivers/gpu/drm/msm/msm_fbdev.c
> +++ b/drivers/gpu/drm/msm/msm_fbdev.c
> @@ -236,7 +236,6 @@ void msm_fbdev_free(struct drm_device *dev)
> DBG();
>
> drm_fb_helper_unregister_fbi(helper);
> - drm_fb_helper_release_fbi(helper);
>
> drm_fb_helper_fini(helper);
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> index c699d7784da2..3c8f8dd89239 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
> @@ -444,7 +444,6 @@ nouveau_fbcon_destroy(struct drm_device *dev, struct nouveau_fbdev *fbcon)
> struct nouveau_framebuffer *nouveau_fb = nouveau_framebuffer(fbcon->helper.fb);
>
> drm_fb_helper_unregister_fbi(&fbcon->helper);
> - drm_fb_helper_release_fbi(&fbcon->helper);
> drm_fb_helper_fini(&fbcon->helper);
>
> if (nouveau_fb->nvbo) {
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> index 2a839956dae6..2c9e2f36a9d2 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -222,9 +222,6 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
> fail:
>
> if (ret) {
> -
> - drm_fb_helper_release_fbi(helper);
> -
> if (fb)
> drm_framebuffer_remove(fb);
> }
> @@ -302,7 +299,6 @@ void omap_fbdev_free(struct drm_device *dev)
> DBG();
>
> drm_fb_helper_unregister_fbi(helper);
> - drm_fb_helper_release_fbi(helper);
>
> drm_fb_helper_fini(helper);
>
> diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
> index e6ade6aab54c..a0f55750e2d3 100644
> --- a/drivers/gpu/drm/qxl/qxl_fb.c
> +++ b/drivers/gpu/drm/qxl/qxl_fb.c
> @@ -305,7 +305,7 @@ static int qxlfb_create(struct qxl_fbdev *qfbdev,
>
> if (info->screen_base == NULL) {
> ret = -ENOSPC;
> - goto out_destroy_fbi;
> + goto out_unref;
> }
>
> #ifdef CONFIG_DRM_FBDEV_EMULATION
> @@ -320,8 +320,6 @@ static int qxlfb_create(struct qxl_fbdev *qfbdev,
> fb->format->depth, fb->pitches[0], fb->width, fb->height);
> return 0;
>
> -out_destroy_fbi:
> - drm_fb_helper_release_fbi(&qfbdev->helper);
> out_unref:
> if (qbo) {
> ret = qxl_bo_reserve(qbo, false);
> @@ -363,7 +361,6 @@ static int qxl_fbdev_destroy(struct drm_device *dev, struct qxl_fbdev *qfbdev)
> struct qxl_framebuffer *qfb = &qfbdev->qfb;
>
> drm_fb_helper_unregister_fbi(&qfbdev->helper);
> - drm_fb_helper_release_fbi(&qfbdev->helper);
>
> if (qfb->obj) {
> qxlfb_destroy_pinned_object(qfb->obj);
> diff --git a/drivers/gpu/drm/radeon/radeon_fb.c b/drivers/gpu/drm/radeon/radeon_fb.c
> index 6c10a83f3362..615cf965ee7f 100644
> --- a/drivers/gpu/drm/radeon/radeon_fb.c
> +++ b/drivers/gpu/drm/radeon/radeon_fb.c
> @@ -242,7 +242,7 @@ static int radeonfb_create(struct drm_fb_helper *helper,
> info = drm_fb_helper_alloc_fbi(helper);
> if (IS_ERR(info)) {
> ret = PTR_ERR(info);
> - goto out_unref;
> + goto out;
> }
>
> info->par = rfbdev;
> @@ -251,7 +251,7 @@ static int radeonfb_create(struct drm_fb_helper *helper,
> ret = radeon_framebuffer_init(rdev->ddev, &rfbdev->rfb, &mode_cmd, gobj);
> if (ret) {
> DRM_ERROR("failed to initialize framebuffer %d\n", ret);
> - goto out_destroy_fbi;
> + goto out;
> }
>
> fb = &rfbdev->rfb.base;
> @@ -284,7 +284,7 @@ static int radeonfb_create(struct drm_fb_helper *helper,
>
> if (info->screen_base == NULL) {
> ret = -ENOSPC;
> - goto out_destroy_fbi;
> + goto out;
> }
>
> DRM_INFO("fb mappable at 0x%lX\n", info->fix.smem_start);
> @@ -296,9 +296,7 @@ static int radeonfb_create(struct drm_fb_helper *helper,
> vga_switcheroo_client_fb_set(rdev->ddev->pdev, info);
> return 0;
>
> -out_destroy_fbi:
> - drm_fb_helper_release_fbi(helper);
> -out_unref:
> +out:
> if (rbo) {
>
> }
> @@ -322,7 +320,6 @@ static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfb
> struct radeon_framebuffer *rfb = &rfbdev->rfb;
>
> drm_fb_helper_unregister_fbi(&rfbdev->helper);
> - drm_fb_helper_release_fbi(&rfbdev->helper);
>
> if (rfb->obj) {
> radeonfb_destroy_pinned_object(rfb->obj);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> index 52d1fdf9f9da..9d409caac2b7 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
> @@ -78,7 +78,7 @@ static int rockchip_drm_fbdev_create(struct drm_fb_helper *helper,
> if (IS_ERR(fbi)) {
> dev_err(dev->dev, "Failed to create framebuffer info.\n");
> ret = PTR_ERR(fbi);
> - goto err_rockchip_gem_free_object;
> + goto out;
> }
>
> helper->fb = rockchip_drm_framebuffer_init(dev, &mode_cmd,
> @@ -86,7 +86,7 @@ static int rockchip_drm_fbdev_create(struct drm_fb_helper *helper,
> if (IS_ERR(helper->fb)) {
> dev_err(dev->dev, "Failed to allocate DRM framebuffer.\n");
> ret = PTR_ERR(helper->fb);
> - goto err_release_fbi;
> + goto out;
> }
>
> fbi->par = helper;
> @@ -114,9 +114,7 @@ static int rockchip_drm_fbdev_create(struct drm_fb_helper *helper,
>
> return 0;
>
> -err_release_fbi:
> - drm_fb_helper_release_fbi(helper);
> -err_rockchip_gem_free_object:
> +out:
> rockchip_gem_free_object(&rk_obj->base);
> return ret;
> }
> @@ -176,7 +174,6 @@ void rockchip_drm_fbdev_fini(struct drm_device *dev)
> helper = &private->fbdev_helper;
>
> drm_fb_helper_unregister_fbi(helper);
> - drm_fb_helper_release_fbi(helper);
>
> if (helper->fb)
> drm_framebuffer_unreference(helper->fb);
> diff --git a/drivers/gpu/drm/tegra/fb.c b/drivers/gpu/drm/tegra/fb.c
> index f896e2ff7d47..28ff30cb7b0f 100644
> --- a/drivers/gpu/drm/tegra/fb.c
> +++ b/drivers/gpu/drm/tegra/fb.c
> @@ -235,7 +235,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
> dev_err(drm->dev, "failed to allocate DRM framebuffer: %d\n",
> err);
> drm_gem_object_unreference_unlocked(&bo->gem);
> - goto release;
> + return PTR_ERR(fbdev->fb);
> }
>
> fb = &fbdev->fb->base;
> @@ -272,8 +272,6 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
>
> destroy:
> drm_framebuffer_remove(fb);
> -release:
> - drm_fb_helper_release_fbi(helper);
> return err;
> }
>
> @@ -339,7 +337,6 @@ static int tegra_fbdev_init(struct tegra_fbdev *fbdev,
> static void tegra_fbdev_exit(struct tegra_fbdev *fbdev)
> {
> drm_fb_helper_unregister_fbi(&fbdev->base);
> - drm_fb_helper_release_fbi(&fbdev->base);
>
> if (fbdev->fb)
> drm_framebuffer_remove(&fbdev->fb->base);
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index b8dc06d68777..063743ad09be 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -381,7 +381,7 @@ static int udlfb_create(struct drm_fb_helper *helper,
>
> ret = udl_framebuffer_init(dev, &ufbdev->ufb, &mode_cmd, obj);
> if (ret)
> - goto out_destroy_fbi;
> + goto out_gfree;
>
> fb = &ufbdev->ufb.base;
>
> @@ -403,8 +403,6 @@ static int udlfb_create(struct drm_fb_helper *helper,
> ufbdev->ufb.obj->vmapping);
>
> return ret;
> -out_destroy_fbi:
> - drm_fb_helper_release_fbi(helper);
> out_gfree:
> drm_gem_object_unreference_unlocked(&ufbdev->ufb.obj->base);
> out:
> @@ -419,7 +417,6 @@ static void udl_fbdev_destroy(struct drm_device *dev,
> struct udl_fbdev *ufbdev)
> {
> drm_fb_helper_unregister_fbi(&ufbdev->helper);
> - drm_fb_helper_release_fbi(&ufbdev->helper);
> drm_fb_helper_fini(&ufbdev->helper);
> drm_framebuffer_unregister_private(&ufbdev->ufb.base);
> drm_framebuffer_cleanup(&ufbdev->ufb.base);
> diff --git a/drivers/gpu/drm/virtio/virtgpu_fb.c b/drivers/gpu/drm/virtio/virtgpu_fb.c
> index 24f99fc9d8a4..a7990c745497 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_fb.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_fb.c
> @@ -320,7 +320,7 @@ static int virtio_gpufb_create(struct drm_fb_helper *helper,
> ret = virtio_gpu_framebuffer_init(dev, &vfbdev->vgfb,
> &mode_cmd, &obj->gem_base);
> if (ret)
> - goto err_fb_init;
> + goto err_fb_alloc;
>
> fb = &vfbdev->vgfb.base;
>
> @@ -341,8 +341,6 @@ static int virtio_gpufb_create(struct drm_fb_helper *helper,
> info->fix.mmio_len = 0;
> return 0;
>
> -err_fb_init:
> - drm_fb_helper_release_fbi(helper);
> err_fb_alloc:
> virtio_gpu_cmd_resource_inval_backing(vgdev, resid);
> err_obj_attach:
> @@ -357,7 +355,6 @@ static int virtio_gpu_fbdev_destroy(struct drm_device *dev,
> struct virtio_gpu_framebuffer *vgfb = &vgfbdev->vgfb;
>
> drm_fb_helper_unregister_fbi(&vgfbdev->helper);
> - drm_fb_helper_release_fbi(&vgfbdev->helper);
>
> if (vgfb->obj)
> vgfb->obj = NULL;
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index e62e1cf22678..7d5d0dba10fc 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -250,7 +250,6 @@ int drm_fb_helper_restore_fbdev_mode_unlocked(struct drm_fb_helper *fb_helper);
>
> struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *fb_helper);
> void drm_fb_helper_unregister_fbi(struct drm_fb_helper *fb_helper);
> -void drm_fb_helper_release_fbi(struct drm_fb_helper *fb_helper);
> void drm_fb_helper_fill_var(struct fb_info *info, struct drm_fb_helper *fb_helper,
> uint32_t fb_width, uint32_t fb_height);
> void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch,
> @@ -355,9 +354,6 @@ drm_fb_helper_alloc_fbi(struct drm_fb_helper *fb_helper)
> static inline void drm_fb_helper_unregister_fbi(struct drm_fb_helper *fb_helper)
> {
> }
> -static inline void drm_fb_helper_release_fbi(struct drm_fb_helper *fb_helper)
> -{
> -}
>
> static inline void drm_fb_helper_fill_var(struct fb_info *info,
> struct drm_fb_helper *fb_helper,
> --
> 2.11.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Sean Paul, Software Engineer, Google / Chromium OS
More information about the dri-devel
mailing list