[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YJuPwAZroVZ/w633@alley>
Date: Wed, 12 May 2021 10:20:16 +0200
From: Petr Mladek <pmladek@...e.com>
To: Matti Vaittinen <matti.vaittinen@...rohmeurope.com>
Cc: Matti Vaittinen <mazziesaccount@...il.com>,
Mark Brown <broonie@...nel.org>,
Kees Cook <keescook@...omium.org>,
Andy Shevchenko <andy.shevchenko@...il.com>,
Zhang Rui <rui.zhang@...el.com>,
Guenter Roeck <linux@...ck-us.net>,
"agross@...nel.org" <agross@...nel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
linux-power <linux-power@...rohmeurope.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>,
"linux-arm-msm@...r.kernel.org" <linux-arm-msm@...r.kernel.org>,
"bjorn.andersson@...aro.org" <bjorn.andersson@...aro.org>,
"lgirdwood@...il.com" <lgirdwood@...il.com>,
"robh+dt@...nel.org" <robh+dt@...nel.org>,
Daniel Lezcano <daniel.lezcano@...aro.org>,
Amit Kucheria <amitk@...nel.org>,
Matteo Croce <mcroce@...rosoft.com>,
Andrew Morton <akpm@...ux-foundation.org>,
"Rafael J. Wysocki" <rafael.j.wysocki@...el.com>,
Mike Rapoport <rppt@...nel.org>,
Josef Bacik <josef@...icpanda.com>,
Kai-Heng Feng <kai.heng.feng@...onical.com>,
linux-pm@...r.kernel.org
Subject: Re: [PATCH v9 02/10] reboot: Add hardware protection power-off
On Mon 2021-05-10 14:28:30, Matti Vaittinen wrote:
> There can be few cases when we need to shut-down the system in order to
> protect the hardware. Currently this is done at east 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.
>
> Signed-off-by: Matti Vaittinen <matti.vaittinen@...rohmeurope.com>
>
> diff --git a/kernel/reboot.c b/kernel/reboot.c
> index a6ad5eb2fa73..5da8c80a2647 100644
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -518,6 +519,85 @@ void orderly_reboot(void)
> }
> EXPORT_SYMBOL_GPL(orderly_reboot);
>
> +/**
> + * hw_failure_emergency_poweroff_func - emergency poweroff work after a known delay
> + * @work: work_struct associated with the emergency poweroff function
> + *
> + * This function is called in very critical situations to force
> + * a kernel poweroff after a configurable timeout value.
> + */
> +static void hw_failure_emergency_poweroff_func(struct work_struct *work)
> +{
> + /*
> + * We have reached here after the emergency shutdown waiting period has
> + * expired. This means orderly_poweroff has not been able to shut off
> + * the system for some reason.
> + *
> + * Try to shut down the system immediately using kernel_power_off
> + * if populated
> + */
> + WARN(1, "Hardware protection timed-out. Trying forced poweroff\n");
> + kernel_power_off();
WARN() look like an overkill here. It prints many lines that are not
much useful in this case. The function is called from well-known
context (workqueue worker).
Also be aware that "panic_on_warn" commandline option will trigger
panic() here.
> + /*
> + * Worst of the worst case trigger emergency restart
> + */
> + WARN(1,
> + "Hardware protection shutdown failed. Trying emergency restart\n");
> + emergency_restart();
Two consecutive WARN() calls are even less useful. They are eye
catching but it is hard to find the only useful line with
the custom message.
Best Regards,
Petr
Powered by blists - more mailing lists