diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-10-07 10:43:04 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-10-07 10:43:04 -0400 |
commit | a56e74f546b64be93731e42d83baf5b538cc1b11 (patch) | |
tree | 18f6dee45d801e57ac9db2a31664b0d5c0762c50 /drivers/gpu/drm/i915/i915_gem.c | |
parent | d08e2e09042bd3f7ef66a35cb4bb92794ab26bb2 (diff) | |
parent | e4e7f10bfc4069925e99cc4b428c3434e30b6c3f (diff) |
Merge branch 'arm-aesbs' of git://git.linaro.org/people/ardbiesheuvel/linux-arm into devel-stable
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 | } |