1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPILINUX_KEXEC_H 3*f80ad8b4SAndroid Build Coastguard Worker #define _UAPILINUX_KEXEC_H 4*f80ad8b4SAndroid Build Coastguard Worker 5*f80ad8b4SAndroid Build Coastguard Worker /* kexec system call - It loads the new kernel to boot into. 6*f80ad8b4SAndroid Build Coastguard Worker * kexec does not sync, or unmount filesystems so if you need 7*f80ad8b4SAndroid Build Coastguard Worker * that to happen you need to do that yourself. 8*f80ad8b4SAndroid Build Coastguard Worker */ 9*f80ad8b4SAndroid Build Coastguard Worker 10*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 11*f80ad8b4SAndroid Build Coastguard Worker 12*f80ad8b4SAndroid Build Coastguard Worker /* kexec flags for different usage scenarios */ 13*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ON_CRASH 0x00000001 14*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_PRESERVE_CONTEXT 0x00000002 15*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_UPDATE_ELFCOREHDR 0x00000004 16*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_CRASH_HOTPLUG_SUPPORT 0x00000008 17*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_MASK 0xffff0000 18*f80ad8b4SAndroid Build Coastguard Worker 19*f80ad8b4SAndroid Build Coastguard Worker /* 20*f80ad8b4SAndroid Build Coastguard Worker * Kexec file load interface flags. 21*f80ad8b4SAndroid Build Coastguard Worker * KEXEC_FILE_UNLOAD : Unload already loaded kexec/kdump image. 22*f80ad8b4SAndroid Build Coastguard Worker * KEXEC_FILE_ON_CRASH : Load/unload operation belongs to kdump image. 23*f80ad8b4SAndroid Build Coastguard Worker * KEXEC_FILE_NO_INITRAMFS : No initramfs is being loaded. Ignore the initrd 24*f80ad8b4SAndroid Build Coastguard Worker * fd field. 25*f80ad8b4SAndroid Build Coastguard Worker */ 26*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_FILE_UNLOAD 0x00000001 27*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_FILE_ON_CRASH 0x00000002 28*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_FILE_NO_INITRAMFS 0x00000004 29*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_FILE_DEBUG 0x00000008 30*f80ad8b4SAndroid Build Coastguard Worker 31*f80ad8b4SAndroid Build Coastguard Worker /* These values match the ELF architecture values. 32*f80ad8b4SAndroid Build Coastguard Worker * Unless there is a good reason that should continue to be the case. 33*f80ad8b4SAndroid Build Coastguard Worker */ 34*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_DEFAULT ( 0 << 16) 35*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_386 ( 3 << 16) 36*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_68K ( 4 << 16) 37*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_PARISC (15 << 16) 38*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_X86_64 (62 << 16) 39*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_PPC (20 << 16) 40*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_PPC64 (21 << 16) 41*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_IA_64 (50 << 16) 42*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_ARM (40 << 16) 43*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_S390 (22 << 16) 44*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_SH (42 << 16) 45*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_MIPS_LE (10 << 16) 46*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_MIPS ( 8 << 16) 47*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_AARCH64 (183 << 16) 48*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_RISCV (243 << 16) 49*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_ARCH_LOONGARCH (258 << 16) 50*f80ad8b4SAndroid Build Coastguard Worker 51*f80ad8b4SAndroid Build Coastguard Worker /* The artificial cap on the number of segments passed to kexec_load. */ 52*f80ad8b4SAndroid Build Coastguard Worker #define KEXEC_SEGMENT_MAX 16 53*f80ad8b4SAndroid Build Coastguard Worker 54*f80ad8b4SAndroid Build Coastguard Worker #ifndef __KERNEL__ 55*f80ad8b4SAndroid Build Coastguard Worker /* 56*f80ad8b4SAndroid Build Coastguard Worker * This structure is used to hold the arguments that are used when 57*f80ad8b4SAndroid Build Coastguard Worker * loading kernel binaries. 58*f80ad8b4SAndroid Build Coastguard Worker */ 59*f80ad8b4SAndroid Build Coastguard Worker struct kexec_segment { 60*f80ad8b4SAndroid Build Coastguard Worker const void *buf; 61*f80ad8b4SAndroid Build Coastguard Worker __kernel_size_t bufsz; 62*f80ad8b4SAndroid Build Coastguard Worker const void *mem; 63*f80ad8b4SAndroid Build Coastguard Worker __kernel_size_t memsz; 64*f80ad8b4SAndroid Build Coastguard Worker }; 65*f80ad8b4SAndroid Build Coastguard Worker 66*f80ad8b4SAndroid Build Coastguard Worker #endif /* __KERNEL__ */ 67*f80ad8b4SAndroid Build Coastguard Worker 68*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPILINUX_KEXEC_H */ 69