Module Name: src
Committed By: riastradh
Date: Sun Dec 19 12:25:56 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915/gem: i915_gem_shmem.c
Log Message:
i915: Mark shmem object pages dirty if needed before unwiring them.
Unlikely to fix the graphics corruption we're seeing, though --
should be relevant only if we're swapping.
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c:1.9 Sun Dec 19 11:57:03 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_shmem.c Sun Dec 19 12:25:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem_shmem.c,v 1.9 2021/12/19 11:57:03 riastradh Exp $ */
+/* $NetBSD: i915_gem_shmem.c,v 1.10 2021/12/19 12:25:56 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_shmem.c,v 1.9 2021/12/19 11:57:03 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_shmem.c,v 1.10 2021/12/19 12:25:56 riastradh Exp $");
#include <linux/pagevec.h>
#include <linux/swap.h>
@@ -352,6 +352,16 @@ shmem_put_pages(struct drm_i915_gem_obje
#ifdef __NetBSD__
__USE(sgt_iter);
+ if (obj->mm.dirty) {
+ unsigned i;
+
+ rw_enter(obj->base.filp->vmobjlock, RW_WRITER);
+ for (i = 0; i < pages->sgl->sg_npgs; i++) {
+ uvm_pagemarkdirty(&pages->sgl->sg_pgs[i]->p_vmp,
+ UVM_PAGE_STATUS_DIRTY);
+ }
+ rw_exit(obj->base.filp->vmobjlock);
+ }
uvm_obj_unwirepages(obj->base.filp, 0, obj->base.size);
#else
mapping_clear_unevictable(file_inode(obj->base.filp)->i_mapping);