kernel - Rewrite the x86-64 pmap code
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 26 Oct 2011 18:42:18 +0000 (11:42 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 26 Oct 2011 18:42:18 +0000 (11:42 -0700)
commit701c977e41807eb03343c695da4625c091d152b1
tree5f3be1a0c6a3e02e248c815e901ecd5ef70dee0b
parent8d1b9f9339babcb9d8e55d3989ec40ca0e324232
kernel - Rewrite the x86-64 pmap code

* Use unassociated VM pages (without a VM object) for all page table pages.

* Remove kptobj and pmap->pm_pteobj.

* For the moment implement a Red-Black tree for pv_entry_t manipulation.
  Revamp the pindex to include all page table page levels, from terminal
  pages to the PML4 page.  The hierarchy is now arranged via the PV system.

* As before, the kernel page tables only use PV entries for terminal pages.

* Refactor the locking to allow blocking operations during deep scans.
  Individual PV entries are now locked and critical PMAP operations do not
  require the pmap->pm_token.  This should greatly improve threaded
  program performance.

* Fix kgdb on the live kernel (pmap_extract() was not handling short-cutted
  page directory pages).
sys/platform/pc64/include/pmap.h
sys/platform/pc64/include/vmparam.h
sys/platform/pc64/x86_64/machdep.c
sys/platform/pc64/x86_64/pmap.c