]> 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)
commitb9d644b1a4ca000ddbfb993bb6b50c6fa95470d3
treee8b4a559c3db1f3069a16c48bf025e8f41e71eeb
parent199542e100997cd8d6cc37ad57419df02da3f5b2
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