Lines Matching +full:reboot +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0-only
3 * linux/kernel/reboot.c
8 #define pr_fmt(fmt) "reboot: " fmt
16 #include <linux/reboot.h>
23 * this indicates whether you can reboot with ctrl-alt-del: the default is yes
41 * reboot_type is still set to its default value (i.e., reboot= hasn't
43 * suppress DMI scanning for reboot quirks. Without it, it's
44 * impossible to override a faulty reboot quirk without recompiling.
55 enum sys_off_mode mode; member
63 * reboot when the reboot call was invoked with LINUX_REBOOT_CMD_POWER_OFF, but
76 * emergency_restart - reboot the system
79 * reboot the system. This is called when we know we are in
80 * trouble so this is our best effort to reboot. This is
100 * register_reboot_notifier - Register function to be called at reboot time
104 * to be called at reboot time.
116 * unregister_reboot_notifier - Unregister previously registered reboot notifier
119 * Unregisters a previously registered reboot
122 * Returns zero on success, or %-ENOENT on failure.
143 return -ENOMEM; in devm_register_reboot_notifier()
164 * register_restart_handler - Register function to be called to reset
167 * @nb->priority: Handler priority. Handlers should follow the
183 * machine_restart function calls do_kernel_restart - see below
189 * Restart handlers are expected to be registered from non-architecture
208 * unregister_restart_handler - Unregister previously registered
214 * Returns zero on success, or %-ENOENT on failure.
223 * do_kernel_restart - Execute kernel restart handler call chain
245 /* Make certain the cpu I'm about to reboot on is online */ in migrate_to_reboot_cpu()
250 current->flags |= PF_NO_SETAFFINITY; in migrate_to_reboot_cpu()
268 * kernel_restart - reboot the system
272 * Shutdown everything and perform a clean reboot.
299 * kernel_halt - halt the system
330 unsigned long mode, void *cmd) in sys_off_notify() argument
336 data.cb_data = handler->cb_data; in sys_off_notify()
337 data.mode = mode; in sys_off_notify()
339 data.dev = handler->dev; in sys_off_notify()
341 return handler->sys_off_cb(&data); in sys_off_notify()
357 if (handler->cb_data) in alloc_sys_off_handler()
358 return ERR_PTR(-EBUSY); in alloc_sys_off_handler()
367 return ERR_PTR(-ENOMEM); in alloc_sys_off_handler()
382 * register_sys_off_handler - Register sys-off handler
383 * @mode: Sys-off mode
388 * Registers system power-off or restart handler that will be invoked
389 * at the step corresponding to the given sys-off mode. Handler's callback
396 * Only one handler can be registered at the non-default priority level,
397 * otherwise ERR_PTR(-EBUSY) is returned.
400 * an ERR_PTR()-encoded error code otherwise.
403 register_sys_off_handler(enum sys_off_mode mode, in register_sys_off_handler() argument
415 switch (mode) { in register_sys_off_handler()
417 handler->list = &power_off_prep_handler_list; in register_sys_off_handler()
418 handler->blocking = true; in register_sys_off_handler()
422 handler->list = &power_off_handler_list; in register_sys_off_handler()
426 handler->list = &restart_prep_handler_list; in register_sys_off_handler()
427 handler->blocking = true; in register_sys_off_handler()
431 handler->list = &restart_handler_list; in register_sys_off_handler()
436 return ERR_PTR(-EINVAL); in register_sys_off_handler()
439 handler->nb.notifier_call = sys_off_notify; in register_sys_off_handler()
440 handler->nb.priority = priority; in register_sys_off_handler()
441 handler->sys_off_cb = callback; in register_sys_off_handler()
442 handler->cb_data = cb_data; in register_sys_off_handler()
443 handler->mode = mode; in register_sys_off_handler()
445 if (handler->blocking) { in register_sys_off_handler()
447 err = blocking_notifier_chain_register(handler->list, in register_sys_off_handler()
448 &handler->nb); in register_sys_off_handler()
450 err = blocking_notifier_chain_register_unique_prio(handler->list, in register_sys_off_handler()
451 &handler->nb); in register_sys_off_handler()
454 err = atomic_notifier_chain_register(handler->list, in register_sys_off_handler()
455 &handler->nb); in register_sys_off_handler()
457 err = atomic_notifier_chain_register_unique_prio(handler->list, in register_sys_off_handler()
458 &handler->nb); in register_sys_off_handler()
471 * unregister_sys_off_handler - Unregister sys-off handler
472 * @handler: Sys-off handler
474 * Unregisters given sys-off handler.
483 if (handler->blocking) in unregister_sys_off_handler()
484 err = blocking_notifier_chain_unregister(handler->list, in unregister_sys_off_handler()
485 &handler->nb); in unregister_sys_off_handler()
487 err = atomic_notifier_chain_unregister(handler->list, in unregister_sys_off_handler()
488 &handler->nb); in unregister_sys_off_handler()
505 * devm_register_sys_off_handler - Register sys-off handler
507 * @mode: Sys-off mode
512 * Registers resource-managed sys-off handler.
517 enum sys_off_mode mode, in devm_register_sys_off_handler() argument
524 handler = register_sys_off_handler(mode, priority, callback, cb_data); in devm_register_sys_off_handler()
527 handler->dev = dev; in devm_register_sys_off_handler()
535 * devm_register_power_off_handler - Register power-off handler
540 * Registers resource-managed sys-off handler with a default priority
541 * and using power-off mode.
557 * devm_register_restart_handler - Register restart handler
562 * Registers resource-managed sys-off handler with a default priority
563 * and using restart mode.
582 void (*platform_power_power_off_cb)(void) = data->cb_data; in platform_power_off_notify()
590 * register_platform_power_off - Register platform-level power-off callback
591 * @power_off: Power-off callback
593 * Registers power-off callback that will be called as last step
594 * of the power-off sequence. This callback is expected to be invoked
595 * for the last resort. Only one platform power-off callback is allowed
618 * unregister_platform_power_off - Unregister platform-level power-off callback
619 * @power_off: Power-off callback
621 * Unregisters previously registered platform power-off callback.
626 platform_power_off_handler->cb_data == power_off) { in unregister_platform_power_off()
647 * do_kernel_power_off - Execute kernel power-off handler call chain
649 * Expected to be called as last step of the power-off sequence.
651 * Powers off the system immediately if a power-off handler function has
659 * Register sys-off handlers for legacy PM callback. This allows in do_kernel_power_off()
660 * legacy PM callbacks temporary co-exist with the new sys-off API. in do_kernel_power_off()
663 * switched to the sys-off based APIs. in do_kernel_power_off()
676 * kernel_can_power_off - check whether system can be powered off
678 * Returns true if power-off handler is registered and system can be
689 * kernel_power_off - power_off the system
708 * Reboot system call: for obvious reasons only root may call it,
710 * so that some mistake won't make this reboot the whole machine.
711 * You can also set the meaning of the ctrl-alt-del-key here.
713 * reboot doesn't sync: do that yourself before calling this.
715 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, in SYSCALL_DEFINE4() argument
723 if (!ns_capable(pid_ns->user_ns, CAP_SYS_BOOT)) in SYSCALL_DEFINE4()
724 return -EPERM; in SYSCALL_DEFINE4()
732 return -EINVAL; in SYSCALL_DEFINE4()
775 ret = strncpy_from_user(&buffer[0], arg, sizeof(buffer) - 1); in SYSCALL_DEFINE4()
777 ret = -EFAULT; in SYSCALL_DEFINE4()
780 buffer[sizeof(buffer) - 1] = '\0'; in SYSCALL_DEFINE4()
798 ret = -EINVAL; in SYSCALL_DEFINE4()
811 * This function gets called by ctrl-alt-del - ie the keyboard interrupt.
813 * is whether to reboot at once, or just ignore the ctrl-alt-del.
827 static const char reboot_cmd[] = "/sbin/reboot";
843 ret = -ENOMEM; in run_cmd()
856 pr_warn("Failed to start orderly reboot: forcing the issue\n"); in __orderly_reboot()
895 * orderly_poweroff - Trigger an orderly system poweroff
917 * orderly_reboot - Trigger an orderly system reboot
919 * This may be called from any context to trigger a system reboot.
920 * If the orderly reboot fails, it will force an immediate reboot.
929 * hw_failure_emergency_poweroff_func - emergency poweroff work after a known delay
945 pr_emerg("Hardware protection timed-out. Trying forced poweroff\n"); in hw_failure_emergency_poweroff_func()
959 * hw_failure_emergency_poweroff - Trigger an emergency system poweroff
973 * __hw_protection_shutdown - Trigger an emergency system shutdown or reboot
975 * @reason: Reason of emergency shutdown or reboot to be printed.
976 * @ms_until_forced: Time to wait for orderly shutdown or reboot before
978 * shutdown or reboot.
981 * If false, indicates that a reboot will happen
984 * Initiate an emergency system shutdown or reboot in order to protect
986 * NOTE: The request is ignored if protection shutdown or reboot is already
988 * shutdown/reboot.
1015 enum reboot_mode *mode; in reboot_setup() local
1019 * reboot= will cause us to disable DMI checking in reboot_setup()
1025 mode = &panic_reboot_mode; in reboot_setup()
1028 mode = &reboot_mode; in reboot_setup()
1033 *mode = REBOOT_WARM; in reboot_setup()
1037 *mode = REBOOT_COLD; in reboot_setup()
1041 *mode = REBOOT_HARD; in reboot_setup()
1055 pr_err("Ignoring the CPU number in reboot= option. " in reboot_setup()
1062 *mode = REBOOT_SOFT; in reboot_setup()
1066 *mode = REBOOT_GPIO; in reboot_setup()
1091 __setup("reboot=", reboot_setup);
1139 return -EPERM; in mode_store()
1152 return -EINVAL; in mode_store()
1158 static struct kobj_attribute reboot_mode_attr = __ATTR_RW(mode);
1171 return -EPERM; in force_store()
1174 return -EINVAL; in force_store()
1216 return -EPERM; in type_store()
1231 return -EINVAL; in type_store()
1252 return -EPERM; in cpu_store()
1260 return -ERANGE; in cpu_store()
1288 .mode = 0644,
1292 .procname = "ctrl-alt-del",
1295 .mode = 0644,
1318 reboot_kobj = kobject_create_and_add("reboot", kernel_kobj); in reboot_ksysfs_init()
1320 return -ENOMEM; in reboot_ksysfs_init()