]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Oct 2016 15:10:32 +0000 (11:10 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Oct 2016 15:10:32 +0000 (11:10 -0400)
added patches:
drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch

queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch b/queue-4.4/drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch
new file mode 100644 (file)
index 0000000..0c0455e
--- /dev/null
@@ -0,0 +1,61 @@
+From ca5732c53bf66ad755284786897e0dd10330de87 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 3 Oct 2016 13:45:15 +0100
+Subject: drm/i915: Unalias obj->phys_handle and obj->userptr
+
+From: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit ca5732c53bf66ad755284786897e0dd10330de87 upstream.
+
+We use obj->phys_handle to choose the pread/pwrite path, but as
+obj->phys_handle is a union with obj->userptr, we then mistakenly use
+the phys_handle path for userptr objects within pread/pwrite.
+
+Testcase: igt/gem_userptr_blits/forbidden-operations
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97519
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/20161003124516.12388-2-chris@chris-wilson.co.uk
+(cherry picked from commit 5f12b80a0b42da253691ca03828033014bb786eb)
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/i915_drv.h |   24 +++++++++++-------------
+ 1 file changed, 11 insertions(+), 13 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -2150,21 +2150,19 @@ struct drm_i915_gem_object {
+       /** Record of address bit 17 of each page at last unbind. */
+       unsigned long *bit_17;
+-      union {
+-              /** for phy allocated objects */
+-              struct drm_dma_handle *phys_handle;
+-
+-              struct i915_gem_userptr {
+-                      uintptr_t ptr;
+-                      unsigned read_only :1;
+-                      unsigned workers :4;
++      struct i915_gem_userptr {
++              uintptr_t ptr;
++              unsigned read_only :1;
++              unsigned workers :4;
+ #define I915_GEM_USERPTR_MAX_WORKERS 15
+-                      struct i915_mm_struct *mm;
+-                      struct i915_mmu_object *mmu_object;
+-                      struct work_struct *work;
+-              } userptr;
+-      };
++              struct i915_mm_struct *mm;
++              struct i915_mmu_object *mmu_object;
++              struct work_struct *work;
++      } userptr;
++
++      /** for phys allocated objects */
++      struct drm_dma_handle *phys_handle;
+ };
+ #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
index 4a6e4032a7470cd9e05f4358cc85d727f5fed8c1..5b9fb97da95dd5042d2f3a9126ac846fb9741020 100644 (file)
@@ -13,3 +13,4 @@ xenbus-don-t-look-up-transaction-ids-for-ordinary-writes.patch
 drm-i915-gen9-fix-the-wawmmemoryreadlatency-implementation.patch
 revert-drm-i915-check-live-status-before-reading-edid.patch
 drm-i915-account-for-tseg-size-when-determining-865g-stolen-base.patch
+drm-i915-unalias-obj-phys_handle-and-obj-userptr.patch