From 45b8a7c1a6415125f4fe872ec83b3d31a2fa799b Mon Sep 17 00:00:00 2001
From: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Date: Fri, 18 May 2018 03:49:27 +0200
Subject: [PATCH] ipq806x: increase kernel partition size for the Netgear
 Nighthawk X4 D7800

Starting with kernel 4.14 and gcc 7, the kernel doesn't fit into the
2 MB reserved for the kernel partition by the OEM firmware anymore.

This patch increases the kernel partition from 2 MB to 4 MB, at the
expense of the rootfs, for all supported kernels.

WARNING: This breaks sysupgrade! Flashing a firmware containing this
changed partitioning from an older image with 2 MB reserved for the
kernel partion requires the tftp recovery procedure, thereby losing
all settings.

This change follows the functional example of the Netgear r7800, but
has not been runtime tested on a Netgear Nighthawk X4 D7800.

Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Cc: Tathagata Das <tathagata@alumnux.com>
---
 .../files-4.14/arch/arm/boot/dts/qcom-ipq8064-d7800.dts     | 6 +++---
 .../files-4.9/arch/arm/boot/dts/qcom-ipq8064-d7800.dts      | 6 +++---
 target/linux/ipq806x/image/Makefile                         | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064-d7800.dts b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
index b7c49cc816..e22a9292a3 100644
--- a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
+++ b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
@@ -250,12 +250,12 @@
 
 					kernel@1480000 {
 						label = "kernel";
-						reg = <0x1480000 0x0200000>;
+						reg = <0x1480000 0x0400000>;
 					};
 
-					ubi@1680000 {
+					ubi@1880000 {
 						label = "ubi";
-						reg = <0x1680000 0x1E00000>;
+						reg = <0x1880000 0x1C00000>;
 					};
 
 					netgear@3480000 {
diff --git a/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq8064-d7800.dts b/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
index b7c49cc816..e22a9292a3 100644
--- a/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
+++ b/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
@@ -250,12 +250,12 @@
 
 					kernel@1480000 {
 						label = "kernel";
-						reg = <0x1480000 0x0200000>;
+						reg = <0x1480000 0x0400000>;
 					};
 
-					ubi@1680000 {
+					ubi@1880000 {
 						label = "ubi";
-						reg = <0x1680000 0x1E00000>;
+						reg = <0x1880000 0x1C00000>;
 					};
 
 					netgear@3480000 {
diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile
index 8b302b658d..496564de38 100644
--- a/target/linux/ipq806x/image/Makefile
+++ b/target/linux/ipq806x/image/Makefile
@@ -104,7 +104,7 @@ TARGET_DEVICES += linksys_ea8500
 define Device/netgear_d7800
 	$(call Device/DniImage)
 	DEVICE_DTS := qcom-ipq8064-d7800
-	KERNEL_SIZE := 2097152
+	KERNEL_SIZE := 4194304
 	NETGEAR_BOARD_ID := D7800
 	NETGEAR_HW_ID := 29764958+0+128+512+4x4+4x4
 	BLOCKSIZE := 128k
-- 
2.30.2