From cce8dd143193f6d005d05d0a820358b149189b0b Mon Sep 17 00:00:00 2001
From: Avi Kivity <avi@cloudius-systems.com>
Date: Mon, 18 Mar 2013 14:16:19 +0200
Subject: [PATCH] sched: only reschedule during wake() if preemption is enabled

Noticed by Nadav.
---
 core/sched.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/sched.cc b/core/sched.cc
index bd4c43ce6..c8539e0ca 100644
--- a/core/sched.cc
+++ b/core/sched.cc
@@ -264,7 +264,7 @@ void thread::wake()
     // FIXME: warrant an interruption
     if (_cpu != current()->tcpu()) {
         wakeup_ipi.send(_cpu);
-    } else if (arch::irq_enabled()) {
+    } else if (arch::irq_enabled() && !preempt_counter) {
         _cpu->schedule();
         // We'll also reschedule at the end of an interrupt if needed
     }
-- 
GitLab