Subject: new, improved pmap code
To: None <port-sun3@NetBSD.ORG>
From: Gordon W. Ross <gwr@mc.com>
List: port-sun3
Date: 11/05/1997 18:14:25
I've just finished up some fairly significant work on the
sun3/pmap.c that I hope will improve both its performance
and robustness.  The "everything dumps core" problem has
not yet been seen since eliminating pmap code reentrance.
It is also noticeably faster at fork/exit.

Anyway, I've pounded on it all I can, but I'd really like
to hear the experience others have with it.  Please try it
and let me know how it goes.  It is in the 1.3 release now.
(Yes, I have my fingers crossed! 8)

Gordon

P.S.
I've attached some of the more informative commit messages
below to convey more of the technical details.

----------------------------
revision 1.84
date: 1997/11/03 16:58:05;  author: gwr;  state: Exp;  lines: +240 -178
Use a private pool of PV elements.  This improves performance,
and avoids reentrance into pmap code via malloc().
----------------------------
revision 1.83
date: 1997/11/03 16:08:23;  author: gwr;  state: Exp;  lines: +118 -74
Implement a "kernel-only" context for processes that have not
touched any user-space address recently.  This is efficient
for things that stay in the kernel for a while, waking up
to handle some I/O then going back to sleep (i.e. nfsd).
If and when such a process returns to user-mode, it will
fault and be given a real context at that time.

This also makes context switch faster, because all we need
to do there for the MMU is slam the context register.
----------------------------
revision 1.82
date: 1997/11/02 05:16:25;  author: gwr;  state: Exp;  lines: +152 -159
Give the kernel pmap a soft copy of its segmap (like user pmaps)
so we can optimize away calls where pm_segmap[x] == SEGINV.
----------------------------