This adds initial support for kernel 4.14 based on the patches for kernel 4.9. In the configuration I deactivated some of the new possible security features like: CONFIG_REFCOUNT_FULL CONFIG_SLAB_FREELIST_HARDENED CONFIG_SOFTLOCKUP_DETECTOR CONFIG_WARN_ALL_UNSEEDED_RANDOM And these overlay FS options are also deactivated: CONFIG_OVERLAY_FS_INDEX CONFIG_OVERLAY_FS_REDIRECT_DIR I activated this: CONFIG_FORTIFY_SOURCE CONFIG_POSIX_TIMERS CONFIG_SLAB_MERGE_DEFAULT CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED I am not sure if I did the porting correct for the following patches: target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch target/linux/generic/hack-4.14/220-gc_sections.patch target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch target/linux/generic/pending-4.14/305-mips_module_reloc.patch target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Alexey Brodkin <abrodkin@synopsys.com>
 | 
						|
Subject: 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(-)
 | 
						|
 | 
						|
--- 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
 | 
						|
 
 | 
						|
 ;----------------------------------------------------------------
 | 
						|
--- a/arch/arc/kernel/setup.c
 | 
						|
+++ b/arch/arc/kernel/setup.c
 | 
						|
@@ -421,6 +421,8 @@ static inline int is_kernel(unsigned lon
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
+extern struct boot_param_header __image_dtb;
 | 
						|
+
 | 
						|
 void __init setup_arch(char **cmdline_p)
 | 
						|
 {
 | 
						|
 #ifdef CONFIG_ARC_UBOOT_SUPPORT
 | 
						|
@@ -434,7 +436,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");
 | 
						|
 
 | 
						|
--- 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)
 |