提交 490ab882 编写于 作者: P Paul E. McKenney

metag: Use common outgoing-CPU-notification code

This commit removes the open-coded CPU-offline notification with new
common code.  This change avoids calling scheduler code using RCU from
an offline CPU that RCU is ignoring.  This commit is compatible with
the existing code in not checking for timeout during a prior offline
for a given CPU.
Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: <linux-metag@vger.kernel.org>
上级 a17b4b74
...@@ -261,7 +261,6 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle) ...@@ -261,7 +261,6 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
} }
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
static DECLARE_COMPLETION(cpu_killed);
/* /*
* __cpu_disable runs on the processor to be shutdown. * __cpu_disable runs on the processor to be shutdown.
...@@ -299,7 +298,7 @@ int __cpu_disable(void) ...@@ -299,7 +298,7 @@ int __cpu_disable(void)
*/ */
void __cpu_die(unsigned int cpu) void __cpu_die(unsigned int cpu)
{ {
if (!wait_for_completion_timeout(&cpu_killed, msecs_to_jiffies(1))) if (!cpu_wait_death(cpu, 1))
pr_err("CPU%u: unable to kill\n", cpu); pr_err("CPU%u: unable to kill\n", cpu);
} }
...@@ -314,7 +313,7 @@ void cpu_die(void) ...@@ -314,7 +313,7 @@ void cpu_die(void)
local_irq_disable(); local_irq_disable();
idle_task_exit(); idle_task_exit();
complete(&cpu_killed); (void)cpu_report_death();
asm ("XOR TXENABLE, D0Re0,D0Re0\n"); asm ("XOR TXENABLE, D0Re0,D0Re0\n");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册