Messages in this thread | | | Date | Tue, 6 Sep 2022 23:07:35 +0300 | Subject | Re: [PATCH v2] PM: ACPI: reboot: Reinstate S5 for reboot | From | Dmitry Osipenko <> |
| |
06.09.2022 17:31, Kai-Heng Feng пишет: > Commit d60cd06331a3 ("PM: ACPI: reboot: Use S5 for reboot") caused Dell > PowerEdge r440 hangs at boot. > > The issue is fixed by commit 2ca1c94ce0b6 ("tg3: Disable tg3 device on > system reboot to avoid triggering AER"), so reinstate the patch again. > > Cc: Josef Bacik <josef@toxicpanda.com> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> > --- > v2: > - Use do_kernel_power_off_prepare() instead. > > kernel/reboot.c | 55 +++++++++++++++++++++++++------------------------ > 1 file changed, 28 insertions(+), 27 deletions(-) > > diff --git a/kernel/reboot.c b/kernel/reboot.c > index 3c35445bf5ad3..39cbb45afc54a 100644 > --- a/kernel/reboot.c > +++ b/kernel/reboot.c > @@ -243,28 +243,6 @@ void migrate_to_reboot_cpu(void) > set_cpus_allowed_ptr(current, cpumask_of(cpu)); > } > > -/** > - * kernel_restart - reboot the system > - * @cmd: pointer to buffer containing command to execute for restart > - * or %NULL > - * > - * Shutdown everything and perform a clean reboot. > - * This is not safe to call in interrupt context. > - */ > -void kernel_restart(char *cmd) > -{ > - kernel_restart_prepare(cmd); > - migrate_to_reboot_cpu(); > - syscore_shutdown(); > - if (!cmd) > - pr_emerg("Restarting system\n"); > - else > - pr_emerg("Restarting system with command '%s'\n", cmd); > - kmsg_dump(KMSG_DUMP_SHUTDOWN); > - machine_restart(cmd); > -} > -EXPORT_SYMBOL_GPL(kernel_restart); > - > static void kernel_shutdown_prepare(enum system_states state) > { > blocking_notifier_call_chain(&reboot_notifier_list, > @@ -301,6 +279,34 @@ static BLOCKING_NOTIFIER_HEAD(power_off_prep_handler_list); > */ > static ATOMIC_NOTIFIER_HEAD(power_off_handler_list); > > +static void do_kernel_power_off_prepare(void) > +{ > + blocking_notifier_call_chain(&power_off_prep_handler_list, 0, NULL); > +} > + > +/** > + * kernel_restart - reboot the system > + * @cmd: pointer to buffer containing command to execute for restart > + * or %NULL > + * > + * Shutdown everything and perform a clean reboot. > + * This is not safe to call in interrupt context. > + */ > +void kernel_restart(char *cmd) > +{ > + kernel_restart_prepare(cmd); > + do_kernel_power_off_prepare();
Looks like an abuse to me. Adding new SYS_OFF_MODE_RESTART_PREPARE and updating acpi_sleep_init() to use it should be a better solution.
| |