Module Name:    src
Committed By:   mrg
Date:           Mon Feb  1 02:42:33 UTC 2010

Modified Files:
        src/sys/arch/sparc64/include: intr.h
        src/sys/arch/sparc64/sparc64: ipifuncs.c pmap.c

Log Message:
- add a PDB_CTX_FLUSHALL debug type to pmap.c, and also log the cpu_number()
  in a bunch more cases

- make sparc64_ipi_halt_thiscpu() and sparc64_ipi_pause_thiscpu() return void,
  their callers never checked anyway.

- remove prototypes for sparc64_ipi_flush_ctx() and sparc64_ipi_flush_all(),
  there are no such functions


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/sparc64/include/intr.h
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/sparc64/sparc64/ipifuncs.c
cvs rdiff -u -r1.246 -r1.247 src/sys/arch/sparc64/sparc64/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/sparc64/include/intr.h
diff -u src/sys/arch/sparc64/include/intr.h:1.26 src/sys/arch/sparc64/include/intr.h:1.27
--- src/sys/arch/sparc64/include/intr.h:1.26	Mon Nov 30 09:34:39 2009
+++ src/sys/arch/sparc64/include/intr.h	Mon Feb  1 02:42:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.26 2009/11/30 09:34:39 nakayama Exp $ */
+/*	$NetBSD: intr.h,v 1.27 2010/02/01 02:42:33 mrg Exp $ */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -61,8 +61,8 @@
 #if defined(MULTIPROCESSOR)
 #ifndef _LOCORE
 void	sparc64_ipi_init (void);
-int	sparc64_ipi_halt_thiscpu (void *);
-int	sparc64_ipi_pause_thiscpu (void *);
+void	sparc64_ipi_halt_thiscpu (void *);
+void	sparc64_ipi_pause_thiscpu (void *);
 void	sparc64_do_pause(void);
 void	sparc64_ipi_drop_fpstate (void *);
 void	sparc64_ipi_save_fpstate (void *);

Index: src/sys/arch/sparc64/sparc64/ipifuncs.c
diff -u src/sys/arch/sparc64/sparc64/ipifuncs.c:1.26 src/sys/arch/sparc64/sparc64/ipifuncs.c:1.27
--- src/sys/arch/sparc64/sparc64/ipifuncs.c:1.26	Fri Jan 15 23:57:07 2010
+++ src/sys/arch/sparc64/sparc64/ipifuncs.c	Mon Feb  1 02:42:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipifuncs.c,v 1.26 2010/01/15 23:57:07 nakayama Exp $ */
+/*	$NetBSD: ipifuncs.c,v 1.27 2010/02/01 02:42:33 mrg Exp $ */
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipifuncs.c,v 1.26 2010/01/15 23:57:07 nakayama Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipifuncs.c,v 1.27 2010/02/01 02:42:33 mrg Exp $");
 
 #include "opt_ddb.h"
 
@@ -67,21 +67,26 @@
 void	sparc64_ipi_halt(void *);
 void	sparc64_ipi_pause(void *);
 void	sparc64_ipi_flush_pte(void *);
-void	sparc64_ipi_flush_ctx(void *);
-void	sparc64_ipi_flush_all(void *);
 
 /*
  * Process cpu stop-self event.
  */
-int
+void
 sparc64_ipi_halt_thiscpu(void *arg)
 {
+	extern void prom_printf(const char *fmt, ...);
 
 	printf("cpu%d: shutting down\n", cpu_number());
 	CPUSET_ADD(cpus_halted, cpu_number());
-	prom_stopself();
-
-	return(1);
+	if (((getver() & VER_IMPL) >> VER_IMPL_SHIFT) >= IMPL_CHEETAH) {
+		/*
+		 * prom_selfstop() doesn't seem to work on newer machines.
+		 */
+		spl0();
+		while (1)
+			/* nothing */;
+	} else
+		prom_stopself();
 }
 
 void
@@ -111,7 +116,7 @@
 /*
  * Pause cpu.  This is called from locore.s after setting up a trapframe.
  */
-int
+void
 sparc64_ipi_pause_thiscpu(void *arg)
 {
 	int s;
@@ -134,7 +139,6 @@
 #endif
 
 	intr_restore(s);
-	return (1);
 }
 
 /*

Index: src/sys/arch/sparc64/sparc64/pmap.c
diff -u src/sys/arch/sparc64/sparc64/pmap.c:1.246 src/sys/arch/sparc64/sparc64/pmap.c:1.247
--- src/sys/arch/sparc64/sparc64/pmap.c:1.246	Sun Jan 10 15:07:53 2010
+++ src/sys/arch/sparc64/sparc64/pmap.c	Mon Feb  1 02:42:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.246 2010/01/10 15:07:53 skrll Exp $	*/
+/*	$NetBSD: pmap.c,v 1.247 2010/02/01 02:42:33 mrg Exp $	*/
 /*
  *
  * Copyright (C) 1996-1999 Eduardo Horvath.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.246 2010/01/10 15:07:53 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.247 2010/02/01 02:42:33 mrg Exp $");
 
 #undef	NO_VCACHE /* Don't forget the locked TLB in dostart */
 #define	HWREF
@@ -311,27 +311,27 @@
 #define	ENTER_STAT(x)	enter_stats.x ++
 #define	REMOVE_STAT(x)	remove_stats.x ++
 
-#define	PDB_CREATE	0x0001
-#define	PDB_DESTROY	0x0002
-#define	PDB_REMOVE	0x0004
-#define	PDB_CHANGEPROT	0x0008
-#define	PDB_ENTER	0x0010
-#define PDB_DEMAP	0x0020
-#define	PDB_REF		0x0040
-#define PDB_COPY	0x0080
-
-#define	PDB_MMU_ALLOC	0x0100
-#define	PDB_MMU_STEAL	0x0200
-#define	PDB_CTX_ALLOC	0x0400
-#define	PDB_CTX_STEAL	0x0800
-#define	PDB_MMUREG_ALLOC	0x1000
-#define	PDB_MMUREG_STEAL	0x2000
-#define	PDB_CACHESTUFF	0x4000
-#define	PDB_ALIAS	0x8000
-#define PDB_EXTRACT	0x10000
-#define	PDB_BOOT	0x20000
-#define	PDB_BOOT1	0x40000
-#define	PDB_GROW	0x80000
+#define	PDB_CREATE		0x000001
+#define	PDB_DESTROY		0x000002
+#define	PDB_REMOVE		0x000004
+#define	PDB_CHANGEPROT		0x000008
+#define	PDB_ENTER		0x000010
+#define PDB_DEMAP		0x000020
+#define	PDB_REF			0x000040
+#define PDB_COPY		0x000080
+#define	PDB_MMU_ALLOC		0x000100
+#define	PDB_MMU_STEAL		0x000200
+#define	PDB_CTX_ALLOC		0x000400
+#define	PDB_CTX_STEAL		0x000800
+#define	PDB_MMUREG_ALLOC	0x001000
+#define	PDB_MMUREG_STEAL	0x002000
+#define	PDB_CACHESTUFF		0x004000
+#define	PDB_ALIAS		0x008000
+#define PDB_EXTRACT		0x010000
+#define	PDB_BOOT		0x020000
+#define	PDB_BOOT1		0x040000
+#define	PDB_GROW		0x080000
+#define	PDB_CTX_FLUSHALL	0x100000
 int	pmapdebug = 0;
 /* Number of H/W pages stolen for page tables */
 int	pmap_pages_stolen = 0;
@@ -3045,7 +3045,7 @@
 	 */
 
 	if (ctx == curcpu()->ci_numctx) {
-		DPRINTF(PDB_CTX_ALLOC,
+		DPRINTF(PDB_CTX_ALLOC|PDB_CTX_FLUSHALL,
 			("ctx_alloc: cpu%d run out of contexts %d\n",
 			 cpu_number(), curcpu()->ci_numctx));
 		write_user_windows();
@@ -3080,7 +3080,8 @@
 	);
 	pmap_ctx(pm) = ctx;
 	mutex_exit(&pmap_lock);
-	DPRINTF(PDB_CTX_ALLOC, ("ctx_alloc: allocated ctx %d\n", ctx));
+	DPRINTF(PDB_CTX_ALLOC, ("ctx_alloc: cpu%d allocated ctx %d\n",
+		cpu_number(), ctx));
 	return ctx;
 }
 
@@ -3112,7 +3113,8 @@
 	}
 #endif
 	/* We should verify it has not been stolen and reallocated... */
-	DPRINTF(PDB_CTX_ALLOC, ("ctx_free: freeing ctx %d\n", oldctx));
+	DPRINTF(PDB_CTX_ALLOC, ("ctx_free: cpu%d freeing ctx %d\n",
+		cpu_number(), oldctx));
 	ci->ci_ctxbusy[oldctx] = 0UL;
 	pm->pm_ctx[ci->ci_index] = 0;
 	LIST_REMOVE(pm, pm_list[ci->ci_index]);
@@ -3141,7 +3143,8 @@
 	}
 #endif
 	/* We should verify it has not been stolen and reallocated... */
-	DPRINTF(PDB_CTX_ALLOC, ("ctx_free: freeing ctx %d\n", oldctx));
+	DPRINTF(PDB_CTX_ALLOC, ("ctx_free: cpu%d freeing ctx %d\n",
+		cpu_number(), oldctx));
 	curcpu()->ci_ctxbusy[oldctx] = 0UL;
 	pmap_ctx(pm) = 0;
 	LIST_REMOVE(pm, pm_list);

Reply via email to