Commit 505a8ec7 authored by Chris Wilson's avatar Chris Wilson Committed by Linus Torvalds
Browse files

Revert "drm/i915/userptr: Acquire the page lock around set_page_dirty()"

The userptr put_pages can be called from inside try_to_unmap, and so
enters with the page lock held on one of the object's backing pages. We
cannot take the page lock ourselves for fear of recursion.

Reported-by: default avatarLionel Landwerlin <>
Reported-by: default avatarMartin Wilck <>
Reported-by: default avatarLeo Kraav <>
Fixes: aa56a292 ("drm/i915/userptr: Acquire the page lock around set_page_dirty()")

Signed-off-by: default avatarChris Wilson <>
Cc: Tvrtko Ursulin <>
Cc: Jani Nikula <>
Cc: Joonas Lahtinen <>
Signed-off-by: default avatarLinus Torvalds <>
parent 98dcb386
......@@ -664,15 +664,7 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj,
for_each_sgt_page(page, sgt_iter, pages) {
if (obj->mm.dirty)
* As this may not be anonymous memory (e.g. shmem)
* but exist on a real mapping, we have to lock
* the page in order to dirty it -- holding
* the page reference is not sufficient to
* prevent the inode from being truncated.
* Play safe and take the lock.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment