lkml.org 
[lkml]   [2016]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH -v4 1/8] locking/drm: Kill mutex trickery
    Poking at lock internals is not cool. Since I'm going to change the
    implementation this will break, take it out.

    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    ---
    drivers/gpu/drm/i915/i915_gem_shrinker.c | 26 +++-----------------------
    drivers/gpu/drm/msm/msm_gem_shrinker.c | 23 +++--------------------
    2 files changed, 6 insertions(+), 43 deletions(-)

    --- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
    +++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
    @@ -35,19 +35,6 @@
    #include "i915_drv.h"
    #include "i915_trace.h"

    -static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task)
    -{
    - if (!mutex_is_locked(mutex))
    - return false;
    -
    -#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_MUTEX_SPIN_ON_OWNER)
    - return mutex->owner == task;
    -#else
    - /* Since UP may be pre-empted, we cannot assume that we own the lock */
    - return false;
    -#endif
    -}
    -
    static int num_vma_bound(struct drm_i915_gem_object *obj)
    {
    struct i915_vma *vma;
    @@ -238,17 +225,10 @@ unsigned long i915_gem_shrink_all(struct

    static bool i915_gem_shrinker_lock(struct drm_device *dev, bool *unlock)
    {
    - if (!mutex_trylock(&dev->struct_mutex)) {
    - if (!mutex_is_locked_by(&dev->struct_mutex, current))
    - return false;
    -
    - if (to_i915(dev)->mm.shrinker_no_lock_stealing)
    - return false;
    -
    - *unlock = false;
    - } else
    - *unlock = true;
    + if (!mutex_trylock(&dev->struct_mutex))
    + return false;

    + *unlock = true;
    return true;
    }

    --- a/drivers/gpu/drm/msm/msm_gem_shrinker.c
    +++ b/drivers/gpu/drm/msm/msm_gem_shrinker.c
    @@ -18,29 +18,12 @@
    #include "msm_drv.h"
    #include "msm_gem.h"

    -static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task)
    -{
    - if (!mutex_is_locked(mutex))
    - return false;
    -
    -#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)
    - return mutex->owner == task;
    -#else
    - /* Since UP may be pre-empted, we cannot assume that we own the lock */
    - return false;
    -#endif
    -}
    -
    static bool msm_gem_shrinker_lock(struct drm_device *dev, bool *unlock)
    {
    - if (!mutex_trylock(&dev->struct_mutex)) {
    - if (!mutex_is_locked_by(&dev->struct_mutex, current))
    - return false;
    - *unlock = false;
    - } else {
    - *unlock = true;
    - }
    + if (!mutex_trylock(&dev->struct_mutex))
    + return false;

    + *unlock = true;
    return true;
    }


    \
     
     \ /
      Last update: 2016-10-07 17:36    [W:3.332 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site