Module Name: src
Committed By: matt
Date: Sat Jul 2 01:26:29 UTC 2011
Modified Files:
src/sys/arch/powerpc/powerpc: vm_machdep.c
src/sys/uvm: uvm_glue.c
Log Message:
Allow the MD code to decide to panic if cpu_uarea_alloc would return NULL.
If NULL is returned, just allocate the standard way.
To generate a diff of this commit:
cvs rdiff -u -r1.91 -r1.92 src/sys/arch/powerpc/powerpc/vm_machdep.c
cvs rdiff -u -r1.150 -r1.151 src/sys/uvm/uvm_glue.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/powerpc/powerpc/vm_machdep.c
diff -u src/sys/arch/powerpc/powerpc/vm_machdep.c:1.91 src/sys/arch/powerpc/powerpc/vm_machdep.c:1.92
--- src/sys/arch/powerpc/powerpc/vm_machdep.c:1.91 Sat Jul 2 00:38:29 2011
+++ src/sys/arch/powerpc/powerpc/vm_machdep.c Sat Jul 2 01:26:29 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: vm_machdep.c,v 1.91 2011/07/02 00:38:29 matt Exp $ */
+/* $NetBSD: vm_machdep.c,v 1.92 2011/07/02 01:26:29 matt Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.91 2011/07/02 00:38:29 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_machdep.c,v 1.92 2011/07/02 01:26:29 matt Exp $");
#include "opt_altivec.h"
#include "opt_multiprocessor.h"
@@ -298,7 +298,7 @@
error = uvm_pglistalloc(USPACE, 0, ptoa(physmem), 0, 0, &pglist, 1, 1);
if (error) {
if (!system)
- return (void *)uvm_uarea_alloc();
+ return NULL;
panic("%s: uvm_pglistalloc failed: %d", __func__, error);
}
@@ -315,7 +315,7 @@
return (void *)(uintptr_t)PMAP_MAP_POOLPAGE(pa);
#else
- return (void *)uvm_uarea_alloc();
+ return NULL;
#endif
}
Index: src/sys/uvm/uvm_glue.c
diff -u src/sys/uvm/uvm_glue.c:1.150 src/sys/uvm/uvm_glue.c:1.151
--- src/sys/uvm/uvm_glue.c:1.150 Sun Jun 12 03:36:03 2011
+++ src/sys/uvm/uvm_glue.c Sat Jul 2 01:26:29 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_glue.c,v 1.150 2011/06/12 03:36:03 rmind Exp $ */
+/* $NetBSD: uvm_glue.c,v 1.151 2011/07/02 01:26:29 matt Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_glue.c,v 1.150 2011/06/12 03:36:03 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_glue.c,v 1.151 2011/07/02 01:26:29 matt Exp $");
#include "opt_kgdb.h"
#include "opt_kstack.h"
@@ -298,8 +298,13 @@
uarea_system_poolpage_alloc(struct pool *pp, int flags)
{
void * const va = cpu_uarea_alloc(true);
- KASSERT(va != NULL);
- return va;
+ if (va != NULL)
+ return va;
+
+ return (void *)uvm_km_alloc(kernel_map, pp->pr_alloc->pa_pagesz,
+ USPACE_ALIGN, UVM_KMF_WIRED |
+ ((flags & PR_WAITOK) ? UVM_KMF_WAITVA :
+ (UVM_KMF_NOWAIT | UVM_KMF_TRYLOCK)));
}
static void