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

Matthew Dillon dillon at
Sat Jul 23 19:54:47 PDT 2016

commit 1a5c7e0f9aa6bc9a632a92b6b832cfe676746f7f
Author: Matthew Dillon <dillon at>
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
    * 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
    * Disable interrupts a little later inside pmap_inval_smp() and

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(-)

DragonFly BSD source repository

More information about the Commits mailing list