From 7cd187003db06c842b11c9f46f0a0753ed677203 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Wed, 28 Aug 2013 19:53:23 +0200 Subject: [PATCH] Flush the TLB after idle operation While a CPU executes the idle thread, it receives no cross-CPU TLB flush requests. Therefore, the TLB needs to get flushed when leaving the idle thread to compensate for any missed flush requests. Fixes ssumpf/foc#9. --- kernel/fiasco/src/kern/kernel_thread.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/fiasco/src/kern/kernel_thread.cpp b/kernel/fiasco/src/kern/kernel_thread.cpp index 0b065c2f..053830d4 100644 --- a/kernel/fiasco/src/kern/kernel_thread.cpp +++ b/kernel/fiasco/src/kern/kernel_thread.cpp @@ -181,6 +181,7 @@ Kernel_thread::idle_op() arch_tickless_idle(cpu); enable_tlb(cpu); + Mem_unit::tlb_flush(); Rcu::leave_idle(cpu); Timer_tick::enable(cpu); }