Module Name: src
Committed By: chs
Date: Sat Feb 22 19:46:49 UTC 2020
Modified Files:
src/sys/arch/xen/xen: privcmd.c
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c
src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c
src/sys/uvm: uvm_device.c
Log Message:
do not wait for memory in pgo_fault methods, just return ENOMEM
and let the uvm_fault code wait if it is appropriate.
To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/xen/xen/privcmd.c
cvs rdiff -u -r1.59 -r1.60 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c
cvs rdiff -u -r1.67 -r1.68 src/sys/uvm/uvm_device.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/arch/xen/xen/privcmd.c
diff -u src/sys/arch/xen/xen/privcmd.c:1.51 src/sys/arch/xen/xen/privcmd.c:1.52
--- src/sys/arch/xen/xen/privcmd.c:1.51 Thu Jun 22 22:36:50 2017
+++ src/sys/arch/xen/xen/privcmd.c Sat Feb 22 19:46:48 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: privcmd.c,v 1.51 2017/06/22 22:36:50 chs Exp $ */
+/* $NetBSD: privcmd.c,v 1.52 2020/02/22 19:46:48 chs Exp $ */
/*-
* Copyright (c) 2004 Christian Limpach.
@@ -27,7 +27,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.51 2017/06/22 22:36:50 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.52 2020/02/22 19:46:48 chs Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -502,7 +502,6 @@ privpgop_fault(struct uvm_faultinfo *ufi
PMAP_CANFAIL | ufi->entry->protection,
pobj->domid);
if (error == ENOMEM) {
- error = ERESTART;
break;
}
if (error) {
@@ -513,10 +512,6 @@ privpgop_fault(struct uvm_faultinfo *ufi
}
pmap_update(ufi->orig_map->pmap);
uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
-
- if (error == ERESTART) {
- uvm_wait("privpgop_fault");
- }
return error;
}
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.59 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.60
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.59 Fri Feb 14 14:34:58 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Sat Feb 22 19:46:48 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem.c,v 1.59 2020/02/14 14:34:58 maya Exp $ */
+/* $NetBSD: i915_gem.c,v 1.60 2020/02/22 19:46:48 chs Exp $ */
/*
* Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.59 2020/02/14 14:34:58 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.60 2020/02/22 19:46:48 chs Exp $");
#ifdef __NetBSD__
#if 0 /* XXX uvmhist option? */
@@ -2052,8 +2052,6 @@ unlock:
out:
mutex_enter(uobj->vmobjlock);
uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
- if (ret == -ERESTART)
- uvm_wait("i915flt");
/*
* Remap EINTR to success, so that we return to userland.
@@ -2087,7 +2085,7 @@ i915_udv_fault(struct uvm_faultinfo *ufi
off_t curr_offset;
paddr_t paddr;
u_int mmapflags;
- int lcv, retval;
+ int lcv;
vm_prot_t mapprot;
UVMHIST_FUNC("i915_udv_fault"); UVMHIST_CALLED(maphist);
UVMHIST_LOG(maphist," flags=%jd", flags,0,0,0);
@@ -2119,7 +2117,6 @@ i915_udv_fault(struct uvm_faultinfo *ufi
* loop over the page range entering in as needed
*/
- retval = 0;
for (lcv = 0 ; lcv < npages ; lcv++, curr_offset += PAGE_SIZE,
curr_va += PAGE_SIZE) {
if ((flags & PGO_ALLPAGES) == 0 && lcv != centeridx)
@@ -2147,12 +2144,12 @@ i915_udv_fault(struct uvm_faultinfo *ufi
* XXX case.
*/
pmap_update(ufi->orig_map->pmap); /* sync what we have so far */
- return (ERESTART);
+ return ENOMEM;
}
}
pmap_update(ufi->orig_map->pmap);
- return (retval);
+ return 0;
}
#else
/**
Index: src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.9 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.10
--- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.9 Tue Nov 5 23:29:28 2019
+++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c Sat Feb 22 19:46:48 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem_cma_helper.c,v 1.9 2019/11/05 23:29:28 jmcneill Exp $ */
+/* $NetBSD: drm_gem_cma_helper.c,v 1.10 2020/02/22 19:46:48 chs Exp $ */
/*-
* Copyright (c) 2015-2017 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.9 2019/11/05 23:29:28 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.10 2020/02/22 19:46:48 chs Exp $");
#include <drm/drmP.h>
#include <drm/drm_gem_cma_helper.h>
@@ -246,8 +246,7 @@ drm_gem_cma_fault(struct uvm_faultinfo *
PMAP_CANFAIL | mapprot | mmapflags) != 0) {
pmap_update(ufi->orig_map->pmap);
uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
- uvm_wait("drm_gem_cma_fault");
- return ERESTART;
+ return ENOMEM;
}
}
Index: src/sys/uvm/uvm_device.c
diff -u src/sys/uvm/uvm_device.c:1.67 src/sys/uvm/uvm_device.c:1.68
--- src/sys/uvm/uvm_device.c:1.67 Sun Dec 1 16:44:11 2019
+++ src/sys/uvm/uvm_device.c Sat Feb 22 19:46:49 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_device.c,v 1.67 2019/12/01 16:44:11 ad Exp $ */
+/* $NetBSD: uvm_device.c,v 1.68 2020/02/22 19:46:49 chs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.67 2019/12/01 16:44:11 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.68 2020/02/22 19:46:49 chs Exp $");
#include "opt_uvmhist.h"
@@ -441,8 +441,7 @@ udv_fault(struct uvm_faultinfo *ufi, vad
pmap_update(ufi->orig_map->pmap); /* sync what we have so far */
uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap,
uobj);
- uvm_wait("udv_fault");
- return (ERESTART);
+ return ENOMEM;
}
}