From b445f151317ba86a463c80455587270a56083256 Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 13 Feb 2021 11:37:39 -0700 Subject: [PATCH] Kernel: Avoid flushing the tlb if there's only one thread If we're flushing user space pointers and the process only has one thread, we do not need to broadcast this to other processors as they will all discard that request anyway. --- Kernel/Arch/i386/CPU.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Arch/i386/CPU.cpp b/Kernel/Arch/i386/CPU.cpp index 59d80c2d2b..d9bae8c8ad 100644 --- a/Kernel/Arch/i386/CPU.cpp +++ b/Kernel/Arch/i386/CPU.cpp @@ -1703,7 +1703,7 @@ void Processor::flush_tlb_local(VirtualAddress vaddr, size_t page_count) void Processor::flush_tlb(const PageDirectory* page_directory, VirtualAddress vaddr, size_t page_count) { - if (s_smp_enabled) + if (s_smp_enabled && (!is_user_address(vaddr) || Process::current()->thread_count() > 1)) smp_broadcast_flush_tlb(page_directory, vaddr, page_count); else flush_tlb_local(vaddr, page_count);