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