2019-05-19 13:07:45 +01:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
2019-06-12 14:52:48 -03:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-08-03 14:10:17 +01:00
|
|
|
|
2017-06-14 13:48:26 +01:00
|
|
|
|
2015-03-30 10:59:52 +01:00
|
|
|
|
|
|
|
|
|
2017-01-30 09:52:01 +01:00
|
|
|
|
2016-06-05 18:23:21 +01:00
|
|
|
|
2015-03-30 10:59:52 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-12-04 19:22:50 +00:00
|
|
|
|
2015-03-30 10:59:52 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-08 15:38:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-29 16:07:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
arm64: escalate smp_send_stop() to an SDEI NMI as a last resort
A CPU wedged with interrupts masked ignores the stop IPI, and without
pseudo-NMI there is no NMI IPI to escalate to: a reboot proceeds with
the CPU still running, and a kdump misses its registers.
Add a third rung to smp_send_stop(): once the IPI (and pseudo-NMI IPI,
if enabled) rungs have run, signal SDEI event 0 at whatever stayed
online. Firmware delivers it regardless of the target's DAIF, so it
reaches a CPU a plain IPI cannot; the target acks by going offline,
which the caller already polls for.
Fold the stop bookkeeping into one arm64_nmi_cpu_stop(regs,
die_on_crash), shared by the stop IPI handlers, panic_smp_self_stop()
and the SDEI handler, replacing the near-duplicate local_cpu_stop() and
ipi_cpu_crash_stop(). @die_on_crash is the only difference: the IPI
handlers pass true and PSCI CPU_OFF the CPU on a crash stop so a capture
kernel can reclaim it; the SDEI handler and self-stop pass false and
park. The SDEI park is required, not conservative -- its handler runs
inside an SDEI event that is never completed (completing it resumes the
wedged context), and a CPU_OFF from that unfinished-event context wedges
EL3 on some firmware (left as a follow-up). The dump is unaffected; only
re-onlining the CPU in an SMP capture kernel is lost.
Suggested-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Yin Fengwei <fengwei_yin@linux.alibaba.com>
Signed-off-by: Will Deacon <will@kernel.org>
2026-06-29 16:07:18 +01:00
|
|
|
|
|
|
|
|
|
2026-06-29 16:07:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
2006-06-25 05:47:46 -07:00
|
|
|
|
2009-12-14 18:01:16 -08:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-29 01:02:45 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-27 13:12:54 +02:00
|
|
|
|
2011-01-20 14:44:16 -08:00
|
|
|
|
2009-12-14 18:01:16 -08:00
|
|
|
|
2008-06-27 13:12:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-05-08 22:07:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-22 17:53:21 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-01-23 15:54:39 -08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-09 19:50:41 -07:00
|
|
|
|
|
|
|
|
|
2019-07-18 18:37:34 +00:00
|
|
|
|
2008-04-09 19:50:41 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-04-12 18:06:18 +00:00
|
|
|
|
2019-07-18 18:37:34 +00:00
|
|
|
|
|
|
|
|
|
2024-03-11 16:21:22 +05:30
|
|
|
|
2008-04-09 19:50:41 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-26 10:08:06 +00:00
|
|
|
|
2020-06-29 18:18:42 +02:00
|
|
|
|
2026-04-27 17:10:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-26 10:08:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-28 09:23:11 -05:00
|
|
|
|
|
|
|
|
|
2026-05-29 22:05:59 +08:00
|
|
|
|
2016-02-11 15:23:51 +01:00
|
|
|
|
2016-01-28 09:23:11 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-11-13 12:14:01 -06:00
|
|
|
|
|
|
|
|
|
2021-03-21 19:46:50 +01:00
|
|
|
|
2018-11-13 12:14:01 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-09-03 08:18:19 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-05-12 16:22:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
|
|
|
|
|
2022-02-25 21:51:34 +01:00
|
|
|
|
2024-02-12 10:06:09 +01:00
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2021-06-25 15:13:59 +02:00
|
|
|
|
2026-06-25 08:57:04 +02:00
|
|
|
|
2022-02-25 21:51:33 +01:00
|
|
|
|
|
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2026-06-25 08:57:04 +02:00
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2026-06-25 08:57:04 +02:00
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2026-06-25 08:57:04 +02:00
|
|
|
|
|
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2026-06-25 08:57:04 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-25 15:09:46 +02:00
|
|
|
|
2025-03-11 18:18:57 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-14 16:48:13 +01:00
|
|
|
|
2025-03-11 18:18:57 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-10-18 18:08:34 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-02-20 14:31:17 +01:00
|
|
|
|
2016-10-18 18:08:34 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-04-10 10:47:28 +02:00
|
|
|
|
|
|
|
|
|
2019-06-17 14:33:23 +02:00
|
|
|
|
2019-04-10 10:47:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-08-22 03:43:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-02-04 14:14:15 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-05-21 16:10:29 +01:00
|
|
|
|
2015-06-10 23:05:08 +02:00
|
|
|
|
2021-09-13 17:00:57 +01:00
|
|
|
|
2011-04-29 17:39:19 -07:00
|
|
|
|
2013-02-08 15:48:51 +00:00
|
|
|
|
2018-10-07 21:04:42 +08:00
|
|
|
|
2016-08-27 15:43:43 +02:00
|
|
|
|
2023-10-20 14:18:43 +01:00
|
|
|
|
2020-05-18 10:12:16 +01:00
|
|
|
|
2023-10-17 11:27:18 +02:00
|
|
|
|
2025-02-13 13:05:15 +00:00
|
|
|
|
2020-05-18 10:12:16 +01:00
|
|
|
|
2016-08-19 19:05:04 +02:00
|
|
|
|
2018-09-12 12:38:36 -07:00
|
|
|
|
2011-04-29 17:39:19 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
|