[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