[PATCH 2/2] skip-trylock

Chris Wilson chris at chris-wilson.co.uk
Mon Nov 5 21:14:35 UTC 2018


---
 drivers/gpu/drm/i915/i915_gem_shrinker.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index ea90d3a0d511..06354dd0c513 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -45,15 +45,11 @@ static bool shrinker_lock(struct drm_i915_private *i915, bool *unlock)
 
 	case MUTEX_TRYLOCK_FAILED:
 		*unlock = false;
-		preempt_disable();
-		do {
-			cpu_relax();
-			if (mutex_trylock(&i915->drm.struct_mutex)) {
-				*unlock = true;
-				break;
-			}
-		} while (!need_resched());
-		preempt_enable();
+		if (current_is_kswapd()) {
+			mutex_lock_nested(&i915->drm.struct_mutex,
+					  SINGLE_DEPTH_NESTING);
+			*unlock = true;
+		}
 		return *unlock;
 
 	case MUTEX_TRYLOCK_SUCCESS:
-- 
2.19.1



More information about the Intel-gfx-trybot mailing list