On Mon, Dec 17, 2018 at 5:59 PM Khem Raj <[email protected]> wrote: > > Can you rebase it on master-next please Sure, sorry Cheers Andrea
> On Mon, Dec 17, 2018 at 2:35 AM Andrea Adami <[email protected]> wrote: > > > > Fix borrowed from LEDE-DEV. > > > > Signed-off-by: Andrea Adami <[email protected]> > > --- > > .../140-mips_disable_devicetree_support.patch | 163 ++++++++++++++++++ > > .../kexec/kexec-tools-klibc_git.bb | 8 +- > > 2 files changed, 169 insertions(+), 2 deletions(-) > > create mode 100644 > > meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch > > > > diff --git > > a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch > > > > b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch > > new file mode 100644 > > index 000000000..b3ef3c82d > > --- /dev/null > > +++ > > b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc/140-mips_disable_devicetree_support.patch > > @@ -0,0 +1,163 @@ > > +From 5ea7cd78cd252ffd3a9f3fbc8dc795d6e1596084 Mon Sep 17 00:00:00 2001 > > +From: Andrea Adami <[email protected]> > > +Date: Mon, 17 Dec 2018 11:25:20 +0100 > > +Subject: [PATCH] kexec-tools: fix non-device tree devices on mips > > + > > +Add additional argument '--no-dtb' which disables device tree > > +search in currently loaded kernel. > > + > > +Taken from LEDE-DEV: > > +https://patchwork.ozlabs.org/patch/852961/ > > + > > +Rebased for kexec-tools 2.0.18 > > +Removed ppc change (unwanted ?) > > + > > +Signed-off-by: Konstantin Kuzov <[email protected]> > > +Signed-off-by: Andrea Adami <[email protected]> > > +--- > > + kexec/arch/mips/include/arch/options.h | 4 +- > > + kexec/arch/mips/kexec-elf-mips.c | 58 ++++++++++++++------------ > > + kexec/arch/mips/kexec-mips.c | 4 ++ > > + kexec/arch/mips/kexec-mips.h | 1 + > > + 4 files changed, 39 insertions(+), 28 deletions(-) > > + > > +diff --git a/kexec/arch/mips/include/arch/options.h > > b/kexec/arch/mips/include/arch/options.h > > +index 416e224..18d2811 100644 > > +--- a/kexec/arch/mips/include/arch/options.h > > ++++ b/kexec/arch/mips/include/arch/options.h > > +@@ -5,6 +5,7 @@ > > + #define OPT_APPEND (OPT_ARCH_MAX+0) > > + #define OPT_DTB (OPT_ARCH_MAX+1) > > + #define OPT_RAMDISK (OPT_ARCH_MAX+2) > > ++#define OPT_NO_DTB (OPT_ARCH_MAX+3) > > + > > + /* Options relevant to the architecture (excluding loader-specific ones), > > + * in this case none: > > +@@ -14,7 +15,8 @@ > > + {"command-line", 1, 0, OPT_APPEND}, \ > > + {"append", 1, 0, OPT_APPEND}, \ > > + {"dtb", 1, 0, OPT_DTB }, \ > > +- {"initrd", 1, 0, OPT_RAMDISK }, > > ++ {"initrd", 1, 0, OPT_RAMDISK }, \ > > ++ {"no-dtb", 0, 0, OPT_NO_DTB }, > > + > > + > > + #define KEXEC_ARCH_OPT_STR KEXEC_OPT_STR "" > > +diff --git a/kexec/arch/mips/kexec-elf-mips.c > > b/kexec/arch/mips/kexec-elf-mips.c > > +index 849a7ba..5c0e535 100644 > > +--- a/kexec/arch/mips/kexec-elf-mips.c > > ++++ b/kexec/arch/mips/kexec-elf-mips.c > > +@@ -141,35 +141,37 @@ int elf_mips_load(int argc, char **argv, const char > > *buf, off_t len, > > + else > > + cmdline_addr = 0; > > + > > +- /* MIPS systems that have been converted to use device tree > > +- * passed through UHI will use commandline in the DTB and > > +- * the DTB passed as a separate buffer. Note that > > +- * CMDLINE_PREFIX is skipped here intentionally, as it is > > +- * used only in the legacy method */ > > +- > > +- if (arch_options.dtb_file) { > > +- dtb_buf = slurp_file(arch_options.dtb_file, &dtb_length); > > +- } else { > > +- create_flatten_tree(&dtb_buf, &dtb_length, cmdline_buf + > > strlen(CMDLINE_PREFIX)); > > +- } > > + > > +- if (arch_options.initrd_file) { > > +- initrd_buf = slurp_file(arch_options.initrd_file, > > &initrd_size); > > ++ if (!arch_options.no_dtb) { > > ++ /* MIPS systems that have been converted to use device tree > > ++ * passed through UHI will use commandline in the DTB and > > ++ * the DTB passed as a separate buffer. Note that > > ++ * CMDLINE_PREFIX is skipped here intentionally, as it is > > ++ * used only in the legacy method */ > > ++ > > ++ if (arch_options.dtb_file) { > > ++ dtb_buf = slurp_file(arch_options.dtb_file, > > &dtb_length); > > ++ } else { > > ++ create_flatten_tree(&dtb_buf, &dtb_length, > > cmdline_buf + strlen(CMDLINE_PREFIX)); > > ++ } > > + > > +- /* Create initrd entries in dtb - although at this time > > +- * they would not point to the correct location */ > > +- dtb_set_initrd(&dtb_buf, &dtb_length, initrd_buf, > > initrd_buf + initrd_size); > > ++ if (arch_options.initrd_file) { > > ++ initrd_buf = slurp_file(arch_options.initrd_file, > > &initrd_size); > > + > > +- initrd_base = add_buffer(info, initrd_buf, initrd_size, > > +- initrd_size, sizeof(void *), > > +- _ALIGN_UP(kernel_addr + kernel_size > > + dtb_length, > > +- pagesize), 0x0fffffff, 1); > > ++ /* Create initrd entries in dtb - although at this > > time > > ++ * they would not point to the correct location */ > > ++ dtb_set_initrd(&dtb_buf, &dtb_length, initrd_buf, > > initrd_buf + initrd_size); > > + > > +- /* Now that the buffer for initrd is prepared, update the > > dtb > > +- * with an appropriate location */ > > +- dtb_set_initrd(&dtb_buf, &dtb_length, initrd_base, > > initrd_base + initrd_size); > > +- } > > ++ initrd_base = add_buffer(info, initrd_buf, > > initrd_size, > > ++ initrd_size, sizeof(void *), > > ++ _ALIGN_UP(kernel_addr + > > kernel_size + dtb_length, > > ++ pagesize), > > 0x0fffffff, 1); > > + > > ++ /* Now that the buffer for initrd is prepared, > > update the dtb > > ++ * with an appropriate location */ > > ++ dtb_set_initrd(&dtb_buf, &dtb_length, initrd_base, > > initrd_base + initrd_size); > > ++ } > > ++ } > > + > > + /* This is a legacy method for commandline passing used > > + * currently by Octeon CPUs only */ > > +@@ -177,9 +179,11 @@ int elf_mips_load(int argc, char **argv, const char > > *buf, off_t len, > > + sizeof(cmdline_buf), sizeof(void *), > > + cmdline_addr, 0x0fffffff, 1); > > + > > +- add_buffer(info, dtb_buf, dtb_length, dtb_length, 0, > > +- _ALIGN_UP(kernel_addr + kernel_size, pagesize), > > +- 0x0fffffff, 1); > > ++ if (!arch_options.no_dtb) { > > ++ add_buffer(info, dtb_buf, dtb_length, dtb_length, 0, > > ++ _ALIGN_UP(kernel_addr + kernel_size, pagesize), > > ++ 0x0fffffff, 1); > > ++ } > > + > > + return 0; > > + } > > +diff --git a/kexec/arch/mips/kexec-mips.c b/kexec/arch/mips/kexec-mips.c > > +index 415c2ed..e557f8b 100644 > > +--- a/kexec/arch/mips/kexec-mips.c > > ++++ b/kexec/arch/mips/kexec-mips.c > > +@@ -89,6 +89,7 @@ void arch_usage(void) > > + " --append=STRING Set the kernel command line to STRING.\n" > > + " --dtb=FILE Use FILE as the device tree blob.\n" > > + " --initrd=FILE Use FILE as initial ramdisk.\n" > > ++ " --no-dtb Don't try to find device tree\n" > > + ); > > + } > > + > > +@@ -121,6 +122,9 @@ int arch_process_options(int argc, char **argv) > > + case OPT_RAMDISK: > > + arch_options.initrd_file = optarg; > > + break; > > ++ case OPT_NO_DTB: > > ++ arch_options.no_dtb = 1; > > ++ break; > > + default: > > + break; > > + } > > +diff --git a/kexec/arch/mips/kexec-mips.h b/kexec/arch/mips/kexec-mips.h > > +index 222c815..90b21c3 100644 > > +--- a/kexec/arch/mips/kexec-mips.h > > ++++ b/kexec/arch/mips/kexec-mips.h > > +@@ -22,6 +22,7 @@ struct arch_options_t { > > + char *dtb_file; > > + char *initrd_file; > > + int core_header_type; > > ++ int no_dtb; > > + }; > > + > > + extern struct memory_ranges usablemem_rgns; > > +-- > > +2.17.1 > > + > > diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb > > b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb > > index 25f5da48d..e6e1d4bd3 100644 > > --- a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb > > +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb > > @@ -6,14 +6,14 @@ SECTION = "kernel/userland" > > LICENSE = "GPLv2" > > LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \ > > > > file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09" > > -PV = "2.0.17+git${SRCPV}" > > +PV = "2.0.18+git${SRCPV}" > > > > DEPENDS = "zlib xz" > > > > inherit klibc autotools > > > > SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git" > > -SRCREV = "b9de21ef51a7ceab7122a707c188602eae22c4ee" > > +SRCREV = "5750980cdbbc33ef75bfba6660295b932376ce15" > > > > BUILD_PATCHES = "file://0001-force-static-build.patch \ > > > > file://0002-Adjust-the-order-of-headers-to-fix-build-for-musl.patch" > > @@ -42,6 +42,9 @@ SRC_URI += "${BUILD_PATCHES} ${KLIBC_PATCHES} > > ${WARNING_FIXES} ${FROM_OE_CORE}" > > > > SRC_URI_append_arm = " file://arm_crashdump.patch" > > > > +SRC_URI_append_mips = " file://140-mips_disable_devicetree_support.patch" > > +SRC_URI_append_mipsel = " file://140-mips_disable_devicetree_support.patch" > > + > > SRC_URI_append_x86 = " file://x86_sys_io.patch file://x86_basename.patch \ > > file://x86_vfscanf.patch > > file://x86_kexec_test.patch" > > > > @@ -66,6 +69,7 @@ CFLAGS_x86-64_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/i > > CFLAGS_arm_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32" > > CFLAGS_aarch64_append = "${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits64" > > CFLAGS_mips_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32" > > +CFLAGS_mipsel_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32" > > CFLAGS_mips64_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits64" > > CFLAGS_powerpc_append = " ${COMMON_CFLAGS} > > -I${STAGING_DIR_HOST}${libdir}/klibc/include/bits32" > > > > -- > > 2.17.1 > > > > -- > > _______________________________________________ > > Openembedded-devel mailing list > > [email protected] > > http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
