]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: Hang more efficiently on halt/powerdown/restart
authorPaul Burton <paul.burton@mips.com>
Wed, 23 Aug 2017 20:53:16 +0000 (13:53 -0700)
committerJames Hogan <jhogan@kernel.org>
Fri, 9 Mar 2018 11:22:43 +0000 (11:22 +0000)
commitbe145e97f853fbd536ae5e7a52deabe8cc7f7358
treee8b4a559c3db1f3069a16c48bf025e8f41e71eeb
parenta5e9e91b26269a276823f9158fd9f8da65f745a1
MIPS: Hang more efficiently on halt/powerdown/restart

The generic MIPS implementations of halting, powering down or restarting
the system all hang using a busy loop as a last resort. We have many
platforms which avoid this loop by implementing their own, many using
some variation upon executing a wait instruction to lower CPU power
usage if we reach this point.

In order to prepare for cleaning up these various custom implementations
of the same thing, this patch makes the generic machine_halt(),
machine_power_off() & machine_restart() functions each make use of the
wait instruction to lower CPU power usage in cases where we know that
the wait instruction is available. If wait isn't known to be supported
then we fall back to calling cpu_wait(), and if we don't have a
cpu_wait() callback then we effectively continue using a busy loop.

In effect the new machine_hang() function provides a superset of the
functionality that the various platforms currently provide differing
subsets of.

Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/17178/
Signed-off-by: James Hogan <jhogan@kernel.org>
arch/mips/kernel/reset.c