Browse Source

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.
Tom 4 years ago
parent
commit
b445f15131
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Kernel/Arch/i386/CPU.cpp

+ 1 - 1
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);