diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 8507c6d1e642..cdfb9da0e4ce 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -1392,14 +1392,11 @@ out: | |||
| 1392 | if (i915_terminally_wedged(&dev_priv->gpu_error)) | 1392 | if (i915_terminally_wedged(&dev_priv->gpu_error)) |
| 1393 | return VM_FAULT_SIGBUS; | 1393 | return VM_FAULT_SIGBUS; |
| 1394 | case -EAGAIN: | 1394 | case -EAGAIN: |
| 1395 | /* Give the error handler a chance to run and move the | 1395 | /* |
| 1396 | * objects off the GPU active list. Next time we service the | 1396 | * EAGAIN means the gpu is hung and we'll wait for the error |
| 1397 | * fault, we should be able to transition the page into the | 1397 | * handler to reset everything when re-faulting in |
| 1398 | * GTT without touching the GPU (and so avoid further | 1398 | * i915_mutex_lock_interruptible. |
| 1399 | * EIO/EGAIN). If the GPU is wedged, then there is no issue | ||
| 1400 | * with coherency, just lost writes. | ||
| 1401 | */ | 1399 | */ |
| 1402 | set_need_resched(); | ||
| 1403 | case 0: | 1400 | case 0: |
| 1404 | case -ERESTARTSYS: | 1401 | case -ERESTARTSYS: |
| 1405 | case -EINTR: | 1402 | case -EINTR: |
| @@ -4803,10 +4800,10 @@ i915_gem_inactive_count(struct shrinker *shrinker, struct shrink_control *sc) | |||
| 4803 | 4800 | ||
| 4804 | if (!mutex_trylock(&dev->struct_mutex)) { | 4801 | if (!mutex_trylock(&dev->struct_mutex)) { |
| 4805 | if (!mutex_is_locked_by(&dev->struct_mutex, current)) | 4802 | if (!mutex_is_locked_by(&dev->struct_mutex, current)) |
| 4806 | return SHRINK_STOP; | 4803 | return 0; |
| 4807 | 4804 | ||
| 4808 | if (dev_priv->mm.shrinker_no_lock_stealing) | 4805 | if (dev_priv->mm.shrinker_no_lock_stealing) |
| 4809 | return SHRINK_STOP; | 4806 | return 0; |
| 4810 | 4807 | ||
| 4811 | unlock = false; | 4808 | unlock = false; |
| 4812 | } | 4809 | } |
| @@ -4904,10 +4901,10 @@ i915_gem_inactive_scan(struct shrinker *shrinker, struct shrink_control *sc) | |||
| 4904 | 4901 | ||
| 4905 | if (!mutex_trylock(&dev->struct_mutex)) { | 4902 | if (!mutex_trylock(&dev->struct_mutex)) { |
| 4906 | if (!mutex_is_locked_by(&dev->struct_mutex, current)) | 4903 | if (!mutex_is_locked_by(&dev->struct_mutex, current)) |
| 4907 | return 0; | 4904 | return SHRINK_STOP; |
| 4908 | 4905 | ||
| 4909 | if (dev_priv->mm.shrinker_no_lock_stealing) | 4906 | if (dev_priv->mm.shrinker_no_lock_stealing) |
| 4910 | return 0; | 4907 | return SHRINK_STOP; |
| 4911 | 4908 | ||
| 4912 | unlock = false; | 4909 | unlock = false; |
| 4913 | } | 4910 | } |
