1. 27 12月, 2016 1 次提交
  2. 19 12月, 2016 1 次提交
  3. 18 12月, 2016 1 次提交
  4. 28 11月, 2016 1 次提交
  5. 22 11月, 2016 1 次提交
  6. 16 11月, 2016 1 次提交
    • G
      drm/fence: add out-fences support · beaf5af4
      Gustavo Padovan 提交于
      Support DRM out-fences by creating a sync_file with a fence for each CRTC
      that sets the OUT_FENCE_PTR property.
      
      We use the out_fence pointer received in the OUT_FENCE_PTR prop to send
      the sync_file fd back to userspace.
      
      The sync_file and fd are allocated/created before commit, but the
      fd_install operation only happens after we know that commit succeed.
      
      v2: Comment by Rob Clark:
      	- Squash commit that adds DRM_MODE_ATOMIC_OUT_FENCE flag here.
      
          Comment by Daniel Vetter:
      	- Add clean up code for out_fences
      
      v3: Comments by Daniel Vetter:
      	- create DRM_MODE_ATOMIC_EVENT_MASK
      	- userspace should fill out_fences_ptr with the crtc_ids for which
      	it wants fences back.
      
      v4: Create OUT_FENCE_PTR properties and remove old approach.
      
      v5: Comments by Brian Starkey:
      	- Remove extra fence_get() in atomic_ioctl()
      	- Check ret before iterating on the crtc_state
      	- check ret before fd_install
      	- set fence_state to NULL at the beginning
      	- check fence_state->out_fence_ptr before put_user()
      	- change order of fput() and put_unused_fd() on failure
      
           - Add access_ok() check to the out_fence_ptr received
           - Rebase after fence -> dma_fence rename
           - Store out_fence_ptr in the drm_atomic_state
           - Split crtc_setup_out_fence()
           - return -1 as out_fence with TEST_ONLY flag
      
      v6: Comments by Daniel Vetter
      	- Add prepare/unprepare_crtc_signaling()
      	- move struct drm_out_fence_state to drm_atomic.c
      	- mark get_crtc_fence() as static
      
          Comments by Brian Starkey
      	- proper set fence_ptr fence_state array
      	- isolate fence_idx increment
      
          - improve error handling
      
      v7: Comments by Daniel Vetter
      	- remove prefix from internal functions
      	- make out_fence_ptr an s64 pointer
      	- degrade DRM_INFO to DRM_DEBUG_ATOMIC when put_user fail
      	- fix doc issues
      	- filter out OUT_FENCE_PTR == NULL and do not fail in this case
      	- add complete_crtc_signalling()
      	- krealloc fence_state on demand
      
          Comment by Brian Starkey
      	- remove unused crtc_state arg from get_out_fence()
      
      v8: Comment by Brian Starkey
      	- cancel events before check for !fence_state
      	- convert a few lefovers u64 types for out_fence_ptr
      	- fix memleak by assign fence_state earlier after realloc
      	- proper accout num_fences in case of error
      
      v9: Comment by Brian Starkey
      	- memset last position of fence_state after krealloc
          Comments by Sean Paul
      	- pass install_fds in complete_crtc_signaling() instead of ret
      
           - put_user(-1, fence_ptr) when decoding props
      
      v10: Comment by Brian Starkey
      	- remove unneeded num_fences increment on error path
      	- kfree fence_state after installing fences fd
      
      v11: rebase against latest drm-misc
      
      v12: rebase again against latest drm-misc
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Reviewed-by: Brian Starkey <brian.starkey@arm.com> (v10)
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Tested-by: Robert Foss <robert.foss@collabora.com> (v10)
      [danvet: Appease checkpatch.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1479301221-13056-1-git-send-email-gustavo@padovan.org
      beaf5af4
  7. 09 11月, 2016 1 次提交
  8. 08 11月, 2016 1 次提交
  9. 17 10月, 2016 2 次提交
  10. 22 9月, 2016 1 次提交
    • D
      drm: Extract drm_plane.[hc] · 43968d7b
      Daniel Vetter 提交于
      Just pure code movement, cleanup and polish will happen in later
      patches.
      
      v2: Don't forget all the ioctl! To extract those cleanly I decided to
      put check_src_coords into drm_framebuffer.c (and give it a
      drm_framebuffer_ prefix), since that just checks framebuffer
      constraints.
      
      v3: rebase over PAGE_FLIP_TARGET.
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      
      [seanpaul]
      This patch as posted on the list was rebased on:
      
      commit 6f00975c
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Sat Aug 20 12:22:11 2016 +0200
      
          drm: Reject page_flip for !DRIVER_MODESET
      
      so as a result of moving the page_flip ioctl, this fix has
      been rolled into this patch.
      Signed-off-by: NSean Paul <seanpaul@chromium.org>
      43968d7b
  11. 10 6月, 2016 1 次提交
  12. 09 6月, 2016 1 次提交
  13. 02 6月, 2016 5 次提交
  14. 02 5月, 2016 1 次提交
  15. 06 1月, 2016 1 次提交
  16. 25 11月, 2015 1 次提交
  17. 17 11月, 2015 1 次提交
  18. 27 7月, 2015 1 次提交
  19. 19 6月, 2015 1 次提交
  20. 26 5月, 2015 3 次提交
  21. 21 5月, 2015 1 次提交
  22. 18 5月, 2015 1 次提交
  23. 13 5月, 2015 1 次提交
  24. 12 4月, 2015 1 次提交
  25. 05 1月, 2015 2 次提交
    • D
      drm/atomic: Hide drm.ko internal interfaces · a97df1cc
      Daniel Vetter 提交于
      This is just a bit fallout from patch polishing and moving the
      get_prop logic fully into the core:
      - Drop EXPORT_SYMBOL and make the helpers static.
      - Drop kerneldoc since not used by drivers.
      - Move the cross-file function declarations only used by drm.ko
        internally to an internal header.
      
      v2: keep the gist of the comments, requested by Rob.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      a97df1cc
    • R
      drm: add atomic properties · 88a48e29
      Rob Clark 提交于
      Once a driver is using atomic helpers for modeset, the next step is to
      switch over to atomic properties.  To do this, make sure that any
      modeset objects have their ->atomic_{get,set}_property() vfuncs suitably
      populated if they have custom properties (you did already remember to
      plug in atomic-helper func for the legacy ->set_property() vfuncs,
      right?), and then set DRIVER_ATOMIC bit in driver_features flag.
      
      A new cap is introduced, DRM_CLIENT_CAP_ATOMIC, for the purposes of
      shielding legacy userspace from atomic properties.  Mostly for the
      benefit of legacy DDX drivers that do silly things like getting/setting
      each property at startup (since some of the new atomic properties will
      be able to trigger modeset).
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      [danvet: Squash in fixup patch to check for DRM_MODE_PROP_ATOMIC
      instaed of the CAP define when filtering properties. Reported by
      Tvrtko Uruslin, acked by Rob.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      88a48e29
  26. 19 12月, 2014 2 次提交
  27. 18 12月, 2014 1 次提交
    • D
      drm/atomic: Introduce state->obj backpointers · 07cc0ef6
      Daniel Vetter 提交于
      Useful since this way we can pass around just the state objects and
      will get ther real object, too.
      
      Specifically this allows us to again simplify the parameters for
      set_crtc_for_plane.
      
      v2: msm already has it's own specific plane_reset hook, don't forget
      that one!
      
      v3: Fixup kerneldoc, reported by 0-day builder.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: Rob Clark <robdclark@gmail.com> (v2)
      Tested-by: Rob Clark <robdclark@gmail.com> (v2)
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      07cc0ef6
  28. 27 11月, 2014 1 次提交
    • R
      drm/atomic: track bitmask of planes attached to crtc · 6ddd388a
      Rob Clark 提交于
      Chasing plane->state->crtc of planes that are *not* part of the same
      atomic update is racy, making it incredibly awkward (or impossible) to
      do something simple like iterate over all planes and figure out which
      ones are attached to a crtc.
      
      Solve this by adding a bitmask of currently attached planes in the
      crtc-state.
      
      Note that the transitional helpers do not maintain the plane_mask.  But
      they only support the legacy ioctls, which have sufficient brute-force
      locking around plane updates that they can continue to loop over all
      planes to see what is attached to a crtc the old way.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      [danvet:
      - Drop comments about locking in set_crtc_for_plane since they're a
        bit misleading - we already should hold lock for the current crtc.
      - Also WARN_ON if get_state on the old crtc fails since that should
        have been done already.
      - Squash in fixup to check get_plane_state return value, reported by
        Dan Carpenter and acked by Rob Clark.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      6ddd388a
  29. 25 11月, 2014 1 次提交
  30. 07 11月, 2014 1 次提交
    • D
      drm/atomic: Refcounting for plane_state->fb · 321ebf04
      Daniel Vetter 提交于
      So my original plan was that the drm core refcounts framebuffers like
      with the legacy ioctls. But that doesn't work for a bunch of reasons:
      
      - State objects might live longer than until the next fb change
        happens for a plane. For example delayed cleanup work only happens
        _after_ the pageflip ioctl has completed. So this definitely doesn't
        work without the plane state holding its own references.
      
      - The other issue is transition from legacy to atomic implementations,
        where the driver works under a mix of both worlds. Which means
        legacy paths might not properly update the ->fb pointer under
        plane->state->fb. Which is a bit a problem when then someone comes
        around and _does_ try to clean it up when it's long gone.
      
      The second issue is just a bit a transition bug, since drivers should
      update plane->state->fb in all the paths that aren't converted yet.
      But a bit more robustness for the transition can't hurt - we pull
      similar tricks with cleaning up the old fb in the transitional helpers
      already.
      
      The pattern for drivers that transition is
      
      	if (plane->state)
      		drm_atomic_set_fb_for_plane(plane->state, plane->fb);
      
      inserted after the fb update has logically completed at the end of
      ->set_config (or ->set_base/mode_set if using the crtc helpers),
      ->page_flip, ->update_plane or any other entry point which updates
      plane->fb.
      
      v2: Update kerneldoc - copypasta fail.
      
      v3: Fix spelling in the commit message (Sean).
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      321ebf04
  31. 06 11月, 2014 1 次提交
    • D
      drm: Global atomic state handling · cc4ceb48
      Daniel Vetter 提交于
      Some differences compared to Rob's patches again:
      - Dropped the committed and checked booleans. Checking will be
        internally enforced by always calling ->atomic_check before
        ->atomic_commit. And async handling needs to be solved differently
        because the current scheme completely side-steps ww mutex deadlock
        avoidance (and so either reinvents a new deadlock avoidance wheel or
        like the current code just deadlocks).
      
      - State for connectors needed to be added, since now they have a
        full-blown drm_connector_state (so that drivers have something to
        attach their own stuff to).
      
      - Refcounting is gone. I plane to solve async updates differently,
        since the lock-passing scheme doesn't cut it (since it abuses ww
        mutexes). Essentially what we need for async is a simple ownership
        transfer from the caller to the driver. That doesn't need full-blown
        refcounting.
      
      - The acquire ctx is a pointer. Real atomic callers should have that
        on their stack, legacy entry points need to put the right one
        (obtained by drm_modeset_legacy_acuire_ctx) in there.
      
      - I've dropped all hooks except check/commit. All the begin/end
        handling is done by core functions and is the same.
      
      - commit/check are just thin wrappers that ensure that ->check is
        always called.
      
      - To help out with locking in the legacy implementations I've added a
        helper to just grab all locks in the backoff case.
      
      v2: Add notices that check/commit can fail with EDEADLK.
      
      v3:
      - More consistent naming for state_alloc.
      - Add state_clear which is needed for backoff and retry.
      
      v4: Planes/connectors can switch between crtcs, and we need to be
      careful that we grab the state (and locks) for both the old and new
      crtc. Improve the interface functions to ensure this.
      
      v5: Add functions to grab affected connectors for a crtc and to recompute
      the crtc->enable state. This is useful for both helper and atomic ioctl
      code when e.g. removing a connector.
      
      v6: Squash in fixup from Fengguang to use ERR_CAST.
      
      v7: Add debug output.
      
      v8: Make checkpatch happy about kcalloc argument ordering.
      
      v9: Improve kerneldoc in drm_crtc.h
      
      v10:
      - Fix another kcalloc argument misorder I've missed.
      - More polish for kerneldoc.
      
      v11: Clarify the ownership rules for the state object. The new rule is
      that a successful drm_atomic_commit (whether synchronous or asnyc)
      always inherits the state and is responsible for the clean-up. That
      way async and sync ->commit functions are more similar.
      
      v12: A few bugfixes:
      - Assign state->state pointers correctly when grabbing state objects -
        we need to link them up with the global state.
      - Handle a NULL crtc in set_crtc_for_plane to simplify code flow a bit
        for the callers of this function.
      
      v13: Review from Sean:
      - kerneldoc spelling fixes
      - Don't overallocate states->planes.
      - Handle NULL crtc in set_crtc_for_connector.
      
      v14: Sprinkle __must_check over all functions which do wait/wound
      locking to make sure callers don't forget this. Since I have ;-)
      
      v15: Be more explicit in the kerneldoc when functions can return
      -EDEADLK what to do. And that every other -errno is fatal.
      
      v16: Indent with tabs instead of space, spotted by Ander.
      
      v17: Review from Thierry, small kerneldoc and other naming polish.
      
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Ander Conselvan de Oliveira <conselvan2@gmail.com>
      Cc: Daniel Thompson <daniel.thompson@linaro.org>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      cc4ceb48