Patch "drm/i915: Store a permanent error in obj->mm.pages" has been added to the 4.10-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
drm/i915: Store a permanent error in obj->mm.pages
to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-i915-store-a-permanent-error-in-obj-mm.pages.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
0d9dc306e15b59bf50db87ebcb1e2248586d4733Mon Sep 17 00:00:00 2001
From: Chris Wilson <[email protected]>
Date: Tue, 7 Mar 2017 13:20:31 +0000
Subject: drm/i915: Store a permanent error in obj->mm.pages
From: Chris Wilson <[email protected]>
commit 0d9dc306e15b59bf50db87ebcb1e2248586d4733 upstream.
Once the object has been truncated, it is unrecoverable. To facilitate detection of this state store the error in obj->mm.pages.
This is required for the next patch which should be applied to v4.10 (via stable), so we also need to mark this patch for backporting. In that regard, let's consider this to be a fix/improvement too.
v2: Avoid dereferencing the ERR_PTR when freeing the object.
--- drivers/gpu/drm/i915/i915_gem.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/gpu/drm/i915/i915_gem.c +6 -3
@@ -2184,6 +2184,7 @@ i915_gem_object_truncate(struct drm_i915*/ shmem_truncate_range (file_inode (obj->base.filp),0 , (loff_t)-1 ); obj->mm.madv = __I915_MADV_PURGED; + obj->mm.pages =ERR_PTR (-EFAULT ); }/* Try to discard unwanted pages */
@@ -2283,7 +2284,9 @@ void __i915_gem_object_put_pages(struct__i915_gem_object_reset_page_iter (obj); - obj->ops->put_pages (obj, pages); +if (!IS_ERR (pages)) + obj->ops->put_pages (obj, pages); + unlock:mutex_unlock (&obj->mm.lock); }
@@ -2501,7 +2504,7 @@ int __i915_gem_object_get_pages(struct dif (err)return err; -if (unlikely (!obj->mm.pages)) { +if (unlikely (IS_ERR_OR_NULL (obj->mm.pages))) { err =____i915_gem_object_get_pages (obj);if (err) goto unlock;
@@ -2579,7 +2582,7 @@ void *i915_gem_object_pin_map(struct drm pinned = true;if (!atomic_inc_not_zero (&obj->mm.pages_pin_count)) { -if (unlikely (!obj->mm.pages)) { +if (unlikely (IS_ERR_OR_NULL (obj->mm.pages))) { ret =____i915_gem_object_get_pages (obj);if (ret) goto err_unlock;
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/drm-i915-squelch-any-ktime-jiffie-rounding-errors-for-wait-ioctl.patch queue-4.10/drm-i915-fbdev-stop-repeating-tile-configuration-on-stagnation.patch queue-4.10/drm-i915-store-a-permanent-error-in-obj-mm.pages.patch queue-4.10/drm-i915-gen9-increase-pcode-request-timeout-to-50ms.patch queue-4.10/drm-i915-avoid-tweaking-evaluation-thresholds-on-baytrail-v3.patch queue-4.10/drm-i915-fix-forcewake-active-domain-tracking.patch