Module Name:    src
Committed By:   matt
Date:           Wed Nov 28 22:59:09 UTC 2012

Modified Files:
        src/sys/kern [matt-nb6-plus]: kern_kthread.c
        src/sys/uvm [matt-nb6-plus]: uvm_extern.h uvm_glue.c

Log Message:
Pull from HEAD:
Add a __HAVE_CPU_UAREA_IDLELWP hook so that the MD code can allocate
special UAREAs for idle lwp's.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.38.10.1 src/sys/kern/kern_kthread.c
cvs rdiff -u -r1.181.2.1 -r1.181.2.1.2.1 src/sys/uvm/uvm_extern.h
cvs rdiff -u -r1.156.2.3 -r1.156.2.3.2.1 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/kern/kern_kthread.c
diff -u src/sys/kern/kern_kthread.c:1.38 src/sys/kern/kern_kthread.c:1.38.10.1
--- src/sys/kern/kern_kthread.c:1.38	Tue Nov  1 15:39:37 2011
+++ src/sys/kern/kern_kthread.c	Wed Nov 28 22:59:09 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_kthread.c,v 1.38 2011/11/01 15:39:37 jym Exp $	*/
+/*	$NetBSD: kern_kthread.c,v 1.38.10.1 2012/11/28 22:59:09 matt Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2007, 2009 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_kthread.c,v 1.38 2011/11/01 15:39:37 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_kthread.c,v 1.38.10.1 2012/11/28 22:59:09 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -70,7 +70,8 @@ kthread_create(pri_t pri, int flag, stru
 
 	KASSERT((flag & KTHREAD_INTR) == 0 || (flag & KTHREAD_MPSAFE) != 0);
 
-	uaddr = uvm_uarea_system_alloc();
+	uaddr = uvm_uarea_system_alloc(
+	   (flag & (KTHREAD_INTR|KTHREAD_IDLE)) == KTHREAD_IDLE ? ci : NULL);
 	if (uaddr == 0) {
 		return ENOMEM;
 	}

Index: src/sys/uvm/uvm_extern.h
diff -u src/sys/uvm/uvm_extern.h:1.181.2.1 src/sys/uvm/uvm_extern.h:1.181.2.1.2.1
--- src/sys/uvm/uvm_extern.h:1.181.2.1	Thu Apr 12 17:05:37 2012
+++ src/sys/uvm/uvm_extern.h	Wed Nov 28 22:59:09 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_extern.h,v 1.181.2.1 2012/04/12 17:05:37 riz Exp $	*/
+/*	$NetBSD: uvm_extern.h,v 1.181.2.1.2.1 2012/11/28 22:59:09 matt Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -611,7 +611,7 @@ bool			uvm_kernacc(void *, size_t, vm_pr
 __dead void		uvm_scheduler(void);
 vaddr_t			uvm_uarea_alloc(void);
 void			uvm_uarea_free(vaddr_t);
-vaddr_t			uvm_uarea_system_alloc(void);
+vaddr_t			uvm_uarea_system_alloc(struct cpu_info *);
 void			uvm_uarea_system_free(vaddr_t);
 vaddr_t			uvm_lwp_getuarea(lwp_t *);
 void			uvm_lwp_setuarea(lwp_t *, vaddr_t);

Index: src/sys/uvm/uvm_glue.c
diff -u src/sys/uvm/uvm_glue.c:1.156.2.3 src/sys/uvm/uvm_glue.c:1.156.2.3.2.1
--- src/sys/uvm/uvm_glue.c:1.156.2.3	Thu Apr 12 17:05:37 2012
+++ src/sys/uvm/uvm_glue.c	Wed Nov 28 22:59:09 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_glue.c,v 1.156.2.3 2012/04/12 17:05:37 riz Exp $	*/
+/*	$NetBSD: uvm_glue.c,v 1.156.2.3.2.1 2012/11/28 22:59:09 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.156.2.3 2012/04/12 17:05:37 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_glue.c,v 1.156.2.3.2.1 2012/11/28 22:59:09 matt Exp $");
 
 #include "opt_kgdb.h"
 #include "opt_kstack.h"
@@ -366,8 +366,12 @@ uvm_uarea_alloc(void)
 }
 
 vaddr_t
-uvm_uarea_system_alloc(void)
+uvm_uarea_system_alloc(struct cpu_info *ci)
 {
+#ifdef __HAVE_CPU_UAREA_ALLOC_IDLELWP
+	if (__predict_false(ci != NULL))
+		return cpu_uarea_alloc_idlelwp(ci);
+#endif
 
 	return (vaddr_t)pool_cache_get(uvm_uarea_system_cache, PR_WAITOK);
 }

Reply via email to