Fix disappearching cursor issue (rhbz 1738614)

This commit is contained in:
Laura Abbott 2019-10-11 15:52:45 -04:00
parent 176603ba7c
commit 4bba71a878
2 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,54 @@
From 7a78f4f0497f903756183f8b227f6fddaba8cdb0 Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 20 Sep 2019 13:18:21 +0100
Subject: [PATCH] drm/i915: Mark contents as dirty on a write fault
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Since dropping the set-to-gtt-domain in commit a679f58d0510 ("drm/i915:
Flush pages on acquisition"), we no longer mark the contents as dirty on
a write fault. This has the issue of us then not marking the pages as
dirty on releasing the buffer, which means the contents are not written
out to the swap device (should we ever pick that buffer as a victim).
Notably, this is visible in the dumb buffer interface used for cursors.
Having updated the cursor contents via mmap, and swapped away, if the
shrinker should evict the old cursor, upon next reuse, the cursor would
be invisible.
E.g. echo 80 > /proc/sys/kernel/sysrq ; echo f > /proc/sysrq-trigger
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111541
Fixes: a679f58d0510 ("drm/i915: Flush pages on acquisition")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.2+
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190920121821.7223-1-chris@chris-wilson.co.uk
(cherry picked from commit 5028851cdfdf78dc22eacbc44a0ab0b3f599ee4a)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index 39a661927d8e..c201289039fe 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -317,7 +317,11 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND));
GEM_BUG_ON(!obj->userfault_count);
- i915_vma_set_ggtt_write(vma);
+ if (write) {
+ GEM_BUG_ON(!i915_gem_object_has_pinned_pages(obj));
+ i915_vma_set_ggtt_write(vma);
+ obj->mm.dirty = true;
+ }
err_fence:
i915_vma_unpin_fence(vma);
--
2.21.0

View File

@ -601,6 +601,9 @@ Patch509: PATCH-v2-selinux-allow-labeling-before-policy-is-loaded.patch
Patch510: iwlwifi-exclude-GEO-SAR-support-for-3168.patch
Patch511: iwlwifi-pcie-change-qu-with-jf-devices-to-use-qu-configuration.patch
# rhbz 1738614
Patch512: drm-i915-Mark-contents-as-dirty-on-a-write-fault.patch
# END OF PATCH DEFINITIONS
%endif
@ -1802,6 +1805,9 @@ fi
#
#
%changelog
* Fri Oct 11 2019 Laura Abbott <labbott@redhat.com>
- Fix disappearing cursor issue (rhbz 1738614)
* Fri Oct 11 2019 Peter Robinson <pbrobinson@fedoraproject.org>
- Last iwlwifi fix for the recent firmware issues (rhbz 1733369)