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

Matthew Dillon dillon at
Sat Jul 23 21:00:56 PDT 2016

commit 6cb49c4fc9c5e24c090fd6a1b9abbaadd8d170bc
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