[openwrt/openwrt] kirkwood: resize kernel partition for kirkwood devices

LEDE Commits lede-commits at lists.infradead.org
Sun Mar 24 13:07:26 PDT 2024


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f89bdab83280b5a5c795e4cea6823609547b498a

commit f89bdab83280b5a5c795e4cea6823609547b498a
Author: Pawel Dembicki <paweldembicki at gmail.com>
AuthorDate: Thu Mar 14 13:57:25 2024 +0100

    kirkwood: resize kernel partition for kirkwood devices
    
    The 6.1 kernel has caused another increase in kernel size, and now
    it's more than 3MB:
    
    WARNING: Image file iom_ix4-200d-uImage is too big: 3170394 > 3145728
    WARNING: Image file iom_ix2-200-uImage is too big: 3171494 > 3145728
    WARNING: Image file linksys_e4200-v2-uImage is too big: 3171879 > 3145728
    WARNING: Image file linksys_ea4500-uImage is too big: 3171871 > 3145728
    WARNING: Image file linksys_ea3500-uImage is too big: 3171651 > 3145728
    
    This causes problems for 5 devices:
      - Iomega StorCenter ix2/ix4
      - Linksys EA3500/EA4200/EA4500
    
    They have enough resources for proper operation with 6.1, but all of
    them had a 3MB kernel size limit. Let's keep them alive and
    resize kernel partitions to 4MB.
    
    Signed-off-by: Pawel Dembicki <paweldembicki at gmail.com>
---
 .../base-files/etc/board.d/05_compat-version       |  6 ++-
 .../files/arch/arm/boot/dts/kirkwood-ea3500.dts    |  8 +--
 .../files/arch/arm/boot/dts/kirkwood-ix4-200d.dts  |  6 +--
 target/linux/kirkwood/image/Makefile               | 60 +++++++++++++++++-----
 .../kirkwood/patches-6.1/103-iomega-ix2-200.patch  | 12 +++--
 .../patches-6.1/105-linksys-viper-dts.patch        |  8 +--
 6 files changed, 72 insertions(+), 28 deletions(-)

diff --git a/target/linux/kirkwood/base-files/etc/board.d/05_compat-version b/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
index c6026c481f..9e9abf1f22 100644
--- a/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
+++ b/target/linux/kirkwood/base-files/etc/board.d/05_compat-version
@@ -8,10 +8,14 @@
 board_config_update
 
 case "$(board_name)" in
+	iom,ix2-200|\
+	iom,ix4-200d)
+		ucidef_set_compat_version "2.0"
+		;;
 	linksys,e4200-v2|\
 	linksys,ea3500|\
 	linksys,ea4500)
-		ucidef_set_compat_version "2.0"
+		ucidef_set_compat_version "3.0"
 		;;
 esac
 
diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
index 94697866dc..e9f9e30bb4 100644
--- a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ea3500.dts
@@ -168,9 +168,9 @@
 			reg = <0x200000 0x1400000>;
 		};
 
-		partition at 500000 {
+		partition at 600000 {
 			label = "rootfs1";
-			reg = <0x500000 0x1100000>;
+			reg = <0x600000 0x1000000>;
 		};
 
 		partition at 1600000 {
@@ -178,9 +178,9 @@
 			reg = <0x1600000 0x1400000>;
 		};
 
-		partition at 1900000 {
+		partition at 1a00000 {
 			label = "rootfs2";
-			reg = <0x1900000 0x1100000>;
+			reg = <0x1a00000 0x1000000>;
 		};
 
 		partition at 2a00000 {
diff --git a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
index d57e1f5d5a..6220fbf137 100644
--- a/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
+++ b/target/linux/kirkwood/files/arch/arm/boot/dts/kirkwood-ix4-200d.dts
@@ -180,12 +180,12 @@
 
 		partition at 100000 {
 			label = "kernel";
-			reg = <0x100000 0x300000>;
+			reg = <0x100000 0x400000>;
 		};
 
-		partition at 400000 {
+		partition at 500000 {
 			label = "ubi";
-			reg = <0x400000 0x1C00000>;
+			reg = <0x500000 0x1B00000>;
 		};
 	};
 };
diff --git a/target/linux/kirkwood/image/Makefile b/target/linux/kirkwood/image/Makefile
index 5ba81cad80..8aa2d69720 100644
--- a/target/linux/kirkwood/image/Makefile
+++ b/target/linux/kirkwood/image/Makefile
@@ -64,12 +64,50 @@ define Build/ctera-firmware
 	rm -rf $@.tmp
 endef
 
-define Device/kernel-size-migration
+define Device/kernel-size-migration-iomega
   DEVICE_COMPAT_VERSION := 2.0
-  DEVICE_COMPAT_MESSAGE := Partition design has changed compared to \
-	older versions (up to 21.02) due to kernel size restrictions. \
+  DEVICE_COMPAT_MESSAGE := \n$\
+   !The partitioning of the router has changed! \n$\
+  Partition design has changed compared to \
+	older versions (up to 23.05) due to kernel size restrictions. \
 	Upgrade via sysupgrade mechanism is not possible, so new \
-	installation via factory style image is required.
+	installation via initramfs image is required.\n$\
+  Please adjust bootcmd in u-boot console:\n$\
+  setenv bootcmd \
+  'setenv bootargs $$$${console} $$$${mtdparts} $$$${bootargs_root}; \
+  nand read.e 0x800000 0x100000 0x400000; bootm 0x00800000'\n$\
+  saveenv\n$\
+  or use OpenWrt shell:\n$\
+  fw_setenv bootcmd \
+  "setenv bootargs $$$${console} $$$${mtdparts} $$$${bootargs_root};\
+  nand read.e 0x800000 0x100000 0x400000; bootm 0x00800000"\n$\
+  and reinstall image with initramfs image. \
+  Please see original instructions for more details.
+endef
+
+define Device/kernel-size-migration-linksys
+  DEVICE_COMPAT_VERSION := 3.0
+  DEVICE_COMPAT_MESSAGE := \n$\
+    !The partitioning of the router has changed! \n$\
+    Partition design has changed compared to \
+	  older versions (up to 23.05) due to kernel size restrictions. \n$\
+	  Upgrade via sysupgrade mechanism is not possible, so u-boot args \
+    adjustment and new installation via factory style image is required. \n$\
+    Upgrade instructions: \n$\
+    2. Run folowing commands in console (ssh or serial): \n$\
+    \t fw_printenv \n$\
+    \t fw_setenv nandboot \
+    "$$$$(fw_printenv nandboot | awk -F= '{sub(/^nandboot=/, "");print}' \
+    | sed 's/0x300000/0x400000/g')"\n$\
+    \t fw_setenv altnandboot \
+    "$$$$(fw_printenv altnandboot | awk -F= '{sub(/^altnandboot=/, "");print}' \
+    | sed 's/0x300000/0x400000/g')"\n$\
+    3. Test if envs are ok by 'fw_printenv'. \
+    It should be the same except last argument of\
+    'nand read.e' in 'nandboot' and 'altnandboot'.\n$\
+    4. If envs are ok, please apply FACTORY image with command:\n$\
+    \t sysupgrade -F -n OPENWRT_FACTORY_IMAGE.bin \n$\
+    5. System should start normally. If not, serial console will be required.
 endef
 
 define Device/Default
@@ -169,6 +207,7 @@ endef
 TARGET_DEVICES += iom_iconnect-1.1
 
 define Device/iom_ix2-200
+  $(Device/kernel-size-migration-iomega)
   DEVICE_VENDOR := Iomega
   DEVICE_MODEL := StorCenter ix2-200
   DEVICE_DTS := kirkwood-iomega_ix2_200
@@ -177,7 +216,7 @@ define Device/iom_ix2-200
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
+  KERNEL_SIZE := 4096k
   KERNEL_IN_UBI :=
   UBINIZE_OPTS := -E 5
   IMAGE_SIZE := 31744k
@@ -187,6 +226,7 @@ endef
 TARGET_DEVICES += iom_ix2-200
 
 define Device/iom_ix4-200d
+  $(Device/kernel-size-migration-iomega)
   DEVICE_VENDOR := Iomega
   DEVICE_MODEL := StorCenter ix4-200d
   DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
@@ -195,7 +235,7 @@ define Device/iom_ix4-200d
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
+  KERNEL_SIZE := 4096k
   KERNEL_IN_UBI :=
   UBINIZE_OPTS := -E 5
   IMAGE_SIZE := 31744k
@@ -221,41 +261,37 @@ endef
 TARGET_DEVICES += iptime_nas1
 
 define Device/linksys
+  $(Device/kernel-size-migration-linksys)
   DEVICE_VENDOR := Linksys
   DEVICE_PACKAGES := kmod-mwl8k wpad-basic-mbedtls kmod-gpio-button-hotplug \
 	kmod-rtc-mv
   KERNEL_IN_UBI :=
+  KERNEL_SIZE := 4096k
   UBINIZE_OPTS := -E 5
   IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
 endef
 
 define Device/linksys_e4200-v2
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := E4200
   DEVICE_VARIANT := v2
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,viper linksys-viper
 endef
 TARGET_DEVICES += linksys_e4200-v2
 
 define Device/linksys_ea3500
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := EA3500
   PAGESIZE := 512
   SUBPAGESIZE := 256
   BLOCKSIZE := 16k
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,audi linksys-audi
 endef
 TARGET_DEVICES += linksys_ea3500
 
 define Device/linksys_ea4500
   $(Device/linksys)
-  $(Device/kernel-size-migration)
   DEVICE_MODEL := EA4500
-  KERNEL_SIZE := 3072k
   SUPPORTED_DEVICES += linksys,viper linksys-viper
 endef
 TARGET_DEVICES += linksys_ea4500
diff --git a/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
index 9313b4bc3e..db04c09f76 100644
--- a/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
+++ b/target/linux/kirkwood/patches-6.1/103-iomega-ix2-200.patch
@@ -34,7 +34,7 @@
  			label = "status:red:health_led";
  			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
  		};
-@@ -186,18 +193,18 @@
+@@ -186,19 +193,19 @@
  	};
  
  	partition at a0000 {
@@ -46,16 +46,20 @@
  
  	partition at 100000 {
 -		label = "uImage";
+-		reg = <0x100000 0x300000>;
 +		label = "kernel";
- 		reg = <0x100000 0x300000>;
++		reg = <0x100000 0x400000>;
  	};
  
- 	partition at 400000 {
+-	partition at 400000 {
 -		label = "rootfs";
+-		reg = <0x400000 0x1C00000>;
++	partition at 500000 {
 +		label = "ubi";
- 		reg = <0x400000 0x1C00000>;
++		reg = <0x500000 0x1C00000>;
  	};
  };
+ 
 @@ -211,7 +218,7 @@
  };
  
diff --git a/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
index d56a469d94..b1604ec92c 100644
--- a/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
+++ b/target/linux/kirkwood/patches-6.1/105-linksys-viper-dts.patch
@@ -36,9 +36,9 @@
 -		partition at 4a0000 {
 -			label = "rootfs";
 -			reg = <0x4A0000 0x1760000>;
-+		partition at 500000 {
++		partition at 600000 {
 +			label = "rootfs1";
-+			reg = <0x500000 0x1700000>;
++			reg = <0x600000 0x1600000>;
  		};
  
  		partition at 1c00000 {
@@ -51,9 +51,9 @@
 -		partition at 1ea0000 {
 -			label = "alt_rootfs";
 -			reg = <0x1EA0000 0x1760000>;
-+		partition at 1f00000 {
++		partition at 2000000 {
 +			label = "rootfs2";
-+			reg = <0x1F00000 0x1700000>;
++			reg = <0x2000000 0x1600000>;
  		};
  
  		partition at 3600000 {




More information about the lede-commits mailing list