From f4cc82578d8d7f5f938880676f53af8873a4de9d Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Mon, 10 Aug 2015 12:43:35 +0900 Subject: [PATCH] check_need_resched(): no thread migration in IRQ context --- kernel/process.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/process.c b/kernel/process.c index 116baa3f..ad8e010d 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2388,6 +2388,10 @@ void check_need_resched(void) { struct cpu_local_var *v = get_this_cpu_local_var(); if (v->flags & CPU_FLAG_NEED_RESCHED) { + if (v->in_interrupt && (v->flags & CPU_FLAG_NEED_MIGRATE)) { + dkprintf("no migration in IRQ context\n"); + return; + } v->flags &= ~CPU_FLAG_NEED_RESCHED; schedule(); }