Index: sys/external/bsd/drm2/dist/drm/drm_gem.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/drm_gem.c,v retrieving revision 1.11 diff -u -r1.11 drm_gem.c --- sys/external/bsd/drm2/dist/drm/drm_gem.c 15 Jan 2020 17:55:43 -0000 1.11 +++ sys/external/bsd/drm2/dist/drm/drm_gem.c 17 Jan 2020 18:53:38 -0000 @@ -613,8 +613,10 @@ 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: sys/external/bsd/drm2/dist/drm/i915/i915_gem.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c,v retrieving revision 1.55 diff -u -r1.55 i915_gem.c --- sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 15 Jan 2020 17:55:43 -0000 1.55 +++ sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 17 Jan 2020 18:53:38 -0000 @@ -2643,10 +2643,12 @@ 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: sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c,v retrieving revision 1.6 diff -u -r1.6 i915_gem_fence.c --- sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c 15 Jan 2020 17:55:43 -0000 1.6 +++ sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c 17 Jan 2020 18:53:38 -0000 @@ -769,7 +769,9 @@ (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; }