diff --git a/drm-i915-Mark-contents-as-dirty-on-a-write-fault.patch b/drm-i915-Mark-contents-as-dirty-on-a-write-fault.patch new file mode 100644 index 000000000..fd85fd874 --- /dev/null +++ b/drm-i915-Mark-contents-as-dirty-on-a-write-fault.patch @@ -0,0 +1,54 @@ +From 7a78f4f0497f903756183f8b227f6fddaba8cdb0 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +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 +Cc: Matthew Auld +Cc: Ville Syrjälä +Cc: # v5.2+ +Reviewed-by: Matthew Auld +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 +--- + 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 + diff --git a/kernel.spec b/kernel.spec index c902bbca6..2ebebdff4 100644 --- a/kernel.spec +++ b/kernel.spec @@ -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 +- Fix disappearing cursor issue (rhbz 1738614) + * Fri Oct 11 2019 Peter Robinson - Last iwlwifi fix for the recent firmware issues (rhbz 1733369)