kernel - Adjust tlb invalidation in the x86-64 pmap code
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 18 Nov 2011 16:10:41 +0000 (08:10 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 18 Nov 2011 16:10:41 +0000 (08:10 -0800)
commit52bb73bc908f2d4fb004ad3c5c97f4d25402d2c2
treebf273a1cef7b96a73fa9e2044b99b072c69f27c1
parent42b33868ed5213db4a88a5bc666411125dc467ff
kernel - Adjust tlb invalidation in the x86-64 pmap code

* Use a locked bus cycle instruction to clear pte's in all cases.

* Remove unnecessary vm_page_hold() when removing a page table page pv.
  The page is still wired so a hold is not needed.

* Do not issue invalidation interlocks when populating a user pte, the
  invalidations issued when the user pte is removed are sufficient.

  Kernel pte's still appear to need an interlock.  It is unclear why
  (possibly early PG_PS replacement issues).

* Revamp pmap_enter() to fix a race case which could allow PG_M to get
  lost.  Any protection or wiring change fully removes the pte before
  loading a revised pte.
sys/platform/pc64/x86_64/pmap.c