1. 28 Aug, 2017 7 commits
    • Jason Ekstrand's avatar
      drm/syncobj: Add a CREATE_SIGNALED flag · 1fc08218
      Jason Ekstrand authored
      This requests that the driver create the sync object such that it
      already has a signaled dma_fence attached.  Because we don't need
      anything in particular (just something signaled), we use a dummy null
      fence.  This is useful for Vulkan which has a similar flag that can be
      passed to vkCreateFence.
      Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      1fc08218
    • Jason Ekstrand's avatar
      drm/syncobj: Add a callback mechanism for replace_fence (v3) · 9c19fb10
      Jason Ekstrand authored
      It is useful in certain circumstances to know when the fence is replaced
      in a syncobj.  Specifically, it may be useful to know when the fence
      goes from NULL to something valid.  This does make syncobj_replace_fence
      a little more expensive because it has to take a lock but, in the common
      case where there is no callback list, it spends a very short amount of
      time inside the lock.
      
      v2:
       - Don't lock in drm_syncobj_fence_get.  We only really need to lock
         around fence_replace to make the callback work.
      v3:
       - Fix the cb_list comment to make kbuild happy
      Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      9c19fb10
    • Dave Airlie's avatar
      drm/syncobj: add sync obj wait interface. (v8) · 5e60a10e
      Dave Airlie authored
      This interface will allow sync object to be used to back
      Vulkan fences. This API is pretty much the vulkan fence waiting
      API, and I've ported the code from amdgpu.
      
      v2: accept relative timeout, pass remaining time back
      to userspace.
      v3: return to absolute timeouts.
      v4: absolute zero = poll,
          rewrite any/all code to have same operation for arrays
          return -EINVAL for 0 fences.
      v4.1: fixup fences allocation check, use u64_to_user_ptr
      v5: move to sec/nsec, and use timespec64 for calcs.
      v6: use -ETIME and drop the out status flag. (-ETIME
      is suggested by ickle, I can feel a shed painting)
      v7: talked to Daniel/Arnd, use ktime and ns everywhere.
      v8: be more careful in the timeout calculations
          use uint32_t for counter variables so we don't overflow
          graciously handle -ENOINT being returned from dma_fence_wait_timeout
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Acked-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      5e60a10e
    • Jason Ekstrand's avatar
      i915: Use drm_syncobj_fence_get · afca4216
      Jason Ekstrand authored
      Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      afca4216
    • Jason Ekstrand's avatar
      drm/syncobj: Add a race-free drm_syncobj_fence_get helper (v2) · 309a5482
      Jason Ekstrand authored
      The atomic exchange operation in drm_syncobj_replace_fence is sufficient
      for the case where it races with itself.  However, if you have a race
      between a replace_fence and dma_fence_get(syncobj->fence), you may end
      up with the entire replace_fence happening between the point in time
      where the one thread gets the syncobj->fence pointer and when it calls
      dma_fence_get() on it.  If this happens, then the reference may be
      dropped before we get a chance to get a new one.  The new helper uses
      dma_fence_get_rcu_safe to get rid of the race.
      
      This is also needed because it allows us to do a bit more than just get
      a reference in drm_syncobj_fence_get should we wish to do so.
      
      v2:
       - RCU isn't that scary
       - Call rcu_read_lock/unlock
       - Don't rename fence to _fence
       - Make the helper static inline
      Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Acked-by: Christian König <christian.koenig@amd.com> (v1)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      309a5482
    • Jason Ekstrand's avatar
      drm/syncobj: Rename fence_get to find_fence · afaf5923
      Jason Ekstrand authored
      The function has far more in common with drm_syncobj_find than with
      any in the get/put functions.
      Signed-off-by: default avatarJason Ekstrand <jason@jlekstrand.net>
      Acked-by: Christian König <christian.koenig@amd.com> (v1)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      afaf5923
    • John Stultz's avatar
      drm: kirin: Add mode_valid logic to avoid mode clocks we can't generate · 71f23543
      John Stultz authored
      Currently the hikey dsi logic cannot generate accurate byte
      clocks values for all pixel clock values. Thus if a mode clock
      is selected that cannot match the calculated byte clock, the
      device will boot with a blank screen.
      
      This patch uses the new mode_valid callback (many thanks to
      Jose Abreu for upstreaming it!) to ensure we don't select
      modes we cannot generate.
      
      Also, since the ade crtc code will adjust the mode in mode_set,
      this patch also adds a mode_fixup callback which we use to make
      sure we are validating the mode clock that will eventually be
      used.
      
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Xinliang Liu <xinliang.liu@linaro.org>
      Cc: Xinliang Liu <z.liuxinliang@hisilicon.com>
      Cc: Rongrong Zou <zourongrong@gmail.com>
      Cc: Xinwei Kong <kong.kongxinwei@hisilicon.com>
      Cc: Chen Feng <puck.chen@hisilicon.com>
      Cc: Jose Abreu <Jose.Abreu@synopsys.com>
      Cc: Archit Taneja <architt@codeaurora.org>
      Cc: dri-devel@lists.freedesktop.org
      Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
      Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
      Reviewed-by: default avatarXinliang Liu <xinliang.liu@linaro.org>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      71f23543
  2. 24 Aug, 2017 4 commits
  3. 23 Aug, 2017 4 commits
  4. 22 Aug, 2017 25 commits