summaryrefslogtreecommitdiffstats
path: root/arch/mips/cavium-octeon/setup.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-08 21:23:33 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-08 21:23:33 -0700
commit1ba7055af26f008e8fc8dab9dcb1701534afbe16 (patch)
tree6156556f56eba8ebc6d50639fbc8329f5ad078a2 /arch/mips/cavium-octeon/setup.c
parentf0f6b80368133411414762d1ce42d983ff618c95 (diff)
parent317ddd256b9c24b0d78fa8018f80f1e495481a10 (diff)
downloadop-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.c15
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");
}
OpenPOWER on IntegriCloud