Module Name: src
Committed By: ad
Date: Fri Jan 17 19:56:50 UTC 2020
Modified Files:
src/sys/external/bsd/drm2/dist/drm: drm_gem.c
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c i915_gem_fence.c
Log Message:
Apply patch from kamil@: vmobjlock needs to be held for uvm_pagemarkdirty().
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/drm_gem.c
cvs rdiff -u -r1.55 -r1.56 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.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/drm_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.11 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.11 Wed Jan 15 17:55:43 2020
+++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c Fri Jan 17 19:56:49 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem.c,v 1.11 2020/01/15 17:55:43 ad Exp $ */
+/* $NetBSD: drm_gem.c,v 1.12 2020/01/17 19:56:49 ad Exp $ */
/*
* Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.11 2020/01/15 17:55:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.12 2020/01/17 19:56:49 ad Exp $");
#include <linux/types.h>
#include <linux/slab.h>
@@ -613,8 +613,10 @@ drm_gem_put_pages(struct drm_gem_object
for (i = 0; i < (obj->size >> PAGE_SHIFT); i++) {
if (dirty) {
+ mutex_enter(obj->filp->vmobjlock);
uvm_pagemarkdirty(&pages[i]->p_vmp,
UVM_PAGE_STATUS_DIRTY);
+ mutex_exit(obj->filp->vmobjlock);
}
}
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.55 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.56
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.55 Wed Jan 15 17:55:43 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Fri Jan 17 19:56:50 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem.c,v 1.55 2020/01/15 17:55:43 ad Exp $ */
+/* $NetBSD: i915_gem.c,v 1.56 2020/01/17 19:56:50 ad Exp $ */
/*
* Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.55 2020/01/15 17:55:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.56 2020/01/17 19:56:50 ad Exp $");
#ifdef __NetBSD__
#if 0 /* XXX uvmhist option? */
@@ -2643,10 +2643,12 @@ i915_gem_object_put_pages_gtt(struct drm
obj->dirty = 0;
if (obj->dirty) {
+ mutex_enter(obj->base.filp->vmobjlock);
TAILQ_FOREACH(page, &obj->pageq, pageq.queue) {
uvm_pagemarkdirty(page, UVM_PAGE_STATUS_DIRTY);
/* XXX mark page accessed */
}
+ mutex_exit(obj->base.filp->vmobjlock);
}
obj->dirty = 0;
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.6 Wed Jan 15 17:55:43 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c Fri Jan 17 19:56:50 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem_fence.c,v 1.6 2020/01/15 17:55:43 ad Exp $ */
+/* $NetBSD: i915_gem_fence.c,v 1.7 2020/01/17 19:56:50 ad Exp $ */
/*
* Copyright © 2008-2015 Intel Corporation
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_fence.c,v 1.6 2020/01/15 17:55:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_fence.c,v 1.7 2020/01/17 19:56:50 ad Exp $");
#include <drm/drmP.h>
#include <drm/i915_drm.h>
@@ -769,7 +769,9 @@ i915_gem_object_do_bit_17_swizzle(struct
(test_bit(i, obj->bit_17) != 0)) {
i915_gem_swizzle_page(container_of(page, struct page,
p_vmp));
+ mutex_enter(obj->base.filp->vmobjlock);
uvm_pagemarkdirty(page, UVM_PAGE_STATUS_DIRTY);
+ mutex_exit(obj->base.filp->vmobjlock);
}
i += 1;
}