From 079da6afc3903ecd5f0c2a6afbab513bc348e1f2 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 3 Aug 2017 07:48:39 +0200 Subject: [PATCH] remove mwait support to avoid priority inversion --- arch/x86/kernel/tasks.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/x86/kernel/tasks.c b/arch/x86/kernel/tasks.c index d063662d8..81d38aeca 100644 --- a/arch/x86/kernel/tasks.c +++ b/arch/x86/kernel/tasks.c @@ -195,6 +195,9 @@ int create_default_frame(task_t* task, entry_point_t ep, void* arg, uint32_t cor void wait_for_task(void) { +#if 1 + HALT; +#else if (!has_mwait()) { HALT; } else { @@ -206,13 +209,16 @@ void wait_for_task(void) monitor(queue, 0, 0); mwait(0x2 /* 0x2 = c3, 0xF = c0 */, 1 /* break on interrupt flag */); } +#endif } void wakeup_core(uint32_t core_id) { +#if 0 // if mwait is available, an IPI isn't required to wakeup the core if (has_mwait()) return; +#endif // no self IPI required if (core_id == CORE_ID)