Module Name:    src
Committed By:   skrll
Date:           Thu May  9 08:16:15 UTC 2019

Modified Files:
        src/sys/kern: subr_pool.c
        src/sys/sys: pool.h
        src/sys/uvm: uvm_stat.c

Log Message:
Avoid KASSERT(!cpu_intr_p()) when breaking into ddb and issuing

        show uvmexp


To generate a diff of this commit:
cvs rdiff -u -r1.249 -r1.250 src/sys/kern/subr_pool.c
cvs rdiff -u -r1.88 -r1.89 src/sys/sys/pool.h
cvs rdiff -u -r1.39 -r1.40 src/sys/uvm/uvm_stat.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/subr_pool.c
diff -u src/sys/kern/subr_pool.c:1.249 src/sys/kern/subr_pool.c:1.250
--- src/sys/kern/subr_pool.c:1.249	Sat Apr 13 08:41:36 2019
+++ src/sys/kern/subr_pool.c	Thu May  9 08:16:14 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_pool.c,v 1.249 2019/04/13 08:41:36 maxv Exp $	*/
+/*	$NetBSD: subr_pool.c,v 1.250 2019/05/09 08:16:14 skrll Exp $	*/
 
 /*
  * Copyright (c) 1997, 1999, 2000, 2002, 2007, 2008, 2010, 2014, 2015, 2018
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.249 2019/04/13 08:41:36 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.250 2019/05/09 08:16:14 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -1635,10 +1635,20 @@ pool_drain(struct pool **ppp)
 int
 pool_totalpages(void)
 {
+
+	mutex_enter(&pool_head_lock);
+	int pages = pool_totalpages_locked();
+	mutex_exit(&pool_head_lock);
+
+	return pages;
+}
+
+int
+pool_totalpages_locked(void)
+{
 	struct pool *pp;
 	uint64_t total = 0;
 
-	mutex_enter(&pool_head_lock);
 	TAILQ_FOREACH(pp, &pool_head, pr_poollist) {
 		uint64_t bytes = pp->pr_npages * pp->pr_alloc->pa_pagesz;
 
@@ -1646,7 +1656,6 @@ pool_totalpages(void)
 			bytes -= (pp->pr_nout * pp->pr_size);
 		total += bytes;
 	}
-	mutex_exit(&pool_head_lock);
 
 	return atop(total);
 }

Index: src/sys/sys/pool.h
diff -u src/sys/sys/pool.h:1.88 src/sys/sys/pool.h:1.89
--- src/sys/sys/pool.h:1.88	Sat Apr 13 08:41:37 2019
+++ src/sys/sys/pool.h	Thu May  9 08:16:15 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: pool.h,v 1.88 2019/04/13 08:41:37 maxv Exp $	*/
+/*	$NetBSD: pool.h,v 1.89 2019/05/09 08:16:15 skrll Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 1999, 2000, 2007 The NetBSD Foundation, Inc.
@@ -320,6 +320,7 @@ void		pool_sethiwat(struct pool *, int);
 void		pool_sethardlimit(struct pool *, int, const char *, int);
 bool		pool_drain(struct pool **);
 int		pool_totalpages(void);
+int		pool_totalpages_locked(void);
 
 /*
  * Debugging and diagnostic aides.

Index: src/sys/uvm/uvm_stat.c
diff -u src/sys/uvm/uvm_stat.c:1.39 src/sys/uvm/uvm_stat.c:1.40
--- src/sys/uvm/uvm_stat.c:1.39	Sat Dec  2 08:15:43 2017
+++ src/sys/uvm/uvm_stat.c	Thu May  9 08:16:15 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_stat.c,v 1.39 2017/12/02 08:15:43 mrg Exp $	 */
+/*	$NetBSD: uvm_stat.c,v 1.40 2019/05/09 08:16:15 skrll Exp $	 */
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_stat.c,v 1.39 2017/12/02 08:15:43 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_stat.c,v 1.40 2019/05/09 08:16:15 skrll Exp $");
 
 #include "opt_readahead.h"
 #include "opt_ddb.h"
@@ -61,7 +61,7 @@ uvmexp_print(void (*pr)(const char *, ..
 	struct cpu_info *ci;
 
 	uvm_estimatepageable(&active, &inactive);
-	poolpages = pool_totalpages();
+	poolpages = pool_totalpages_locked();
 
 	(*pr)("Current UVM status:\n");
 	(*pr)("  pagesize=%d (0x%x), pagemask=0x%x, pageshift=%d, ncolors=%d\n",

Reply via email to