git: kernel - Refactor Xinvltlb a little, turn off the idle-thread invltlb opt

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Jul 23 19:54:47 PDT 2016


commit 1a5c7e0f9aa6bc9a632a92b6b832cfe676746f7f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Jul 23 19:19:46 2016 -0700

    kernel - Refactor Xinvltlb a little, turn off the idle-thread invltlb opt
    
    * Turn off the idle-thread invltlb optimization.  This feature can be
      turned on with a sysctl (default-off) machdep.optimized_invltlb.  It
      will be turned on by default when we've life-tested that it works
      properly.
    
    * Remove excess critical sections and interrupt disablements.  All entries
      into smp_invlpg() now occur with interrupts already disabled and the
      thread already in a critical section.  This also defers critical-section
      1->0 transition handling away from smp_invlpg() and into its caller.
    
    * Refactor the Xinvltlb APIs a bit.  Have Xinvltlb enter the critical
      section (it didn't before).  Remove the critical section from
      smp_inval_intr().  The critical section is now handled by the assembly,
      and by any other callers.
    
    * Add additional tsc-based loop/counter debugging to try to catch problems.
    
    * Move inner-loop handling of smp_invltlb_mask to act on invltlbs a little
      faster.
    
    * Disable interrupts a little later inside pmap_inval_smp() and
      pmap_inval_smp_cmpset().

Summary of changes:
 sys/platform/pc64/apic/apic_vector.s   |   7 +-
 sys/platform/pc64/include/pmap_inval.h |   2 +-
 sys/platform/pc64/x86_64/machdep.c     |   2 +
 sys/platform/pc64/x86_64/mp_machdep.c  | 124 ++++++++++++++++++++++-----------
 sys/platform/pc64/x86_64/pmap_inval.c  | 104 +++++++++++++++------------
 5 files changed, 152 insertions(+), 87 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1a5c7e0f9aa6bc9a632a92b6b832cfe676746f7f


-- 
DragonFly BSD source repository



More information about the Commits mailing list