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; }