diff options
Diffstat (limited to 'target/linux/arc770/patches-4.3')
-rw-r--r-- | target/linux/arc770/patches-4.3/0001-openwrt-arc-remove-dependency-on-DEVTMPFS.patch | 36 | ||||
-rw-r--r-- | target/linux/arc770/patches-4.3/0002-openwrt-arc-add-OWRTDTB-section.patch | 91 |
2 files changed, 127 insertions, 0 deletions
diff --git a/target/linux/arc770/patches-4.3/0001-openwrt-arc-remove-dependency-on-DEVTMPFS.patch b/target/linux/arc770/patches-4.3/0001-openwrt-arc-remove-dependency-on-DEVTMPFS.patch new file mode 100644 index 0000000000..53f80749bd --- /dev/null +++ b/target/linux/arc770/patches-4.3/0001-openwrt-arc-remove-dependency-on-DEVTMPFS.patch @@ -0,0 +1,36 @@ +From 271777096a31e76b2ffd750bc44efde9656de857 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin <abrodkin@synopsys.com> +Date: Thu, 13 Aug 2015 01:56:02 +0300 +Subject: [PATCH] openwrt: arc - remove dependency on DEVTMPFS + +OpenWRT builds initramfs so that it doesn't require DEVTMPFS so dropping +this dependency. That helps to escape 2 separate kernel rebuilds with +and without initramfs. + +2 builds happen because OpenWRT first builds kernel and later modules. +When building entire kernel with simple "make" INITRAMFS sets to a real +value and so was triggering DEVTMPFS selection. Then when building only +modules with "make modules" command INITRAMFS is zeroed and so kernel +config was changing that lead to full kernel rebuild. + +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + arch/arc/Kconfig | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig +index cf96ef2..f0c6d4c 100644 +--- a/arch/arc/Kconfig ++++ b/arch/arc/Kconfig +@@ -11,8 +11,6 @@ config ARC + select BUILDTIME_EXTABLE_SORT + select COMMON_CLK + select CLONE_BACKWARDS +- # ARC Busybox based initramfs absolutely relies on DEVTMPFS for /dev +- select DEVTMPFS if !INITRAMFS_SOURCE="" + select GENERIC_ATOMIC64 + select GENERIC_CLOCKEVENTS + select GENERIC_FIND_FIRST_BIT +-- +2.4.3 + diff --git a/target/linux/arc770/patches-4.3/0002-openwrt-arc-add-OWRTDTB-section.patch b/target/linux/arc770/patches-4.3/0002-openwrt-arc-add-OWRTDTB-section.patch new file mode 100644 index 0000000000..ddb426f15b --- /dev/null +++ b/target/linux/arc770/patches-4.3/0002-openwrt-arc-add-OWRTDTB-section.patch @@ -0,0 +1,91 @@ +From 142abc9f7b8860638e39cf3850cf7ba328c26b42 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin <abrodkin@synopsys.com> +Date: Sat, 31 Oct 2015 15:58:20 +0300 +Subject: [PATCH] openwrt: arc - add OWRTDTB section + +This change allows OpenWRT to patch resulting kernel binary with +external .dtb. + +That allows us to re-use exactky the same vmlinux on different boards +given its ARC core configurations match (at least cache line sizes etc). + +""patch-dtb" searches for ASCII "OWRTDTB:" strign and copies external +.dtb right after it, keeping the string in place. + +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + arch/arc/kernel/head.S | 10 ++++++++++ + arch/arc/kernel/setup.c | 4 +++- + arch/arc/kernel/vmlinux.lds.S | 13 +++++++++++++ + 3 files changed, 26 insertions(+), 1 deletion(-) + +diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S +index 689dd86..51154ae 100644 +--- a/arch/arc/kernel/head.S ++++ b/arch/arc/kernel/head.S +@@ -49,6 +49,16 @@ + 1: + .endm + ++; Here "patch-dtb" will embed external .dtb ++; Note "patch-dtb" searches for ASCII "OWRTDTB:" string ++; and pastes .dtb right after it, hense the string precedes ++; __image_dtb symbol. ++ .section .owrt, "aw",@progbits ++ .ascii "OWRTDTB:" ++ENTRY(__image_dtb) ++ .fill 0x4000 ++END(__image_dtb) ++ + .section .init.text, "ax",@progbits + + ;---------------------------------------------------------------- +diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c +index c33e77c..96fbfd0 100644 +--- a/arch/arc/kernel/setup.c ++++ b/arch/arc/kernel/setup.c +@@ -370,6 +370,8 @@ static inline int is_kernel(unsigned long addr) + return 0; + } + ++extern struct boot_param_header __image_dtb; ++ + void __init setup_arch(char **cmdline_p) + { + #ifdef CONFIG_ARC_UBOOT_SUPPORT +@@ -383,7 +385,7 @@ void __init setup_arch(char **cmdline_p) + #endif + { + /* No, so try the embedded one */ +- machine_desc = setup_machine_fdt(__dtb_start); ++ machine_desc = setup_machine_fdt(&__image_dtb); + if (!machine_desc) + panic("Embedded DT invalid\n"); + +diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S +index dd35bde..f309104 100644 +--- a/arch/arc/kernel/vmlinux.lds.S ++++ b/arch/arc/kernel/vmlinux.lds.S +@@ -30,6 +30,19 @@ SECTIONS + + . = CONFIG_LINUX_LINK_BASE; + ++ /* ++ * In OpenWRT we want to patch built binary embedding .dtb of choice. ++ * This is implemented with "patch-dtb" utility which searches for ++ * "OWRTDTB:" string in first 16k of image and if it is found ++ * copies .dtb right after mentioned string. ++ * ++ * Note: "OWRTDTB:" won't be overwritten with .dtb, .dtb will follow it. ++ */ ++ .owrt : { ++ *(.owrt) ++ . = ALIGN(PAGE_SIZE); ++ } ++ + _int_vec_base_lds = .; + .vector : { + *(.vector) +-- +2.4.3 + |