• Paul Burton's avatar
    MIPS: Hang more efficiently on halt/powerdown/restart · 997e93d4
    Paul Burton authored
    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: default avatarPaul 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: default avatarJames Hogan <jhogan@kernel.org>
    997e93d4
reset.c 2.83 KB