From f0ab8ec89aa009ef199ebf15e0a876e551e06869 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Mon, 10 Aug 2015 12:45:59 +0900 Subject: [PATCH] sched_request_migrate(): change CPU flags atomically --- kernel/process.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/process.c b/kernel/process.c index ad8e010d..24289351 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2477,8 +2477,10 @@ void sched_request_migrate(int cpu_id, struct process *proc) list_add_tail(&req.list, &v->migq); ihk_mc_spinlock_unlock(&v->migq_lock, irqstate); + irqstate = ihk_mc_spinlock_lock(&v->runq_lock); v->flags |= CPU_FLAG_NEED_RESCHED | CPU_FLAG_NEED_MIGRATE; v->status = CPU_STATUS_RUNNING; + ihk_mc_spinlock_unlock(&v->runq_lock, irqstate); if (cpu_id != ihk_mc_get_processor_id()) ihk_mc_interrupt_cpu(/* Kick scheduler */