Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Feb 2000 09:25:12 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Julian Elischer <julian@elischer.org>
Cc:        David Malone <dwmalone@maths.tcd.ie>, freebsd-current@FreeBSD.ORG, diablo-list@list.bart.nl
Subject:   Re: Panic (pmap)
Message-ID:  <200002231725.JAA30519@apollo.backplane.com>
References:  <20000223100101.B17129@lucifer.bart.nl> <20000223110139.D17129@lucifer.bart.nl> <20000223112007.A35612@walton.maths.tcd.ie> <200002231652.IAA30224@apollo.backplane.com> <38B413E1.446B9B3D@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help

:> :       David.
:> 
:>     With softupdates turned on?  Softupdates has known problems when a
:>     disk runs out of space.
:
:didn't kirk just fix that?
:
:      __--_|\  Julian Elischer

    I don't recall it being fixed.

    The pmap panics are more telling.  Softupdates has no known bugs that
    cause a pmap panic, but nothing else in the system is currently known to
    cause a pmap panic either except bad hardware.

    But the fact that the bug is occuring in the same place -- during the
    vm_pageout_page_stats() call, could indicate a bug rather then hardware.

    The vm_pageout_page_stats() procedure is really scary -- it's doing a
    bunch of things outside of splvm() that probably should be inside
    splvm(), like checking to see if a page is deactivateable and then
    only entering splvm() to deactivate it (but what if the page changed
    state after the check but before entering splvm()?).  There are a couple
    of places in the kernel where the VM system tries to 'optimize' scans
    by dealing with side effects instead of splvm()ing, and this is one of
    them.

    I think it may be worth having David do a quick patch to see if it
    helps.  David, try the following brute-force patch and see if it helps.

    Also, is this an SMP box or not?

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

Index: vm_pageout.c
===================================================================
RCS file: /home/ncvs/src/sys/vm/vm_pageout.c,v
retrieving revision 1.151
diff -u -r1.151 vm_pageout.c
--- vm_pageout.c	1999/12/11 16:13:02	1.151
+++ vm_pageout.c	2000/02/23 17:23:23
@@ -1151,6 +1151,7 @@
 	int pcount,tpcount;		/* Number of pages to check */
 	static int fullintervalcount = 0;
 	int page_shortage;
+	int s0;
 
 	page_shortage = 
 	    (cnt.v_inactive_target + cnt.v_cache_max + cnt.v_free_min) -
@@ -1159,6 +1160,8 @@
 	if (page_shortage <= 0)
 		return;
 
+	s0 = splvm();
+
 	pcount = cnt.v_active_count;
 	fullintervalcount += vm_pageout_stats_interval;
 	if (fullintervalcount < vm_pageout_full_stats_interval) {
@@ -1227,6 +1230,7 @@
 
 		m = next;
 	}
+	splx(s0);
 }
 
 static int


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200002231725.JAA30519>