[PATCH 00/16] [RFC] drm fb helper cleanups

Daniel Vetter daniel.vetter at ffwll.ch
Thu Jan 24 08:20:32 PST 2013


Hi all,

This series is mostly just a bit of fallout from my modeset locking rework which
just landed, and some other things I've noticed while rearchitecting the modeset
infrastructure for i915.k in 3.7.

First two patches are for omapdrm, but included here since they depend upon the
locking rework in drm-next. Dunno what to do with these patches, so I'll just
drop them here. Rob, you really need to put the finishing touches on
omapdrm and move it out of staging!

The remainder just mostly cleans up the fb helper interfaces and how the helper
code calls down into drivers. Icing on the cake is a good doc update. I'm rather
happy with what the fbdev helper code now looks like after this. A few areas
with potential for improvement remain though:

- Locking around setup/teardown smells a bit fishy, but that ties in with the
  fbdev setup locking (which is insane) and the drm core setup locking (which is
  riddled with legacy stuff and also ripe for some overhaul). I think most of
  pertaining the fbdev emulation is safe though.

- Much worse is the situation around the panic, sysrq and kdbg handlers - those
  simply grab no locks at all. Safe for the ->blank callback, which may not
  sleep since it can be called while the kernel panics in interrupt context. Bug
  spotted by Konstantin Khlebnikov, I've only simplified his originally proposed
  patch a bit.

- The fb helpers have their own special interface for handling gamma/luts. I've
  looked a bit at the code, and I'm pretty sure this can be reworked to only use
  the real kms interfaces for updating the gamma table. That would leave the
  fb helpers with ->best_encoder and ->fb_probe as the two only special
  interfaces. But reworking the gamma code is a bit of work, so I've postponed
  it for now.

Comments, flames, reviews and testing highly welcome.

Cheers, Daniel

Daniel Vetter (16):
  omapdrm: only take crtc->mutex in crtc callbacks
  omapdrm: simply locking in the fb debugfs file
  drm: review locking for drm_fb_helper_restore_fbdev_mode
  drm/fb-helper: kill drm_fb_helper_restore
  drm/fb-helper: unexport drm_fb_helper_panic
  drm/fb-helper: inline drm_fb_helper_single_add_all_connectors
  drm/fb-helper: unexport drm_fb_helper_single_fb_probe
  drm/tegra: don't set up initial fbcon config twice
  drm/fb-helper: don't disable everything in initial_config
  drm/i915: rip out helper->disable noop functions
  drm/fb-helper: fixup up set_config semantics
  drm/fb-helper: directly call set_par from the hotplug handler
  drm/fb-helper: streamline drm_fb_helper_single_fb_probe
  drm/<drivers>: simplify ->fb_probe callback
  drm/fb-helper: improve kerneldoc
  drm/fb-helper: don't sleep for screen unblank when an oopps is in
    progress

 drivers/gpu/drm/ast/ast_fb.c              |   26 +---
 drivers/gpu/drm/cirrus/cirrus_fbdev.c     |   26 +---
 drivers/gpu/drm/drm_fb_cma_helper.c       |   27 +---
 drivers/gpu/drm/drm_fb_helper.c           |  216 +++++++++++++++++++++--------
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c |   40 +-----
 drivers/gpu/drm/gma500/framebuffer.c      |   14 +-
 drivers/gpu/drm/i915/intel_crt.c          |    1 -
 drivers/gpu/drm/i915/intel_ddi.c          |    1 -
 drivers/gpu/drm/i915/intel_display.c      |   20 +--
 drivers/gpu/drm/i915/intel_dp.c           |    1 -
 drivers/gpu/drm/i915/intel_drv.h          |    1 -
 drivers/gpu/drm/i915/intel_dvo.c          |    1 -
 drivers/gpu/drm/i915/intel_fb.c           |   23 +--
 drivers/gpu/drm/i915/intel_hdmi.c         |    1 -
 drivers/gpu/drm/i915/intel_lvds.c         |    1 -
 drivers/gpu/drm/i915/intel_sdvo.c         |    1 -
 drivers/gpu/drm/i915/intel_tv.c           |    1 -
 drivers/gpu/drm/mgag200/mgag200_fb.c      |   26 +---
 drivers/gpu/drm/nouveau/nouveau_fbcon.c   |   27 +---
 drivers/gpu/drm/radeon/radeon_fb.c        |   25 +---
 drivers/gpu/drm/tegra/fb.c                |    4 -
 drivers/gpu/drm/udl/udl_fb.c              |   26 +---
 drivers/staging/omapdrm/omap_crtc.c       |   12 +-
 drivers/staging/omapdrm/omap_debugfs.c    |   14 --
 drivers/staging/omapdrm/omap_fbdev.c      |   21 +--
 include/drm/drm_fb_helper.h               |    5 -
 26 files changed, 227 insertions(+), 334 deletions(-)

-- 
1.7.10.4



More information about the dri-devel mailing list