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>