commit 9bbbdb7e3226d49e14a8b3e4974a01202d69aca2 Author: Aaron LI <a...@aaronly.me> Date: Sun Jun 27 13:36:00 2021 +0800
nvmm: Revamp host TLB flush mechanism * Leverage the pmap layer to track guest pmap generation id and the host CPUs that the guest pmap is active on. This avoids the inefficient _tlb_flush() callbacks from NVMM that invalidate all TLB entries. * Currently just add all CPUs to the backing pmap for guest physical memory as they are encountered. Do not yet try to remove any CPUs, because multiple vCPUs may wind up (temporarily) scheduled to the same physical CPU. So more sophisticated tracking is needed. * Fix a bug in SVM's host TLB flush handling where breaking out of the loop and returning, then re-entering the loop on the same cpu, could improperly clear the machine flush request. Credit to Matt Dillon. Summary of changes: sys/dev/virtual/nvmm/nvmm.c | 10 ++++++++++ sys/dev/virtual/nvmm/nvmm_compat.h | 1 + sys/dev/virtual/nvmm/x86/nvmm_x86_svm.c | 33 +++++++++++++++++++++++---------- sys/dev/virtual/nvmm/x86/nvmm_x86_vmx.c | 24 ++++++++++++++++-------- sys/platform/pc64/include/pmap.h | 4 ---- sys/platform/pc64/x86_64/pmap.c | 5 +---- sys/platform/pc64/x86_64/pmap_inval.c | 18 ------------------ 7 files changed, 51 insertions(+), 44 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/9bbbdb7e3226d49e14a8b3e4974a01202d69aca2 -- DragonFly BSD source repository