OSDN Git Service

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)
commit997e93d4df165202f2ee36a48f7aca172ff8b48a
treee8b4a559c3db1f3069a16c48bf025e8f41e71eeb
parent4d73b73ff7943c92e8bcb65fece8caa70c24db87
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