[PATCH 00/17] prepare for atomic/nuclear modeset/pageflip

Rob Clark robdclark at gmail.com
Sat May 24 11:30:09 PDT 2014


One more time, with feeling..

Previous revision of series:
http://lists.freedesktop.org/archives/dri-devel/2014-March/055806.html

And if you prefer, in git form:
http://cgit.freedesktop.org/~robclark/linux/log/?h=cold-fusion
git://people.freedesktop.org/~robclark/linux cold-fusion

This series does not include the actual atomic ioctl, but it does
include all the needed infrastructure changes.

Compared to previous revision, I've split out drm_modeset_acquire_ctx
from drm_atomic_state, so that we can ww acquire mode_config and crtc
locks outside of atomic transactions.  (Which keeps lockdep happy wrt.
drm_modeset_lock_all().)  I also got to the point in juggling things
around where I wanted to let the compiler type checking do it's job,
so 's/void *state/struct drm_atomic_state *state/g'.

At this point, I've tested this on i915 (few different generation
laptops), radeon, and msm.  And of course w/ ww debug (deadlock in-
jection) enabled.  So I think all the locking related paths should
be covered.

I believe Thierry has tested a slighly older revision on tegra.  I
would of course appreciate more testing on other drivers for which I
don't have the hw.  But I think it is pretty much ready to go.  I do
still owe some docs updates, I will send some patches for that in
the near future, but didn't want to hold up giving others a chance
to start banging on this.

Rob Clark (14):
  drm: fix typo
  drm: add atomic fxns
  drm: convert crtc and mode_config to ww_mutex
  drm: add object property type
  drm: add signed-range property type
  drm: helpers to find mode objects
  drm: split propvals out and blob property support
  drm: allow FB's in drm_mode_object_find
  drm: convert plane to properties/state
  drm: convert crtc to properties/state
  drm: push locking down into restore_fbdev_mode
  drm/msm: add atomic support
  drm: spiff out FB refcnting traces
  drm: more conservative locking

Sean Paul (1):
  drm: Fix up the atomic legacy paths so they work

Ville Syrjälä (2):
  drm: Allow drm_mode_object_find() to look up an object of any type
  drm: Refactor object property check code

 drivers/gpu/drm/Makefile                    |    2 +-
 drivers/gpu/drm/armada/armada_crtc.c        |   14 +-
 drivers/gpu/drm/armada/armada_fbdev.c       |    4 +-
 drivers/gpu/drm/armada/armada_output.c      |    3 +-
 drivers/gpu/drm/armada/armada_overlay.c     |   14 +-
 drivers/gpu/drm/ast/ast_drv.c               |    6 +
 drivers/gpu/drm/ast/ast_drv.h               |    1 +
 drivers/gpu/drm/ast/ast_mode.c              |    1 +
 drivers/gpu/drm/cirrus/cirrus_drv.c         |    6 +
 drivers/gpu/drm/cirrus/cirrus_drv.h         |    1 +
 drivers/gpu/drm/cirrus/cirrus_mode.c        |    1 +
 drivers/gpu/drm/drm_atomic.c                |  720 +++++++++++++
 drivers/gpu/drm/drm_crtc.c                  | 1534 ++++++++++++++++++---------
 drivers/gpu/drm/drm_crtc_helper.c           |    6 +-
 drivers/gpu/drm/drm_fb_cma_helper.c         |   15 +-
 drivers/gpu/drm/drm_fb_helper.c             |   69 +-
 drivers/gpu/drm/drm_modes.c                 |    4 +-
 drivers/gpu/drm/drm_modeset_lock.c          |  159 +++
 drivers/gpu/drm/drm_plane_helper.c          |    2 +
 drivers/gpu/drm/drm_probe_helper.c          |   10 +-
 drivers/gpu/drm/drm_sysfs.c                 |    4 +-
 drivers/gpu/drm/exynos/exynos_drm_crtc.c    |   11 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c     |    7 +
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c   |    8 +-
 drivers/gpu/drm/exynos/exynos_drm_plane.c   |   11 +-
 drivers/gpu/drm/gma500/cdv_intel_crt.c      |    4 +-
 drivers/gpu/drm/gma500/cdv_intel_display.c  |    1 +
 drivers/gpu/drm/gma500/cdv_intel_dp.c       |    7 +-
 drivers/gpu/drm/gma500/cdv_intel_hdmi.c     |    7 +-
 drivers/gpu/drm/gma500/cdv_intel_lvds.c     |   16 +-
 drivers/gpu/drm/gma500/mdfld_dsi_output.c   |   12 +-
 drivers/gpu/drm/gma500/oaktrail_lvds.c      |    6 +-
 drivers/gpu/drm/gma500/psb_drv.c            |   11 +-
 drivers/gpu/drm/gma500/psb_drv.h            |    1 +
 drivers/gpu/drm/gma500/psb_intel_display.c  |    1 +
 drivers/gpu/drm/gma500/psb_intel_drv.h      |    4 +-
 drivers/gpu/drm/gma500/psb_intel_lvds.c     |   16 +-
 drivers/gpu/drm/gma500/psb_intel_sdvo.c     |   23 +-
 drivers/gpu/drm/i2c/ch7006_drv.c            |    4 +-
 drivers/gpu/drm/i915/i915_debugfs.c         |   12 +-
 drivers/gpu/drm/i915/i915_drv.c             |   16 +-
 drivers/gpu/drm/i915/i915_irq.c             |    6 +-
 drivers/gpu/drm/i915/intel_crt.c            |    4 +-
 drivers/gpu/drm/i915/intel_display.c        |   24 +-
 drivers/gpu/drm/i915/intel_dp.c             |   25 +-
 drivers/gpu/drm/i915/intel_drv.h            |    1 +
 drivers/gpu/drm/i915/intel_fbdev.c          |    6 +-
 drivers/gpu/drm/i915/intel_hdmi.c           |    7 +-
 drivers/gpu/drm/i915/intel_lvds.c           |   10 +-
 drivers/gpu/drm/i915/intel_opregion.c       |    4 +-
 drivers/gpu/drm/i915/intel_overlay.c        |    4 +-
 drivers/gpu/drm/i915/intel_panel.c          |    8 +-
 drivers/gpu/drm/i915/intel_sdvo.c           |   23 +-
 drivers/gpu/drm/i915/intel_sprite.c         |    3 +-
 drivers/gpu/drm/i915/intel_tv.c             |   12 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c       |    7 +
 drivers/gpu/drm/mgag200/mgag200_drv.h       |    1 +
 drivers/gpu/drm/mgag200/mgag200_mode.c      |    1 +
 drivers/gpu/drm/msm/Makefile                |    1 +
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c    |   70 +-
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c     |    6 +
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h     |    1 +
 drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c   |   14 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c    |   69 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c     |    6 +
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h     |    2 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c   |   14 +-
 drivers/gpu/drm/msm/msm_atomic.c            |  141 +++
 drivers/gpu/drm/msm/msm_drv.c               |   33 +-
 drivers/gpu/drm/msm/msm_drv.h               |    8 +
 drivers/gpu/drm/msm/msm_gem.c               |   24 +-
 drivers/gpu/drm/msm/msm_gem.h               |   13 +
 drivers/gpu/drm/msm/msm_kms.h               |    1 +
 drivers/gpu/drm/nouveau/dispnv04/crtc.c     |    1 +
 drivers/gpu/drm/nouveau/dispnv04/overlay.c  |   13 +-
 drivers/gpu/drm/nouveau/dispnv04/tvnv17.c   |    3 +-
 drivers/gpu/drm/nouveau/nouveau_connector.c |    7 +-
 drivers/gpu/drm/nouveau/nouveau_drm.c       |    7 +
 drivers/gpu/drm/nouveau/nouveau_drm.h       |    1 +
 drivers/gpu/drm/nouveau/nv50_display.c      |    1 +
 drivers/gpu/drm/omapdrm/omap_crtc.c         |   26 +-
 drivers/gpu/drm/omapdrm/omap_drv.c          |   16 +-
 drivers/gpu/drm/omapdrm/omap_drv.h          |    4 +-
 drivers/gpu/drm/omapdrm/omap_plane.c        |   14 +-
 drivers/gpu/drm/qxl/qxl_display.c           |    6 +-
 drivers/gpu/drm/qxl/qxl_drv.c               |    9 +
 drivers/gpu/drm/radeon/radeon_connectors.c  |    9 +-
 drivers/gpu/drm/radeon/radeon_display.c     |    2 +
 drivers/gpu/drm/radeon/radeon_drv.c         |    9 +
 drivers/gpu/drm/rcar-du/rcar_du_crtc.c      |    2 +
 drivers/gpu/drm/rcar-du/rcar_du_drv.c       |    7 +
 drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c   |    3 +-
 drivers/gpu/drm/rcar-du/rcar_du_plane.c     |   12 +-
 drivers/gpu/drm/rcar-du/rcar_du_vgacon.c    |    3 +-
 drivers/gpu/drm/shmobile/shmob_drm_crtc.c   |    6 +-
 drivers/gpu/drm/shmobile/shmob_drm_drv.c    |    7 +
 drivers/gpu/drm/shmobile/shmob_drm_plane.c  |    2 +
 drivers/gpu/drm/tegra/fb.c                  |    7 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c        |    5 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c         |    6 +
 drivers/gpu/drm/tilcdc/tilcdc_drv.h         |    1 +
 drivers/gpu/drm/tilcdc/tilcdc_slave.c       |    3 +-
 drivers/gpu/drm/udl/udl_connector.c         |    6 +-
 drivers/gpu/drm/udl/udl_drv.c               |    8 +
 drivers/gpu/drm/udl/udl_modeset.c           |    2 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c         |    7 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h         |    1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c         |   26 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.h         |    4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c         |    1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c        |    1 +
 include/drm/drmP.h                          |   85 +-
 include/drm/drm_atomic.h                    |  170 +++
 include/drm/drm_crtc.h                      |  326 +++++-
 include/drm/drm_fb_helper.h                 |    3 +-
 include/drm/drm_modeset_lock.h              |  130 +++
 include/uapi/drm/drm_mode.h                 |   18 +
 117 files changed, 3401 insertions(+), 882 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_atomic.c
 create mode 100644 drivers/gpu/drm/drm_modeset_lock.c
 create mode 100644 drivers/gpu/drm/msm/msm_atomic.c
 create mode 100644 include/drm/drm_atomic.h
 create mode 100644 include/drm/drm_modeset_lock.h

-- 
1.9.0



More information about the dri-devel mailing list