diff options
author | 2021-03-23 16:50:12 +0100 | |
---|---|---|
committer | 2021-03-24 17:27:20 +0100 | |
commit | 9fa1f4785f2a54286ccb8a850cda5661f0a3aaf9 (patch) | |
tree | 91ec5dcaf359bd9971f45a25d27304d05389940a | |
parent | drm/i915: Pass ww ctx to intel_pin_to_display_plane (diff) | |
download | linux-dev-9fa1f4785f2a54286ccb8a850cda5661f0a3aaf9.tar.xz linux-dev-9fa1f4785f2a54286ccb8a850cda5661f0a3aaf9.zip |
drm/i915: Add object locking to vm_fault_cpu
Take a simple lock so we hold ww around (un)pin_pages as needed.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210323155059.628690-24-maarten.lankhorst@linux.intel.com
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_mman.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c index c0034d811e50..163208a6260d 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -246,6 +246,9 @@ static vm_fault_t vm_fault_cpu(struct vm_fault *vmf) area->vm_flags & VM_WRITE)) return VM_FAULT_SIGBUS; + if (i915_gem_object_lock_interruptible(obj, NULL)) + return VM_FAULT_NOPAGE; + err = i915_gem_object_pin_pages(obj); if (err) goto out; @@ -269,6 +272,7 @@ static vm_fault_t vm_fault_cpu(struct vm_fault *vmf) i915_gem_object_unpin_pages(obj); out: + i915_gem_object_unlock(obj); return i915_error_to_vmf_fault(err); } |