Subject: CVS commit: [sommerfeld_i386mp_1] syssrc/sys/arch/i386/i386
To: None <source-changes@netbsd.org>
From: Bill Sommerfeld <sommerfeld@netbsd.org>
List: source-changes
Date: 12/29/2001 22:59:24
Module Name:	syssrc
Committed By:	sommerfeld
Date:		Sat Dec 29 20:59:24 UTC 2001

Modified Files:
	syssrc/sys/arch/i386/i386 [sommerfeld_i386mp_1]: pmap.c

Log Message:
Fix from Frank van der Linden to TLB shootdown:

"... both a 'flushu' (do a normal TLB flush, but not the PG_G entries)
and one or more PG_G entries could have been in the shootdown
queue. pmap_tlb_shootnow() would then only have done a plain tlb
flush, meaning that the PG_G address(es) on the shootdown queue
weren't handled.

"For this to happen you'd have to have 2 conditions: 1) the max. number
of items on the queue was exceeded, with only plain (user) entries
on the queue, and 2) after this event happened, a few PG_G entries were
added.

"This could triggered by an exec, which unmaps the whole process'
map, usually causing > 16 'plain' entries, and pmap_remove_ptes
wanting to free a pv page, causing a PG_G entry. The latter would
then not be flushed from the TLB."

Fix is to make we don't miss PG_G entries after a flushu.


To generate a diff of this commit:
cvs rdiff -r1.83.2.45 -r1.83.2.46 syssrc/sys/arch/i386/i386/pmap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.