git: kernel - Rearrange pmap_growkernel() and fix up x86_64's pmap_growkernel()

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Sep 26 11:52:49 PDT 2010


commit a8cf2878049f94b5d02b9bf0fc7c332b2fd95663
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Sep 26 11:46:20 2010 -0700

    kernel - Rearrange pmap_growkernel() and fix up x86_64's pmap_growkernel()
    
    * Rearrange pmap_growkernel() to pass an address range instead of just an
      end address.
    
    * vm_map() no longer retries after calling pmap_growkernel(), the function
      either succeeds or panics.
    
    * x86_64 - kldloading modules after system boot no longer populates 128GB
      worth of page tables (which eats ~256MB of ram) in order to push
      kernel_vm_end past KERNBASE.
    
      Instead, any kldloads into the space beyond KERNBASE, which is required
      to be able to link them into the kernel due to 32-bit PC-relative
      addressing, will populate just the required page tables and will not
      bump up kernel_vm_end.
    
    * Fixes a panic which can occur well after boot when kldload'ing the first
      module, if 256MB worth of free pages is not instantly available.
    
    * Saves us 256M of ram on x86_64.

Summary of changes:
 sys/platform/pc32/i386/pmap.c          |    3 +-
 sys/platform/pc64/x86_64/pmap.c        |   83 ++++++++++++++++++++++++--------
 sys/platform/vkernel/platform/pmap.c   |    6 ++-
 sys/platform/vkernel64/platform/pmap.c |   28 +++++++----
 sys/sys/param.h                        |    1 +
 sys/vm/pmap.h                          |    2 +-
 sys/vm/vm_map.c                        |   22 ++++++--
 7 files changed, 106 insertions(+), 39 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a8cf2878049f94b5d02b9bf0fc7c332b2fd95663


-- 
DragonFly BSD source repository





More information about the Commits mailing list