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>