[PATCH v2 00/18] Introduce DRM_FB_HELPER_DEFAULT_OPS for struct fb_ops

Daniel Vetter daniel at ffwll.ch
Mon Nov 14 07:02:12 UTC 2016


On Mon, Nov 14, 2016 at 12:03:10AM +0100, Stefan Christ wrote:
> Hi,
> 
> this is the second version of the refactoring work suggested by Daniel Vetter
> in the email:
> 
>    https://lists.freedesktop.org/archives/dri-devel/2016-July/113237.html
> 
> The define DRM_FB_HELPER_DEFAULT_OPS provides the drm_fb_helper default
> implementations for functions in struct fb_ops. A drm driver can use it like:
> 
>     static struct fb_ops drm_fbdev_cma_ops = {
>         .owner          = THIS_MODULE,
>         DRM_FB_HELPER_DEFAULT_OPS,
>         /* driver specific implementations */
>     };
> 
> The first patch that adds the helper define was already accepted into the
> kernel release candidate v4.9-rc1.
> 
> For the new stuff:
> 
> Implementing fb_debug_enter and fb_debug_leave callbacks is not without
> pitfalls. It was necessary that driver also implements the mode_set_base_atomic
> callback in struct drm_crtc_helper_funcs. Otherwise it may segfaults. The first
> patch in this series changes that and introduces a check for it.  Now functions
> drm_fb_helper_debug_(enter|leave) can be used without implementing callback
> mode_set_base_atomic. At least the drm drivers armada, ast, qxl, udl and virtio
> are affected by this issue. It seems that the code path was never executed for
> these drivers and nobody noticed.
> 
> Refactoring patches for ast, cirrus and mgag200 are dropped.  I leave it to
> Daniel if additional drivers should not be converted.
> 
> This series is based on tag v4.9-rc1 and applies cleanly onto drm-next, too.
> 
> Kind regards,
> 	Stefan Christ
> 
> 
> Changes in v2:
> - add patch 'fix segfaults in drm_fb_helper_debug_*'.
>   So functions drm_fb_helper_debug_(enter|leave) can be used
>   unconditionally.
> - add patch 'add fb_debug_* to DRM_FB_HELPER_DEFAULT_OPS' that
>   uses drm_fb_helper_debug_(enter|leave) to implement
>   fb_debug_(enter|leave). It depends on the previous patch
>   to avoid regressions.
> - Drop patches for drm drivers 'ast', 'cirrus' and 'mgag200'
>   since they reimplemented most of the fb_ops callbacks anyway.
> - Also remove fb_debug_(enter|leave) callbacks in fb_ops all
>   refactoring patches.

Applied the entire series to drm-misc, thanks.
-Daniel

> 
> 
> Stefan Christ (18):
>   drm/fb-helper: fix segfaults in drm_fb_helper_debug_*
>   drm/fb-helper: add fb_debug_* to DRM_FB_HELPER_DEFAULT_OPS
>   drm/amdgpu: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/armada: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/bochs: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/fb_cma_helper: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/exynos: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/nouveau: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/qxl: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/rockchip: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/radeon: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/tegra: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/udl: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/msm: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/virtio: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/omapdrm: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/i915: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
>   drm/gma500: use DRM_FB_HELPER_DEFAULT_OPS for fb_ops
> 
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c        |  8 +-------
>  drivers/gpu/drm/armada/armada_fbdev.c         |  8 +-------
>  drivers/gpu/drm/bochs/bochs_fbdev.c           |  6 +-----
>  drivers/gpu/drm/drm_fb_cma_helper.c           |  6 +-----
>  drivers/gpu/drm/drm_fb_helper.c               |  6 ++++++
>  drivers/gpu/drm/exynos/exynos_drm_fbdev.c     |  6 +-----
>  drivers/gpu/drm/gma500/framebuffer.c          | 12 +++---------
>  drivers/gpu/drm/i915/intel_fbdev.c            |  5 +----
>  drivers/gpu/drm/msm/msm_fbdev.c               |  7 +------
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c       | 16 ++--------------
>  drivers/gpu/drm/omapdrm/omap_fbdev.c          |  5 +----
>  drivers/gpu/drm/qxl/qxl_fb.c                  |  8 +-------
>  drivers/gpu/drm/radeon/radeon_fb.c            |  8 +-------
>  drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c |  6 +-----
>  drivers/gpu/drm/tegra/fb.c                    |  6 +-----
>  drivers/gpu/drm/udl/udl_fb.c                  |  8 +-------
>  drivers/gpu/drm/virtio/virtgpu_fb.c           |  8 +-------
>  include/drm/drm_fb_helper.h                   |  4 +++-
>  18 files changed, 28 insertions(+), 105 deletions(-)
> 
> -- 
> 2.7.3
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list