Skip to content

Commit

Permalink
MIPS: Use common outgoing-CPU-notification code
Browse files Browse the repository at this point in the history
Replace the open-coded CPU-offline notification with common code.
In particular avoid calling scheduler code using RCU from an offline CPU
that RCU is ignoring.

Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/15921/
Patchwork: https://patchwork.linux-mips.org/patch/15953/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Marcin Nowakowski authored and Ralf Baechle committed Apr 12, 2017
1 parent 8bcd84a commit 1f83f5e
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions arch/mips/kernel/smp-cps.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* option) any later version.
*/

#include <linux/cpu.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/irqchip/mips-gic.h>
Expand Down Expand Up @@ -408,7 +409,6 @@ static int cps_cpu_disable(void)
return 0;
}

static DECLARE_COMPLETION(cpu_death_chosen);
static unsigned cpu_death_sibling;
static enum {
CPU_DEATH_HALT,
Expand Down Expand Up @@ -444,7 +444,7 @@ void play_dead(void)
}

/* This CPU has chosen its way out */
complete(&cpu_death_chosen);
(void)cpu_report_death();

if (cpu_death == CPU_DEATH_HALT) {
vpe_id = cpu_vpe_id(&cpu_data[cpu]);
Expand Down Expand Up @@ -493,8 +493,7 @@ static void cps_cpu_die(unsigned int cpu)
int err;

/* Wait for the cpu to choose its way out */
if (!wait_for_completion_timeout(&cpu_death_chosen,
msecs_to_jiffies(5000))) {
if (!cpu_wait_death(cpu, 5)) {
pr_err("CPU%u: didn't offline\n", cpu);
return;
}
Expand Down

0 comments on commit 1f83f5e

Please sign in to comment.