]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kernel/reboot: Add do_kernel_power_off()
authorDmitry Osipenko <dmitry.osipenko@collabora.com>
Mon, 9 May 2022 23:32:13 +0000 (02:32 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 19 May 2022 17:30:30 +0000 (19:30 +0200)
Add do_kernel_power_off() helper that will remove open-coded pm_power_off
invocations from the architecture code. This is the first step on the way
to remove the global pm_power_off variable, which will allow us to
implement consistent power-off chaining support.

Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
include/linux/reboot.h
kernel/reboot.c

index b79f8942ea5f42023a6b9439385dd396f7e8d027..99a9753e77bca46458ddac78d12ff64c4f2f73bc 100644 (file)
@@ -63,6 +63,8 @@ extern void machine_shutdown(void);
 struct pt_regs;
 extern void machine_crash_shutdown(struct pt_regs *);
 
+void do_kernel_power_off(void);
+
 /*
  * sys-off handler API.
  */
index 96f681f7b20c7b65108ac550c30add38aa7d41a9..892d25aa12df55d84d9c1f49ea86b98bed3b61dd 100644 (file)
@@ -504,6 +504,19 @@ static void do_kernel_power_off_prepare(void)
        blocking_notifier_call_chain(&power_off_prep_handler_list, 0, NULL);
 }
 
+/**
+ *     do_kernel_power_off - Execute kernel power-off handler call chain
+ *
+ *     Expected to be called as last step of the power-off sequence.
+ *
+ *     Powers off the system immediately if a power-off handler function has
+ *     been registered. Otherwise does nothing.
+ */
+void do_kernel_power_off(void)
+{
+       atomic_notifier_call_chain(&power_off_handler_list, 0, NULL);
+}
+
 /**
  *     kernel_power_off - power_off the system
  *