diff --git a/kexec-tools-2.0.25-ppc64-ppc64-remove-rma_top-limit.patch b/kexec-tools-2.0.25-ppc64-ppc64-remove-rma_top-limit.patch
deleted file mode 100644
index 683447d..0000000
--- a/kexec-tools-2.0.25-ppc64-ppc64-remove-rma_top-limit.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 6b6187f546f0ddad8ea84d22c3f7ad72133dcfe3 Mon Sep 17 00:00:00 2001
-From: Sourabh Jain <sourabhjain@linux.ibm.com>
-Date: Thu, 15 Sep 2022 14:12:40 +0530
-Subject: [PATCH] ppc64: remove rma_top limit
-
-Restricting kexec tool to allocate hole for kexec segments below 768MB
-may not be relavent now since first memory block size can be 1024MB and
-more.
-
-Removing rma_top restriction will give more space to find holes for
-kexec segments and existing in-place checks make sure that kexec segment
-allocation doesn't cross the first memory block because every kexec segment
-has to be within first memory block for kdump kernel to boot properly.
-
-Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
-Acked-by: Hari Bathini <hbathini@linux.ibm.com>
-Signed-off-by: Simon Horman <horms@kernel.org>
----
- kexec/arch/ppc64/kexec-ppc64.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/kexec/arch/ppc64/kexec-ppc64.c b/kexec/arch/ppc64/kexec-ppc64.c
-index 5b17740..611809f 100644
---- a/kexec/arch/ppc64/kexec-ppc64.c
-+++ b/kexec/arch/ppc64/kexec-ppc64.c
-@@ -717,8 +717,6 @@ static int get_devtree_details(unsigned long kexec_flags)
- 			if (base < rma_base) {
- 				rma_base = base;
- 				rma_top = base + be64_to_cpu(((uint64_t *)buf)[1]);
--				if (rma_top > 0x30000000UL)
--					rma_top = 0x30000000UL;
- 			}
- 
- 			fclose(file);
--- 
-2.38.1
-
diff --git a/kexec-tools-2.0.26-0001-ppc64-add-reuse-cmdline-parameter-support.patch b/kexec-tools-2.0.26-0001-ppc64-add-reuse-cmdline-parameter-support.patch
new file mode 100644
index 0000000..3b97cb1
--- /dev/null
+++ b/kexec-tools-2.0.26-0001-ppc64-add-reuse-cmdline-parameter-support.patch
@@ -0,0 +1,147 @@
+From e63fefd4fc355f29d839ca47484b0f8070e38ccb Mon Sep 17 00:00:00 2001
+From: Sourabh Jain <sourabhjain@linux.ibm.com>
+Date: Wed, 1 Feb 2023 14:23:31 +0530
+Subject: [PATCH 1/6] ppc64: add --reuse-cmdline parameter support
+
+An option to copy the command line arguments from running kernel
+to kexec'd kernel. This option works for both kexec and kdump.
+
+In case --append=<args> or --command-line=<args> is provided along
+with --reuse-cmdline parameter then args listed against append and
+command-line parameter will be combined with command line argument
+from running kernel.
+
+Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
+Signed-off-by: Simon Horman <horms@kernel.org>
+---
+ kexec/arch/ppc64/include/arch/options.h |  4 +++-
+ kexec/arch/ppc64/kexec-elf-ppc64.c      | 25 +++++++++++++++++++++++--
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+
+diff --git a/kexec/arch/ppc64/include/arch/options.h b/kexec/arch/ppc64/include/arch/options.h
+index 71632ec..2bca96a 100644
+--- a/kexec/arch/ppc64/include/arch/options.h
++++ b/kexec/arch/ppc64/include/arch/options.h
+@@ -10,6 +10,7 @@
+ #define OPT_RAMDISK		(OPT_ARCH_MAX+1)
+ #define OPT_DEVICETREEBLOB	(OPT_ARCH_MAX+2)
+ #define OPT_ARGS_IGNORE		(OPT_ARCH_MAX+3)
++#define OPT_REUSE_CMDLINE	(OPT_ARCH_MAX+4)
+ 
+ /* Options relevant to the architecture (excluding loader-specific ones): */
+ #define KEXEC_ARCH_OPTIONS \
+@@ -41,7 +42,8 @@
+ 	{ "initrd",             1, NULL, OPT_RAMDISK },		\
+ 	{ "devicetreeblob",     1, NULL, OPT_DEVICETREEBLOB },	\
+ 	{ "dtb",                1, NULL, OPT_DEVICETREEBLOB },	\
+-	{ "args-linux",         0, NULL, OPT_ARGS_IGNORE },
++	{ "args-linux",         0, NULL, OPT_ARGS_IGNORE },	\
++	{ "reuse-cmdline",      0, NULL, OPT_REUSE_CMDLINE },
+ 
+ #define KEXEC_ALL_OPT_STR KEXEC_OPT_STR
+ 
+diff --git a/kexec/arch/ppc64/kexec-elf-ppc64.c b/kexec/arch/ppc64/kexec-elf-ppc64.c
+index 695b8b0..01d045f 100644
+--- a/kexec/arch/ppc64/kexec-elf-ppc64.c
++++ b/kexec/arch/ppc64/kexec-elf-ppc64.c
+@@ -95,6 +95,8 @@ static int elf_ppc64_load_file(int argc, char **argv, struct kexec_info *info)
+ {
+ 	int ret = 0;
+ 	char *cmdline, *dtb;
++	char *append_cmdline = NULL;
++	char *reuse_cmdline = NULL;
+ 	int opt, cmdline_len = 0;
+ 
+ 	/* See options.h -- add any more there, too. */
+@@ -107,6 +109,7 @@ static int elf_ppc64_load_file(int argc, char **argv, struct kexec_info *info)
+ 		{ "devicetreeblob",     1, NULL, OPT_DEVICETREEBLOB },
+ 		{ "dtb",                1, NULL, OPT_DEVICETREEBLOB },
+ 		{ "args-linux",		0, NULL, OPT_ARGS_IGNORE },
++		{ "reuse-cmdline",	0, NULL, OPT_REUSE_CMDLINE},
+ 		{ 0,                    0, NULL, 0 },
+ 	};
+ 
+@@ -125,7 +128,7 @@ static int elf_ppc64_load_file(int argc, char **argv, struct kexec_info *info)
+ 			if (opt < OPT_ARCH_MAX)
+ 				break;
+ 		case OPT_APPEND:
+-			cmdline = optarg;
++			append_cmdline = optarg;
+ 			break;
+ 		case OPT_RAMDISK:
+ 			ramdisk = optarg;
+@@ -135,6 +138,9 @@ static int elf_ppc64_load_file(int argc, char **argv, struct kexec_info *info)
+ 			break;
+ 		case OPT_ARGS_IGNORE:
+ 			break;
++		case OPT_REUSE_CMDLINE:
++			reuse_cmdline = get_command_line();
++			break;
+ 		}
+ 	}
+ 
+@@ -144,6 +150,10 @@ static int elf_ppc64_load_file(int argc, char **argv, struct kexec_info *info)
+ 	if (reuse_initrd)
+ 		die("--reuseinitrd not supported with --kexec-file-syscall.\n");
+ 
++	cmdline = concat_cmdline(reuse_cmdline, append_cmdline);
++	if (!reuse_cmdline)
++		free(reuse_cmdline);
++
+ 	if (cmdline) {
+ 		cmdline_len = strlen(cmdline) + 1;
+ 	} else {
+@@ -175,6 +185,8 @@ int elf_ppc64_load(int argc, char **argv, const char *buf, off_t len,
+ {
+ 	struct mem_ehdr ehdr;
+ 	char *cmdline, *modified_cmdline = NULL;
++	char *reuse_cmdline = NULL;
++	char *append_cmdline = NULL;
+ 	const char *devicetreeblob;
+ 	uint64_t max_addr, hole_addr;
+ 	char *seg_buf = NULL;
+@@ -204,6 +216,7 @@ int elf_ppc64_load(int argc, char **argv, const char *buf, off_t len,
+ 		{ "devicetreeblob",     1, NULL, OPT_DEVICETREEBLOB },
+ 		{ "dtb",                1, NULL, OPT_DEVICETREEBLOB },
+ 		{ "args-linux",		0, NULL, OPT_ARGS_IGNORE },
++		{ "reuse-cmdline",	0, NULL, OPT_REUSE_CMDLINE},
+ 		{ 0,                    0, NULL, 0 },
+ 	};
+ 
+@@ -229,7 +242,7 @@ int elf_ppc64_load(int argc, char **argv, const char *buf, off_t len,
+ 			if (opt < OPT_ARCH_MAX)
+ 				break;
+ 		case OPT_APPEND:
+-			cmdline = optarg;
++			append_cmdline = optarg;
+ 			break;
+ 		case OPT_RAMDISK:
+ 			ramdisk = optarg;
+@@ -239,9 +252,16 @@ int elf_ppc64_load(int argc, char **argv, const char *buf, off_t len,
+ 			break;
+ 		case OPT_ARGS_IGNORE:
+ 			break;
++		case OPT_REUSE_CMDLINE:
++			reuse_cmdline = get_command_line();
++			break;
+ 		}
+ 	}
+ 
++	cmdline = concat_cmdline(reuse_cmdline, append_cmdline);
++	if (!reuse_cmdline)
++		free(reuse_cmdline);
++
+ 	if (!cmdline)
+ 		fprintf(stdout, "Warning: append= option is not passed. Using the first kernel root partition\n");
+ 
+@@ -469,6 +489,7 @@ void elf_ppc64_usage(void)
+ 	fprintf(stderr, "     --devicetreeblob=<filename> Specify device tree blob file.\n");
+ 	fprintf(stderr, "                                 ");
+ 	fprintf(stderr, "Not applicable while using --kexec-file-syscall.\n");
++	fprintf(stderr, "     --reuse-cmdline Use kernel command line from running system.\n");
+ 	fprintf(stderr, "     --dtb=<filename> same as --devicetreeblob.\n");
+ 
+ 	fprintf(stderr, "elf support is still broken\n");
+-- 
+2.33.1
+
diff --git a/kexec-tools-2.0.26-0002-kexec-make-a-the-default.patch b/kexec-tools-2.0.26-0002-kexec-make-a-the-default.patch
new file mode 100644
index 0000000..2ac0c29
--- /dev/null
+++ b/kexec-tools-2.0.26-0002-kexec-make-a-the-default.patch
@@ -0,0 +1,108 @@
+From 29fe5067ed07452bcbbbe5fcd0b4e4215f598014 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ahelenia=20Ziemia=C5=84ska?=
+ <nabijaczleweli@nabijaczleweli.xyz>
+Date: Fri, 3 Feb 2023 00:10:18 +0100
+Subject: [PATCH 2/6] kexec: make -a the default
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+AFAICT, there's no downside to this, and running into this each time
+I want to kexec (and, presumably, a significant chunk of the population,
+since lockdown is quite popular) on some machines,
+then going to the manual, then finding out I want the /auto/ flag(!)
+is quite annoying:
+  # kexec -l /boot/vmlinuz-6.1.0-3-amd64 --initrd /boot/initrd.img-6.1.0-3-amd64 --reuse-cmdline
+  kexec_load failed: Operation not permitted
+  entry       = 0x46eff7760 flags = 0x3e0000
+  nr_segments = 7
+  segment[0].buf   = 0x557cd303efa0
+  segment[0].bufsz = 0x70
+  segment[0].mem   = 0x100000
+  segment[0].memsz = 0x1000
+  segment[1].buf   = 0x557cd3046fe0
+  segment[1].bufsz = 0x190
+  segment[1].mem   = 0x101000
+  segment[1].memsz = 0x1000
+  segment[2].buf   = 0x557cd303f6e0
+  segment[2].bufsz = 0x30
+  segment[2].mem   = 0x102000
+  segment[2].memsz = 0x1000
+  segment[3].buf   = 0x7f658fa37010
+  segment[3].bufsz = 0x12a51b5
+  segment[3].mem   = 0x46a55a000
+  segment[3].memsz = 0x12a6000
+  segment[4].buf   = 0x7f6590ce1210
+  segment[4].bufsz = 0x7e99e0
+  segment[4].mem   = 0x46b800000
+  segment[4].memsz = 0x377c000
+  segment[5].buf   = 0x557cd3039350
+  segment[5].bufsz = 0x42fa
+  segment[5].mem   = 0x46eff2000
+  segment[5].memsz = 0x5000
+  segment[6].buf   = 0x557cd3032000
+  segment[6].bufsz = 0x70e0
+  segment[6].mem   = 0x46eff7000
+  segment[6].memsz = 0x9000
+
+Closes: https://bugs.debian.org/1030248
+Signed-off-by: Ahelenia ZiemiaƄska <nabijaczleweli@nabijaczleweli.xyz>
+Signed-off-by: Simon Horman <horms@kernel.org>
+---
+ kexec/kexec.8 | 4 ++--
+ kexec/kexec.c | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/kexec/kexec.8 b/kexec/kexec.8
+index 3ebede6..66453b8 100644
+--- a/kexec/kexec.8
++++ b/kexec/kexec.8
+@@ -151,14 +151,14 @@ Specify that the new kernel is of this
+ Specify that the new KEXEC_FILE_LOAD syscall should be used exclusively.
+ .TP
+ .BI \-c\ (\-\-kexec-syscall)
+-Specify that the old KEXEC_LOAD syscall should be used exclusively (the default).
++Specify that the old KEXEC_LOAD syscall should be used exclusively.
+ .TP
+ .BI \-a\ (\-\-kexec-syscall-auto)
+ Try the new KEXEC_FILE_LOAD syscall first and when it is not supported or the
+ kernel does not understand the supplied image fall back to the old KEXEC_LOAD
+ interface.
+ 
+-There is no one single interface that always works.
++There is no one single interface that always works, so this is the default.
+ 
+ KEXEC_FILE_LOAD is required on systems that use locked-down secure boot to
+ verify the kernel signature.  KEXEC_LOAD may be also disabled in the kernel
+diff --git a/kexec/kexec.c b/kexec/kexec.c
+index 0e92d96..36bb2ad 100644
+--- a/kexec/kexec.c
++++ b/kexec/kexec.c
+@@ -1049,11 +1049,11 @@ void usage(void)
+ 	       "                      to original kernel.\n"
+ 	       " -s, --kexec-file-syscall Use file based syscall for kexec operation\n"
+ 	       " -c, --kexec-syscall  Use the kexec_load syscall for for compatibility\n"
+-	       "                      with systems that don't support -s (default)\n"
++	       "                      with systems that don't support -s\n"
+ 	       " -a, --kexec-syscall-auto  Use file based syscall for kexec and fall\n"
+ 	       "                      back to the compatibility syscall when file based\n"
+ 	       "                      syscall is not supported or the kernel did not\n"
+-	       "                      understand the image\n"
++	       "                      understand the image (default)\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"
+@@ -1407,8 +1407,8 @@ int main(int argc, char *argv[])
+ 	int do_ifdown = 0, skip_ifdown = 0;
+ 	int do_unload = 0;
+ 	int do_reuse_initrd = 0;
+-	int do_kexec_file_syscall = 0;
+-	int do_kexec_fallback = 0;
++	int do_kexec_file_syscall = 1;
++	int do_kexec_fallback = 1;
+ 	int skip_checks = 0;
+ 	int do_status = 0;
+ 	void *entry = 0;
+-- 
+2.33.1
+
diff --git a/kexec-tools-2.0.26-0003-x86-add-devicetree-support.patch b/kexec-tools-2.0.26-0003-x86-add-devicetree-support.patch
new file mode 100644
index 0000000..c87a7fb
--- /dev/null
+++ b/kexec-tools-2.0.26-0003-x86-add-devicetree-support.patch
@@ -0,0 +1,211 @@
+From 806711fca9e9d52a677bf090565c32c858f2b12e Mon Sep 17 00:00:00 2001
+From: Julian Winkler <julian.winkler1@web.de>
+Date: Thu, 23 Feb 2023 07:01:07 +0100
+Subject: [PATCH 3/6] x86: add devicetree support
+
+Since linux kernel has dropped support for simple firmware interface
+(SFI), the only way of boot newer versions on intel MID platform is
+using devicetree
+
+Signed-off-by: Julian Winkler <julian.winkler1@web.de>
+Signed-off-by: Simon Horman <horms@kernel.org>
+---
+ kexec/arch/i386/include/arch/options.h |  4 +++-
+ kexec/arch/i386/kexec-beoboot-x86.c    |  2 +-
+ kexec/arch/i386/kexec-bzImage.c        | 21 ++++++++++++++++++++-
+ kexec/arch/i386/kexec-x86.h            |  1 +
+ kexec/arch/i386/x86-linux-setup.c      | 15 +++++++++++++++
+ kexec/arch/i386/x86-linux-setup.h      |  2 ++
+ kexec/arch/x86_64/kexec-bzImage64.c    |  2 +-
+ 7 files changed, 43 insertions(+), 4 deletions(-)
+
+diff --git a/kexec/arch/i386/include/arch/options.h b/kexec/arch/i386/include/arch/options.h
+index 0e57951..89e0a95 100644
+--- a/kexec/arch/i386/include/arch/options.h
++++ b/kexec/arch/i386/include/arch/options.h
+@@ -33,6 +33,7 @@
+ #define OPT_PASS_MEMMAP_CMDLINE	(OPT_ARCH_MAX+11)
+ #define OPT_NOEFI		(OPT_ARCH_MAX+12)
+ #define OPT_REUSE_VIDEO_TYPE	(OPT_ARCH_MAX+13)
++#define OPT_DTB			(OPT_ARCH_MAX+14)
+ 
+ /* Options relevant to the architecture (excluding loader-specific ones): */
+ #define KEXEC_ARCH_OPTIONS \
+@@ -76,7 +77,8 @@
+ 	{ "args-none",		0, NULL, OPT_ARGS_NONE },	\
+ 	{ "module",		1, 0, OPT_MOD },		\
+ 	{ "real-mode",		0, NULL, OPT_REAL_MODE },	\
+-	{ "entry-32bit",	0, NULL, OPT_ENTRY_32BIT },
++	{ "entry-32bit",	0, NULL, OPT_ENTRY_32BIT },	\
++	{ "dtb",		1, NULL, OPT_DTB },
+ 
+ #define KEXEC_ALL_OPT_STR KEXEC_ARCH_OPT_STR
+ 
+diff --git a/kexec/arch/i386/kexec-beoboot-x86.c b/kexec/arch/i386/kexec-beoboot-x86.c
+index b121834..d949ab8 100644
+--- a/kexec/arch/i386/kexec-beoboot-x86.c
++++ b/kexec/arch/i386/kexec-beoboot-x86.c
+@@ -125,7 +125,7 @@ int beoboot_load(int argc, char **argv, const char *buf, off_t UNUSED(len),
+ 		kernel,        bb_header.kernel_size,
+ 		command_line,  bb_header.cmdline_size,
+ 		initrd,        bb_header.initrd_size,
+-		real_mode_entry);
++		0, 0, real_mode_entry);
+ 
+ 	return result;
+ }
+diff --git a/kexec/arch/i386/kexec-bzImage.c b/kexec/arch/i386/kexec-bzImage.c
+index df8985d..1b8f20c 100644
+--- a/kexec/arch/i386/kexec-bzImage.c
++++ b/kexec/arch/i386/kexec-bzImage.c
+@@ -95,6 +95,7 @@ void bzImage_usage(void)
+ 		"    --reuse-cmdline       Use kernel command line from running system.\n"
+ 		"    --initrd=FILE         Use FILE as the kernel's initial ramdisk.\n"
+ 		"    --ramdisk=FILE        Use FILE as the kernel's initial ramdisk.\n"
++		"    --dtb=FILE            Use FILE as devicetree.\n"
+ 		);
+        
+ }
+@@ -103,6 +104,7 @@ int do_bzImage_load(struct kexec_info *info,
+ 	const char *kernel, off_t kernel_len,
+ 	const char *command_line, off_t command_line_len,
+ 	const char *initrd, off_t initrd_len,
++	const char *dtb, off_t dtb_len,
+ 	int real_mode_entry)
+ {
+ 	struct x86_linux_header setup_header;
+@@ -373,6 +375,10 @@ int do_bzImage_load(struct kexec_info *info,
+ 		setup_linux_system_parameters(info, real_mode);
+ 	}
+ 
++	if (dtb) {
++		setup_linux_dtb(info, real_mode, dtb, dtb_len);
++	}
++
+ 	return 0;
+ }
+ 	
+@@ -381,13 +387,15 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len,
+ {
+ 	char *command_line = NULL;
+ 	char *tmp_cmdline = NULL;
+-	const char *ramdisk, *append = NULL;
++	const char *ramdisk, *append = NULL, *dtb;
+ 	char *ramdisk_buf;
+ 	off_t ramdisk_length;
+ 	int command_line_len;
+ 	int real_mode_entry;
+ 	int opt;
+ 	int result;
++	char *dtb_buf;
++	off_t dtb_length;
+ 
+ 	/* See options.h -- add any more there, too. */
+ 	static const struct option options[] = {
+@@ -398,6 +406,7 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len,
+ 		{ "initrd",		1, 0, OPT_RAMDISK },
+ 		{ "ramdisk",		1, 0, OPT_RAMDISK },
+ 		{ "real-mode",		0, 0, OPT_REAL_MODE },
++		{ "dtb",		1, 0, OPT_DTB },
+ 		{ 0, 			0, 0, 0 },
+ 	};
+ 	static const char short_options[] = KEXEC_ARCH_OPT_STR "d";
+@@ -405,6 +414,8 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len,
+ 	real_mode_entry = 0;
+ 	ramdisk = 0;
+ 	ramdisk_length = 0;
++	dtb = 0;
++	dtb_length = 0;
+ 	while((opt = getopt_long(argc, argv, short_options, options, 0)) != -1) {
+ 		switch(opt) {
+ 		default:
+@@ -424,6 +435,9 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len,
+ 		case OPT_REAL_MODE:
+ 			real_mode_entry = 1;
+ 			break;
++		case OPT_DTB:
++			dtb = optarg;
++			break;
+ 		}
+ 	}
+ 	command_line = concat_cmdline(tmp_cmdline, append);
+@@ -441,10 +455,15 @@ int bzImage_load(int argc, char **argv, const char *buf, off_t len,
+ 	if (ramdisk) {
+ 		ramdisk_buf = slurp_file(ramdisk, &ramdisk_length);
+ 	}
++	dtb_buf = 0;
++	if (dtb) {
++		dtb_buf = slurp_file(dtb, &dtb_length);
++	}
+ 	result = do_bzImage_load(info,
+ 		buf, len,
+ 		command_line, command_line_len,
+ 		ramdisk_buf, ramdisk_length,
++		dtb_buf, dtb_length,
+ 		real_mode_entry);
+ 
+ 	free(command_line);
+diff --git a/kexec/arch/i386/kexec-x86.h b/kexec/arch/i386/kexec-x86.h
+index 71e4329..46e2898 100644
+--- a/kexec/arch/i386/kexec-x86.h
++++ b/kexec/arch/i386/kexec-x86.h
+@@ -79,6 +79,7 @@ int do_bzImage_load(struct kexec_info *info,
+ 	const char *kernel, off_t kernel_len,
+ 	const char *command_line, off_t command_line_len,
+ 	const char *initrd, off_t initrd_len,
++	const char *dtb, off_t dtb_len,
+ 	int real_mode_entry);
+ 
+ int beoboot_probe(const char *buf, off_t len);
+diff --git a/kexec/arch/i386/x86-linux-setup.c b/kexec/arch/i386/x86-linux-setup.c
+index 14263b0..9a281dc 100644
+--- a/kexec/arch/i386/x86-linux-setup.c
++++ b/kexec/arch/i386/x86-linux-setup.c
+@@ -954,3 +954,18 @@ void setup_linux_system_parameters(struct kexec_info *info,
+ 	/* Always try to fill acpi_rsdp_addr */
+ 	real_mode->acpi_rsdp_addr = get_acpi_rsdp();
+ }
++
++void setup_linux_dtb(struct kexec_info *info, struct x86_linux_param_header *real_mode,
++				   const char *dtb_buf, int dtb_len)
++{
++	struct setup_data *sd;
++
++	sd = xmalloc(sizeof(struct setup_data) + dtb_len);
++	sd->next = 0;
++	sd->len = dtb_len;
++	sd->type = SETUP_DTB;
++	memcpy(sd->data, dtb_buf, dtb_len);
++
++
++	add_setup_data(info, real_mode, sd);
++}
+diff --git a/kexec/arch/i386/x86-linux-setup.h b/kexec/arch/i386/x86-linux-setup.h
+index 0c651e5..b5e1ad5 100644
+--- a/kexec/arch/i386/x86-linux-setup.h
++++ b/kexec/arch/i386/x86-linux-setup.h
+@@ -21,6 +21,8 @@ static inline void setup_linux_bootloader_parameters(
+ }
+ void setup_linux_system_parameters(struct kexec_info *info,
+ 	struct x86_linux_param_header *real_mode);
++void setup_linux_dtb(struct kexec_info *info, struct x86_linux_param_header *real_mode,
++				   const char *dtb_buf, int dtb_len);
+ int get_bootparam(void *buf, off_t offset, size_t size);
+ 
+ 
+diff --git a/kexec/arch/x86_64/kexec-bzImage64.c b/kexec/arch/x86_64/kexec-bzImage64.c
+index ba8dc48..aba4e3b 100644
+--- a/kexec/arch/x86_64/kexec-bzImage64.c
++++ b/kexec/arch/x86_64/kexec-bzImage64.c
+@@ -386,7 +386,7 @@ int bzImage64_load(int argc, char **argv, const char *buf, off_t len,
+ 	if (entry_16bit || entry_32bit)
+ 		result = do_bzImage_load(info, buf, len, command_line,
+ 					command_line_len, ramdisk_buf,
+-					ramdisk_length, entry_16bit);
++					ramdisk_length, 0, 0, entry_16bit);
+ 	else
+ 		result = do_bzImage64_load(info, buf, len, command_line,
+ 					command_line_len, ramdisk_buf,
+-- 
+2.33.1
+
diff --git a/kexec-tools-2.0.26-0004-ppc64-Add-elf-ppc64-file-types-options-and-an-arch-s.patch b/kexec-tools-2.0.26-0004-ppc64-Add-elf-ppc64-file-types-options-and-an-arch-s.patch
new file mode 100644
index 0000000..f7fc993
--- /dev/null
+++ b/kexec-tools-2.0.26-0004-ppc64-Add-elf-ppc64-file-types-options-and-an-arch-s.patch
@@ -0,0 +1,68 @@
+From 63e9a012112e418876413bf45440118d69d85189 Mon Sep 17 00:00:00 2001
+From: Gautam Menghani <gautam@linux.vnet.ibm.com>
+Date: Wed, 1 Mar 2023 03:58:19 -0500
+Subject: [PATCH 4/6] ppc64: Add elf-ppc64 file types/options and an arch
+ specific flag to man page
+
+Document the elf-ppc64 file options and the "--dt-no-old-root" arch
+specific flag in the man page.
+
+Signed-off-by: Gautam Menghani <gautam@linux.vnet.ibm.com>
+Signed-off-by: Simon Horman <horms@kernel.org>
+---
+ kexec/kexec.8 | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+diff --git a/kexec/kexec.8 b/kexec/kexec.8
+index 66453b8..3a344c5 100644
+--- a/kexec/kexec.8
++++ b/kexec/kexec.8
+@@ -335,6 +335,37 @@ with command-line arguments
+ .I "arg1 arg2 ..."
+ This parameter can be specified multiple times.
+ .RE
++.PP
++.B elf-ppc64
++.RS
++.TP
++.BI \-\-reuse-cmdline
++Use the kernel command line from the running system.
++.TP
++.BI \-\-command\-line= string
++Set the kernel command line to
++.IR string.
++.TP
++.BI \-\-append= string
++Set the kernel command line to
++.IR string.
++.TP
++.BI \-\-ramdisk= file
++Use
++.IR file
++as the initial RAM disk.
++.TP
++.BI \-\-initrd= file
++Use
++.IR file
++as the initial RAM disk.
++.TP
++.BI \-\-devicetreeblob= file
++Specify device tree blob file. Not applicable while using --kexec-file-syscall.
++.TP
++.BI \-\-dtb= file
++Specify device tree blob file. Not applicable while using --kexec-file-syscall.
++.RE
+ 
+ .SH ARCHITECTURE OPTIONS
+ .TP
+@@ -362,3 +393,7 @@ for debug output.
+ Specify the
+ .I baud rate
+ of the serial port.
++.TP
++.BI \-\-dt\-no\-old\-root
++Do not reuse old kernel root=<device>
++param while creating flatten device tree.
+-- 
+2.33.1
+
diff --git a/kexec-tools.spec b/kexec-tools.spec
index c088e9a..e1e43ff 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -4,8 +4,8 @@
 %global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
 
 Name: kexec-tools
-Version: 2.0.25
-Release: 14%{?dist}
+Version: 2.0.26
+Release: 1%{?dist}
 License: GPLv2
 Summary: The kexec/kdump userspace component
 
@@ -100,7 +100,6 @@ Requires:       systemd-udev%{?_isa}
 #
 # Patches 301 through 400 are meant for ppc64 kexec-tools enablement
 #
-Patch301: kexec-tools-2.0.25-ppc64-ppc64-remove-rma_top-limit.patch
 
 #
 # Patches 401 through 500 are meant for s390 kexec-tools enablement
@@ -113,6 +112,10 @@ Patch301: kexec-tools-2.0.25-ppc64-ppc64-remove-rma_top-limit.patch
 #
 # Patches 601 onward are generic patches
 #
+Patch601: kexec-tools-2.0.26-0001-ppc64-add-reuse-cmdline-parameter-support.patch
+Patch602: kexec-tools-2.0.26-0002-kexec-make-a-the-default.patch
+Patch603: kexec-tools-2.0.26-0003-x86-add-devicetree-support.patch
+Patch604: kexec-tools-2.0.26-0004-ppc64-Add-elf-ppc64-file-types-options-and-an-arch-s.patch
 
 %description
 kexec-tools provides /sbin/kexec binary that facilitates a new
@@ -128,7 +131,10 @@ mkdir -p -m755 kcp
 tar -z -x -v -f %{SOURCE9}
 tar -z -x -v -f %{SOURCE19}
 
-%patch301 -p1
+%patch601 -p1
+%patch602 -p1
+%patch603 -p1
+%patch604 -p1
 
 %ifarch ppc
 %define archdef ARCH=ppc
@@ -428,6 +434,9 @@ fi
 %endif
 
 %changelog
+* Fri Apr 7 2023 Tao Liu <ltao@redhat.com> - 2.0.26-1
+- Rebase kexec-tools to v2.0.26
+
 * Tue Mar 21 2023 Tao Liu <ltao@redhat.com> - 2.0.25-14
 - Install nfsv4-related drivers when users specify nfs dumping via dracut_args
 - Revert "ppc64: tackle SRCU hang issue"
diff --git a/sources b/sources
index 20bacfe..b792356 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
 SHA512 (eppic-e8844d3.tar.gz) = d86b9f90c57e694107272d8f71b87f66a30743b9530480fb6f665026bbada4c6b0205a83e40b5383663a945681cfbfcf1ee79469fc219ddf679473c4b2290763
-SHA512 (kexec-tools-2.0.25.tar.xz) = 6fd3fe11d428c5bb2ce318744146e03ddf752cc77632064bdd7418ef3ad355ad2e2db212d68a5bc73554d78f786901beb42d72bd62e2a4dae34fb224b667ec6b
 SHA512 (makedumpfile-1.7.2.tar.gz) = 324e303dd5f507703f66e2bd5dc9d24f9f50ba797be70c05702008ba77078f61ffcc884796ddf9ab737de1d124c3a9d881ab5ce4f3f459690ec00055af25ea9e
+SHA512 (kexec-tools-2.0.26.tar.xz) = afecb64f50a0a2e553712d7e6e4d48e0dc745e4140983a33a10cce931e6aeddaff9c4a3385fbaf7ab9ff7b3b905d932fbce1e0e37aa2c35d5c1e61277140dee9