reboot: Add hardware protection power-off
authorMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Thu, 3 Jun 2021 05:40:45 +0000 (08:40 +0300)
committerMark Brown <broonie@kernel.org>
Mon, 21 Jun 2021 12:08:36 +0000 (13:08 +0100)
commitdfa19b11385d4cf8f0242fd93e2073e25183c331
tree5ece7f5815ea12499dee7a6cc207be11bf9d9e59
parent673e851b7da81256e73fb738c550ec39bac1c9ff
reboot: Add hardware protection power-off

There can be few cases when we need to shut-down the system in order to
protect the hardware. Currently this is done at least by the thermal core
when temperature raises over certain limit.

Some PMICs can also generate interrupts for example for over-current or
over-voltage, voltage drops, short-circuit, ... etc. On some systems
these are a sign of hardware failure and only thing to do is try to
protect the rest of the hardware by shutting down the system.

Add shut-down logic which can be used by all subsystems instead of
implementing the shutdown in each subsystem. The logic is stolen from
thermal_core with difference of using atomic_t instead of a mutex in
order to allow calls directly from IRQ context and changing the WARN()
to pr_emerg() as discussed here:
https://lore.kernel.org/lkml/YJuPwAZroVZ%2Fw633@alley/
and here:
https://lore.kernel.org/linux-iommu/20210331093104.383705-4-geert+renesas@glider.be/

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/e83ec1ca9408f90c857ea9dcdc57b14d9037b03f.1622628333.git.matti.vaittinen@fi.rohmeurope.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/linux/reboot.h
kernel/reboot.c