diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-08 21:23:33 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-08 21:23:33 -0700 |
commit | 1ba7055af26f008e8fc8dab9dcb1701534afbe16 (patch) | |
tree | 6156556f56eba8ebc6d50639fbc8329f5ad078a2 /arch/mips/cavium-octeon/setup.c | |
parent | f0f6b80368133411414762d1ce42d983ff618c95 (diff) | |
parent | 317ddd256b9c24b0d78fa8018f80f1e495481a10 (diff) | |
download | op-kernel-dev-1ba7055af26f008e8fc8dab9dcb1701534afbe16.zip op-kernel-dev-1ba7055af26f008e8fc8dab9dcb1701534afbe16.tar.gz |
Merge 3.10-rc5 into tty-next
Diffstat (limited to 'arch/mips/cavium-octeon/setup.c')
-rw-r--r-- | arch/mips/cavium-octeon/setup.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index b0baa29..01b1b3f 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c @@ -428,13 +428,16 @@ static void octeon_restart(char *command) */ static void octeon_kill_core(void *arg) { - mb(); - if (octeon_is_simulation()) { - /* The simulator needs the watchdog to stop for dead cores */ - cvmx_write_csr(CVMX_CIU_WDOGX(cvmx_get_core_num()), 0); + if (octeon_is_simulation()) /* A break instruction causes the simulator stop a core */ - asm volatile ("sync\nbreak"); - } + asm volatile ("break" ::: "memory"); + + local_irq_disable(); + /* Disable watchdog on this core. */ + cvmx_write_csr(CVMX_CIU_WDOGX(cvmx_get_core_num()), 0); + /* Spin in a low power mode. */ + while (true) + asm volatile ("wait" ::: "memory"); } |