Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Feb 2000 16:33:44 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Bruce Evans <bde@zeta.org.au>, David Gilbert <dgilbert@velocet.ca>, freebsd-current@FreeBSD.ORG
Subject:   Patch to try (was Re: Wierd AMD panics caused by VMWare?)
Message-ID:  <200002250033.QAA43662@apollo.backplane.com>
References:  <Pine.BSF.4.21.0002250740030.7691-100000@alphplex.bde.org> <200002242105.NAA42378@apollo.backplane.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
    Please try the following patch and tell me if the crashes still occur.
    If this fixes the problem then I'm homing in on the bug.

    I am beginning to suspect that there is a case where a pmap can get
    cleared without the tlb being flushed, causing origpte to be 0 when the
    new pte is later created again at the same spot.  When the new
    page is allocated and added to the pmap later on, it fails to flush
    the tlb entry in pmap_enter() because it believes it does not have to.

    This would explain why messing with the pmap_remove_all() case does
    not do what we expect -- I suspect that routine is not being called
    at all in certain cases.

    I have not found the case where the pmap gets cleared without being
    flushed yet but when I force the flush in pmap_enter(), it seems to
    stop the crashes (but I can't be 100% sure because I had to mess
    around with that file descriptor program to get it to crash the first
    time).

    (This patch is relative to 3.x)

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


Index: pmap.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/pmap.c,v
retrieving revision 1.219.2.6
diff -u -r1.219.2.6 pmap.c
--- pmap.c	1999/09/02 23:56:47	1.219.2.6
+++ pmap.c	2000/02/25 00:06:50
@@ -2204,7 +2204,7 @@
 	 */
 	if ((origpte & ~(PG_M|PG_A)) != newpte) {
 		*pte = newpte | PG_A;
-		if (origpte)
+		/*if (origpte)*/
 			invltlb_1pg(va);
 	}
 }


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?200002250033.QAA43662>