Add support for disabling the use of CMA for placing kexec payloads. This is done via the --no-cma flag.
Signed-off-by: Brian Mak <[email protected]> --- kexec/kexec-syscall.h | 1 + kexec/kexec.c | 4 ++++ kexec/kexec.h | 8 +++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h index b60804f..77e6b81 100644 --- a/kexec/kexec-syscall.h +++ b/kexec/kexec-syscall.h @@ -128,6 +128,7 @@ static inline long kexec_file_load(int kernel_fd, int initrd_fd, #define KEXEC_FILE_ON_CRASH 0x00000002 #define KEXEC_FILE_NO_INITRAMFS 0x00000004 #define KEXEC_FILE_DEBUG 0x00000008 +#define KEXEC_FILE_NO_CMA 0x00000010 /* These values match the ELF architecture values. * Unless there is a good reason that should continue to be the case. diff --git a/kexec/kexec.c b/kexec/kexec.c index 4a49ad4..ccdf4cd 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -1102,6 +1102,7 @@ void usage(void) " --hotplug Do in-kernel update of kexec segments on CPU/Memory\n" " hot add/remove events, avoiding the need to reload\n" " kdump kernel on online/offline events.\n" + " --no-cma Don't use CMA for placing kexec payloads.\n" " -d, --debug Enable debugging to help spot a failure.\n" " -S, --status Return 1 if the type (by default crash) is loaded,\n" " 0 if not.\n" @@ -1675,6 +1676,9 @@ int main(int argc, char *argv[]) case OPT_HOTPLUG: do_hotplug = 1; break; + case OPT_NO_CMA: + kexec_file_flags |= KEXEC_FILE_NO_CMA; + break; default: break; } diff --git a/kexec/kexec.h b/kexec/kexec.h index d0bccb5..a1edc1e 100644 --- a/kexec/kexec.h +++ b/kexec/kexec.h @@ -234,8 +234,9 @@ extern int file_types; #define OPT_PRINT_CKR_SIZE 262 #define OPT_LOAD_LIVE_UPDATE 263 #define OPT_EXEC_LIVE_UPDATE 264 -#define OPT_HOTPLUG 265 -#define OPT_MAX 266 +#define OPT_HOTPLUG 265 +#define OPT_NO_CMA 266 +#define OPT_MAX 267 #define KEXEC_OPTIONS \ { "help", 0, 0, OPT_HELP }, \ { "version", 0, 0, OPT_VERSION }, \ @@ -262,7 +263,8 @@ extern int file_types; { "debug", 0, 0, OPT_DEBUG }, \ { "status", 0, 0, OPT_STATUS }, \ { "print-ckr-size", 0, 0, OPT_PRINT_CKR_SIZE }, \ - { "hotplug", 0, 0, OPT_HOTPLUG }, \ + { "hotplug", 0, 0, OPT_HOTPLUG }, \ + { "no-cma", 0, 0, OPT_NO_CMA }, \ #define KEXEC_OPT_STR "h?vdfixyluet:pscaS" -- 2.34.1
