On 15/09/2016 11:34, Koen Vandeputte wrote:
> As indicated by Tim Harvey:
> 
> The 4.4 kernel is not easily sized down to below the 1.5MB limit
> imposed by the SPI flash MTD partition mapping. Increase this
> to 2MB where it is for NOR flash devices.
> Additionally add a check that ensures the kernel fits within
> the 2MB limit.
> 
> This resolves boot issues on SPI based boards such as the GW2380/82.
> 
> https://github.com/Gateworks/openwrt/commit/17b860f32fe5739042445eb852109682d6ff7d99
> 
> Signed-off-by: Koen Vandeputte <koen.vandepu...@ncentric.com>

this might break sysupgrade when upgrading from a small kernel partition
on a pre-4.4 kernel to a new 4.4+ kernel. did you try doing so ?

        John

> ---
>  .../linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c   | 16 
> ++++++++--------
>  target/linux/cns3xxx/image/Makefile                      |  6 +++++-
>  2 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c 
> b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> index fb519d2..3c21404 100644
> --- a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> +++ b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> @@ -168,12 +168,12 @@ static struct mtd_partition laguna_spi_partitions[] = {
>               .offset         = SZ_256K,
>       }, {
>               .name           = "kernel",
> -             .size           = SZ_1M + SZ_512K,
> +             .size           = SZ_2M,
>               .offset         = SZ_512K,
>       }, {
>               .name           = "rootfs",
> -             .size           = SZ_16M - SZ_2M,
> -             .offset         = SZ_2M,
> +             .size           = SZ_16M - SZ_2M - SZ_512K,
> +             .offset         = SZ_2M + SZ_512K,
>       },
>  };
>  
> @@ -988,19 +988,19 @@ static int __init laguna_model_setup(void)
>               if (laguna_info.config2_bitmap & (SPI_FLASH_LOAD)) {
>                       switch (laguna_info.spi_flash_size) {
>                               case 1:
> -                                     laguna_spi_partitions[3].size = SZ_4M - 
> SZ_2M;
> +                                     laguna_spi_partitions[3].size = SZ_4M - 
> SZ_2M - SZ_512K;
>                               break;
>                               case 2:
> -                                     laguna_spi_partitions[3].size = SZ_8M - 
> SZ_2M;
> +                                     laguna_spi_partitions[3].size = SZ_8M - 
> SZ_2M - SZ_512K;
>                               break;
>                               case 3:
> -                                     laguna_spi_partitions[3].size = SZ_16M 
> - SZ_2M;
> +                                     laguna_spi_partitions[3].size = SZ_16M 
> - SZ_2M - SZ_512K;
>                               break;
>                               case 4:
> -                                     laguna_spi_partitions[3].size = SZ_32M 
> - SZ_2M;
> +                                     laguna_spi_partitions[3].size = SZ_32M 
> - SZ_2M - SZ_512K;
>                               break;
>                               case 5:
> -                                     laguna_spi_partitions[3].size = SZ_64M 
> - SZ_2M;
> +                                     laguna_spi_partitions[3].size = SZ_64M 
> - SZ_2M - SZ_512K;
>                               break;
>                       }
>                       
> spi_register_board_info(ARRAY_AND_SIZE(laguna_spi_devices));
> diff --git a/target/linux/cns3xxx/image/Makefile 
> b/target/linux/cns3xxx/image/Makefile
> index 8f29c6c..d71a860 100644
> --- a/target/linux/cns3xxx/image/Makefile
> +++ b/target/linux/cns3xxx/image/Makefile
> @@ -9,6 +9,10 @@ include $(INCLUDE_DIR)/image.mk
>  
>  define Image/Prepare
>       mkimage -A arm -O linux -T kernel -C none -a 0x20008000 -e 0x20008000 
> -n 'OpenWrt Linux-$(LINUX_VERSION)' -d $(KDIR)/zImage $(KDIR)/uImage
> +     @if [ `stat -c%s "$(KDIR)/uImage"` -gt `expr 2048 \* 1024` ]; then \
> +             echo "Error: Kernel is too big" >&2; \
> +             exit 1; \
> +     fi
>  endef
>  
>  # Build sysupgrade image
> @@ -39,7 +43,7 @@ define Image/Build/squashfs
>       dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
>       ) > $(BIN_DIR)/$(IMG_PREFIX)-$(1)_laguna_nor.bin
>       ( \
> -     dd if=$(KDIR)/uImage bs=1536k conv=sync; \
> +     dd if=$(KDIR)/uImage bs=2048k conv=sync; \
>       dd if=$(KDIR)/root.$(1) bs=256k conv=sync; \
>       ) > $(BIN_DIR)/$(IMG_PREFIX)-$(1)_laguna_spi.bin
>  endef
> 

_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to