Module Name:    src
Committed By:   uebayasi
Date:           Tue Apr 27 07:19:29 UTC 2010

Modified Files:
        src/sys/arch/acorn26/acorn26 [uebayasi-xip]: pmap.c
        src/sys/arch/arm/arm32 [uebayasi-xip]: pmap.c
        src/sys/arch/hppa/hppa [uebayasi-xip]: pmap.c
        src/sys/arch/m68k/m68k [uebayasi-xip]: pmap_motorola.c
        src/sys/arch/mips/mips [uebayasi-xip]: pmap.c
        src/sys/arch/powerpc/ibm4xx [uebayasi-xip]: pmap.c
        src/sys/arch/sh3/sh3 [uebayasi-xip]: pmap.c
        src/sys/arch/sparc64/sparc64 [uebayasi-xip]: pmap.c
        src/sys/arch/x86/x86 [uebayasi-xip]: pmap.c

Log Message:
Support PMAP_UNMANAGED in some pmaps.

(Others should be converted eventually, but no problem while managed
device page is enabled.)


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.30.2.1 src/sys/arch/acorn26/acorn26/pmap.c
cvs rdiff -u -r1.211.2.9 -r1.211.2.10 src/sys/arch/arm/arm32/pmap.c
cvs rdiff -u -r1.63.2.1 -r1.63.2.2 src/sys/arch/hppa/hppa/pmap.c
cvs rdiff -u -r1.55 -r1.55.2.1 src/sys/arch/m68k/m68k/pmap_motorola.c
cvs rdiff -u -r1.188.2.1 -r1.188.2.2 src/sys/arch/mips/mips/pmap.c
cvs rdiff -u -r1.60 -r1.60.2.1 src/sys/arch/powerpc/ibm4xx/pmap.c
cvs rdiff -u -r1.74.2.1 -r1.74.2.2 src/sys/arch/sh3/sh3/pmap.c
cvs rdiff -u -r1.250.2.1 -r1.250.2.2 src/sys/arch/sparc64/sparc64/pmap.c
cvs rdiff -u -r1.100.2.1 -r1.100.2.2 src/sys/arch/x86/x86/pmap.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/acorn26/acorn26/pmap.c
diff -u src/sys/arch/acorn26/acorn26/pmap.c:1.30 src/sys/arch/acorn26/acorn26/pmap.c:1.30.2.1
--- src/sys/arch/acorn26/acorn26/pmap.c:1.30	Sat Nov  7 07:27:40 2009
+++ src/sys/arch/acorn26/acorn26/pmap.c	Tue Apr 27 07:19:27 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.30 2009/11/07 07:27:40 cegger Exp $ */
+/* $NetBSD: pmap.c,v 1.30.2.1 2010/04/27 07:19:27 uebayasi Exp $ */
 /*-
  * Copyright (c) 1997, 1998, 2000 Ben Harris
  * All rights reserved.
@@ -102,7 +102,7 @@
 
 #include <sys/param.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.30 2009/11/07 07:27:40 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.30.2.1 2010/04/27 07:19:27 uebayasi Exp $");
 
 #include <sys/kernel.h> /* for cold */
 #include <sys/malloc.h>
@@ -634,7 +634,8 @@
 	UVMHIST_FUNC("pmap_enter");
 
 	UVMHIST_CALLED(pmaphist);
-	return pmap_enter1(pmap, va, pa, prot, flags, 0);
+	return pmap_enter1(pmap, va, pa, prot, flags,
+	    (flags & PMAP_UNMANAGED) != 0);
 }
 
 static int

Index: src/sys/arch/arm/arm32/pmap.c
diff -u src/sys/arch/arm/arm32/pmap.c:1.211.2.9 src/sys/arch/arm/arm32/pmap.c:1.211.2.10
--- src/sys/arch/arm/arm32/pmap.c:1.211.2.9	Thu Feb 25 03:30:22 2010
+++ src/sys/arch/arm/arm32/pmap.c	Tue Apr 27 07:19:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.211.2.9 2010/02/25 03:30:22 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.211.2.10 2010/04/27 07:19:28 uebayasi Exp $	*/
 
 /*
  * Copyright 2003 Wasabi Systems, Inc.
@@ -213,7 +213,7 @@
 #include <machine/param.h>
 #include <arm/arm32/katelib.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.211.2.9 2010/02/25 03:30:22 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.211.2.10 2010/04/27 07:19:28 uebayasi Exp $");
 
 #ifdef PMAP_DEBUG
 
@@ -2781,7 +2781,8 @@
 	 * Get a pointer to the page.  Later on in this function, we
 	 * test for a managed page by checking pg != NULL.
 	 */
-	pg = pmap_initialized ? PHYS_TO_VM_PAGE(pa) : NULL;
+	pg = (pmap_initialized && ((flags & PMAP_UNMANAGED) == 0)) ?
+	    PHYS_TO_VM_PAGE(pa) : NULL;
 
 	nflags = 0;
 	if (prot & VM_PROT_WRITE)

Index: src/sys/arch/hppa/hppa/pmap.c
diff -u src/sys/arch/hppa/hppa/pmap.c:1.63.2.1 src/sys/arch/hppa/hppa/pmap.c:1.63.2.2
--- src/sys/arch/hppa/hppa/pmap.c:1.63.2.1	Thu Feb 25 04:11:29 2010
+++ src/sys/arch/hppa/hppa/pmap.c	Tue Apr 27 07:19:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.63.2.1 2010/02/25 04:11:29 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.63.2.2 2010/04/27 07:19:28 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.63.2.1 2010/02/25 04:11:29 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.63.2.2 2010/04/27 07:19:28 uebayasi Exp $");
 
 #include "opt_device_page.h"
 #include "opt_xip.h"
@@ -1306,7 +1306,8 @@
 			ptp->wire_count++;
 	}
 
-	if (pmap_initialized && (pg = PHYS_TO_VM_PAGE(pa))) {
+	if (pmap_initialized && ((flags & PMAP_UNMANAGED) == 0) &&
+	    (pg = PHYS_TO_VM_PAGE(pa))) {
 		struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 		mutex_enter(&md->pvh_lock);
 

Index: src/sys/arch/m68k/m68k/pmap_motorola.c
diff -u src/sys/arch/m68k/m68k/pmap_motorola.c:1.55 src/sys/arch/m68k/m68k/pmap_motorola.c:1.55.2.1
--- src/sys/arch/m68k/m68k/pmap_motorola.c:1.55	Fri Dec 11 18:28:35 2009
+++ src/sys/arch/m68k/m68k/pmap_motorola.c	Tue Apr 27 07:19:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_motorola.c,v 1.55 2009/12/11 18:28:35 tsutsui Exp $        */
+/*	$NetBSD: pmap_motorola.c,v 1.55.2.1 2010/04/27 07:19:28 uebayasi Exp $        */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -117,7 +117,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.55 2009/12/11 18:28:35 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.55.2.1 2010/04/27 07:19:28 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1270,7 +1270,7 @@
 	 * Note that we raise IPL while manipulating pv_table
 	 * since pmap_enter can be called at interrupt time.
 	 */
-	if (PAGE_IS_MANAGED(pa)) {
+	if (PAGE_IS_MANAGED(pa) && ((flags & PMAP_UNMANAGED) == 0)) {
 		struct pv_header *pvh;
 		struct pv_entry *pv, *npv;
 		int s;

Index: src/sys/arch/mips/mips/pmap.c
diff -u src/sys/arch/mips/mips/pmap.c:1.188.2.1 src/sys/arch/mips/mips/pmap.c:1.188.2.2
--- src/sys/arch/mips/mips/pmap.c:1.188.2.1	Thu Feb 25 04:46:28 2010
+++ src/sys/arch/mips/mips/pmap.c	Tue Apr 27 07:19:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.188.2.1 2010/02/25 04:46:28 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.188.2.2 2010/04/27 07:19:28 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.188.2.1 2010/02/25 04:46:28 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.188.2.2 2010/04/27 07:19:28 uebayasi Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1190,7 +1190,10 @@
 	if (!(prot & VM_PROT_READ))
 		panic("pmap_enter: prot");
 #endif
-	pg = PHYS_TO_VM_PAGE(pa);
+	if ((flags & PMAP_UNMANAGED) != 0)
+		pg = NULL;
+	else
+		pg = PHYS_TO_VM_PAGE(pa);
 
 	if (pg) {
 		struct vm_page_md * const md = VM_PAGE_TO_MD(pg);

Index: src/sys/arch/powerpc/ibm4xx/pmap.c
diff -u src/sys/arch/powerpc/ibm4xx/pmap.c:1.60 src/sys/arch/powerpc/ibm4xx/pmap.c:1.60.2.1
--- src/sys/arch/powerpc/ibm4xx/pmap.c:1.60	Sat Nov 21 17:40:29 2009
+++ src/sys/arch/powerpc/ibm4xx/pmap.c	Tue Apr 27 07:19:29 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.60 2009/11/21 17:40:29 rmind Exp $	*/
+/*	$NetBSD: pmap.c,v 1.60.2.1 2010/04/27 07:19:29 uebayasi Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60 2009/11/21 17:40:29 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.60.2.1 2010/04/27 07:19:29 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -808,7 +808,7 @@
 	if (flags & PMAP_WIRED)
 		flags |= prot;
 
-	managed = uvm_pageismanaged(pa);
+	managed = ((flags & PMAP_UNMANAGED) == 0) && uvm_pageismanaged(pa);
 
 	/*
 	 * Generate TTE.

Index: src/sys/arch/sh3/sh3/pmap.c
diff -u src/sys/arch/sh3/sh3/pmap.c:1.74.2.1 src/sys/arch/sh3/sh3/pmap.c:1.74.2.2
--- src/sys/arch/sh3/sh3/pmap.c:1.74.2.1	Thu Feb 25 05:05:23 2010
+++ src/sys/arch/sh3/sh3/pmap.c	Tue Apr 27 07:19:29 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.74.2.1 2010/02/25 05:05:23 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.74.2.2 2010/04/27 07:19:29 uebayasi Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.74.2.1 2010/02/25 05:05:23 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.74.2.2 2010/04/27 07:19:29 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -333,7 +333,10 @@
 	/* "flags" never exceed "prot" */
 	KDASSERT(prot != 0 && ((flags & VM_PROT_ALL) & ~prot) == 0);
 
-	pg = PHYS_TO_VM_PAGE(pa);
+	if ((flags & PMAP_UNMANAGED) != 0)
+		pg = NULL;
+	else
+		pg = PHYS_TO_VM_PAGE(pa);
 	entry = (pa & PG_PPN) | PG_4K;
 	if (flags & PMAP_WIRED)
 		entry |= _PG_WIRED;

Index: src/sys/arch/sparc64/sparc64/pmap.c
diff -u src/sys/arch/sparc64/sparc64/pmap.c:1.250.2.1 src/sys/arch/sparc64/sparc64/pmap.c:1.250.2.2
--- src/sys/arch/sparc64/sparc64/pmap.c:1.250.2.1	Thu Feb 25 05:54:03 2010
+++ src/sys/arch/sparc64/sparc64/pmap.c	Tue Apr 27 07:19:29 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.250.2.1 2010/02/25 05:54:03 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.250.2.2 2010/04/27 07:19:29 uebayasi Exp $	*/
 /*
  *
  * Copyright (C) 1996-1999 Eduardo Horvath.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.250.2.1 2010/02/25 05:54:03 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.250.2.2 2010/04/27 07:19:29 uebayasi Exp $");
 
 #undef	NO_VCACHE /* Don't forget the locked TLB in dostart */
 #define	HWREF
@@ -1669,7 +1669,10 @@
 	/*
 	 * Construct the TTE.
 	 */
-	pg = PHYS_TO_VM_PAGE(pa);
+	if ((flags & PMAP_UNMANAGED) != 0)
+		pg = NULL;
+	else
+		pg = PHYS_TO_VM_PAGE(pa);
 	if (pg) {
 		struct vm_page_md * const md = VM_PAGE_TO_MD(pg);
 

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.100.2.1 src/sys/arch/x86/x86/pmap.c:1.100.2.2
--- src/sys/arch/x86/x86/pmap.c:1.100.2.1	Thu Feb 25 02:57:17 2010
+++ src/sys/arch/x86/x86/pmap.c	Tue Apr 27 07:19:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.100.2.1 2010/02/25 02:57:17 uebayasi Exp $	*/
+/*	$NetBSD: pmap.c,v 1.100.2.2 2010/04/27 07:19:28 uebayasi Exp $	*/
 
 /*
  * Copyright (c) 2007 Manuel Bouyer.
@@ -149,7 +149,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.100.2.1 2010/02/25 02:57:17 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.100.2.2 2010/04/27 07:19:28 uebayasi Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -4063,7 +4063,12 @@
 		pg = NULL;
 	else
 #endif
-		pg = PHYS_TO_VM_PAGE(pa);
+	{
+		if ((flags & PMAP_UNMANAGED) != 0)
+			pg = NULL;
+		else
+			pg = PHYS_TO_VM_PAGE(pa);
+	}
 	if (pg != NULL) {
 		/* This is a managed page */
 		npte |= PG_PVLIST;

Reply via email to