Skip to content
  • Matteo Croce's avatar
    reboot: allow to specify reboot mode via sysfs · eab90a23
    Matteo Croce authored
    The kernel cmdline reboot= option offers some sort of control on how the
    reboot is issued.
    
    We don't always know in advance what type of reboot to perform.
    
    Sometimes a warm reboot is preferred to persist certain memory regions
    across the reboot.  Others a cold one is needed to apply a future
    system update that makes a memory memory model change, like changing
    the base page size or resizing a persistent memory region.
    
    Or simply we want to enable reboot_force because we noticed that
    something bad happened.
    
    Add handles in sysfs to allow setting these reboot options, so they can
    be changed when the system is booted, other than at boot time.
    
    The handlers are under <sysfs>/kernel/reboot, can be read to get the
    current configuration and written to alter it.
    
    	# cd /sys/kernel/reboot/
    
    	# grep . *
    	cpu:0
    	force:0
    	mode:cold
    	type:acpi
    
    	# echo 2 >cpu
    	# echo yes >force
    	# echo soft >mode
    	# echo bios >type
    
    	# grep . *
    	cpu:2
    	force:1
    	mode:soft
    	type:bios
    
    Before setting anything, check for CAP_SYS_BOOT capability, so it's
    possible to allow an unpriviledged process to change these settings simply
    by relaxing the handles permissions, without opening them to the world.
    
    Link: https://lkml.kernel.org/r/20201110202746.9690-1-mcroce@linux.microsoft.com
    
    
    Signed-off-by: default avatarMatteo Croce <mcroce@microsoft.com>
    Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Tyler Hicks <tyhicks@linux.microsoft.com>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
    eab90a23