When removing a page directory, tell the real kernel to invalidate the
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 11 Jan 2007 10:25:52 +0000 (10:25 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 11 Jan 2007 10:25:52 +0000 (10:25 +0000)
commitd6c96d4ddbad5816fc58a506bbe7552cf0fc5c0d
treef6add07af6a931be5173853d643db0f468451097
parent0035dca9f939733769a0d6ca5d85c5589add278f
When removing a page directory, tell the real kernel to invalidate the
related segment.  This may not be necessary and can be removed later after
testing.

The virtual kernel's pmap_track_modified() is dealing with independant
address spaces, don't return false hits on non-kernel pmaps.

When clearing the Modify bit, also clear the write bit to force a fault.
We have no other means of detecting when a page is modified.  Note that
this may not be necessary in the vkernel implementation once the real
kernel implementation is fixed to properly set the Modify bit (by doing the
same thing).

Invalidate the real kernel's pmap when clearing either the Write bit or
the Modify bit, instead of just the write bit, and clear both bits when
clearing either, again in order to force a page fault to detect page
modifications.

Code cleanup - remove degenerate cases.  e.g. pmap_changebit() was only
ever used to clear bits, rip out the set/clear functionality and just
make it pmap_clearbit().
sys/platform/vkernel/platform/pmap.c