Re: [OpenWrt-Devel] [PATCH RFT] kernel: mtdsplit_uimage: debug buf/header sizes

2015-02-12 Thread Rafał Miłecki
On 12 February 2015 at 21:04, John Crispin blo...@openwrt.org wrote:
 [0.564000] Creating 4 MTD partitions on spi32766.0:
 [0.568000] 0x-0x0001 : uboot
 [0.572000] 0x0001-0x0002 : uboot-env
 [0.58] 0x0002-0x0003 : calibration
 [0.584000] 0x0005-0x00ff : firmware
 [0.596000] mtdsplit_uimage: [__mtdsplit_parse_uimage] buf:c0049000
 sizeof(*buf):1
 [0.60] mtdsplit_uimage: [__mtdsplit_parse_uimage] sizeof(*header):64
 [0.608000] mtdsplit_uimage: [read_uimage_header] buf:c0049000
 header_len:1
 [0.616000] mtdsplit_uimage: [uimage_find_edimax] buf:c0049000 len:1
 FW_EDIMAX_OFFSET + sizeof(*header):84
 [0.624000] mtdsplit_uimage: Buffer too small for checking Edimax header
 [0.784000] Dedicated partitioner didn't split firmware partition,
 please fill a bug report!
 [0.788000] 0x00172108-0x00ff : rootfs
 [0.796000] mtd: partition rootfs must either start or end on erase
 block boundary or be smaller than an erase block -- forcing read-only
 [0.808000] mtd: device 4 (rootfs) set to be root filesystem
 [0.812000] 1 squashfs-split partitions found on MTD device rootfs
 [0.82] 0x0034-0x00ff : rootfs_data
 [1.916000] Realtek RTL8366RB ethernet switch driver version 0.2.4
 [1.924000] rtl8366rb rtl8366rb: using GPIO pins 491 (SDA) and 493 (SCK)
 [1.928000] rtl8366rb rtl8366rb: RTL5937 ver. 3 chip found

Thank you! My obvious bug was fixed in
https://dev.openwrt.org/changeset/44424/

Please note that if you still get
 Dedicated partitioner didn't split firmware partition, please fill a bug 
 report!
with 44424, it means that there is something wrong in
target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
and we/you should look for a working reference code in
405-mtd-old-firmware-uimage-splitter.patch
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH RFT] kernel: mtdsplit_uimage: debug buf/header sizes

2015-02-12 Thread John Crispin
yep, fixes the problem. please push it :)

On 12/02/2015 12:47, Rafał Miłecki wrote:
 ---
 John can you give it a try, please?
 ---
  .../generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c  | 15 
 ++-
  1 file changed, 14 insertions(+), 1 deletion(-)
 
 diff --git 
 a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c 
 b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 index 2bb5e9a..4abc4be 100644
 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 @@ -20,6 +20,8 @@
  
  #include mtdsplit.h
  
 +static int first_try = 1;
 +
  /*
   * uimage_header itself is only 64B, but it may be prepended with another 
 data.
   * Currently the biggest size is for Edimax devices: 20B + 64B
 @@ -60,6 +62,8 @@ read_uimage_header(struct mtd_info *mtd, size_t offset, 
 u_char *buf,
   size_t retlen;
   int ret;
  
 + if (first_try)
 + pr_info([%s] buf:%p header_len:%zu\n, __FUNCTION__, buf, 
 header_len);
   ret = mtd_read(mtd, offset, header_len, retlen, buf);
   if (ret) {
   pr_debug(read error in \%s\\n, mtd-name);
 @@ -106,11 +110,15 @@ static int __mtdsplit_parse_uimage(struct mtd_info 
 *master,
   ret = -ENOMEM;
   goto err_free_parts;
   }
 + if (first_try)
 + pr_info([%s] buf:%p sizeof(*buf):%u\n, __FUNCTION__, buf, 
 sizeof(*buf));
  
   /* find uImage on erase block boundaries */
   for (offset = 0; offset  master-size; offset += master-erasesize) {
   struct uimage_header *header;
  
 + if (first_try)
 + pr_info([%s] sizeof(*header):%u\n, __FUNCTION__, 
 sizeof(*header));
   uimage_size = 0;
  
   ret = read_uimage_header(master, offset, buf, sizeof(*buf));
 @@ -308,8 +316,13 @@ static ssize_t uimage_find_edimax(u_char *buf, size_t 
 len)
  {
   struct uimage_header *header;
  
 + if (first_try)
 + pr_info([%s] buf:%p len:%zu FW_EDIMAX_OFFSET + 
 sizeof(*header):%u\n, __FUNCTION__, buf, len, FW_EDIMAX_OFFSET + 
 sizeof(*header));
 +
   if (len  FW_EDIMAX_OFFSET + sizeof(*header)) {
 - pr_err(Buffer too small for checking Edimax header\n);
 + if (first_try)
 + pr_err(Buffer too small for checking Edimax header\n);
 + first_try = 0;
   return -ENOSPC;
   }
  
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH RFT] kernel: mtdsplit_uimage: debug buf/header sizes

2015-02-12 Thread John Crispin
[0.564000] Creating 4 MTD partitions on spi32766.0:
[0.568000] 0x-0x0001 : uboot
[0.572000] 0x0001-0x0002 : uboot-env
[0.58] 0x0002-0x0003 : calibration
[0.584000] 0x0005-0x00ff : firmware
[0.596000] mtdsplit_uimage: [__mtdsplit_parse_uimage] buf:c0049000
sizeof(*buf):1
[0.60] mtdsplit_uimage: [__mtdsplit_parse_uimage] sizeof(*header):64
[0.608000] mtdsplit_uimage: [read_uimage_header] buf:c0049000
header_len:1
[0.616000] mtdsplit_uimage: [uimage_find_edimax] buf:c0049000 len:1
FW_EDIMAX_OFFSET + sizeof(*header):84
[0.624000] mtdsplit_uimage: Buffer too small for checking Edimax header
[0.784000] Dedicated partitioner didn't split firmware partition,
please fill a bug report!
[0.788000] 0x00172108-0x00ff : rootfs
[0.796000] mtd: partition rootfs must either start or end on erase
block boundary or be smaller than an erase block -- forcing read-only
[0.808000] mtd: device 4 (rootfs) set to be root filesystem
[0.812000] 1 squashfs-split partitions found on MTD device rootfs
[0.82] 0x0034-0x00ff : rootfs_data
[1.916000] Realtek RTL8366RB ethernet switch driver version 0.2.4
[1.924000] rtl8366rb rtl8366rb: using GPIO pins 491 (SDA) and 493 (SCK)
[1.928000] rtl8366rb rtl8366rb: RTL5937 ver. 3 chip found





On 12/02/2015 12:47, Rafał Miłecki wrote:
 ---
 John can you give it a try, please?
 ---
  .../generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c  | 15 
 ++-
  1 file changed, 14 insertions(+), 1 deletion(-)
 
 diff --git 
 a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c 
 b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 index 2bb5e9a..4abc4be 100644
 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 @@ -20,6 +20,8 @@
  
  #include mtdsplit.h
  
 +static int first_try = 1;
 +
  /*
   * uimage_header itself is only 64B, but it may be prepended with another 
 data.
   * Currently the biggest size is for Edimax devices: 20B + 64B
 @@ -60,6 +62,8 @@ read_uimage_header(struct mtd_info *mtd, size_t offset, 
 u_char *buf,
   size_t retlen;
   int ret;
  
 + if (first_try)
 + pr_info([%s] buf:%p header_len:%zu\n, __FUNCTION__, buf, 
 header_len);
   ret = mtd_read(mtd, offset, header_len, retlen, buf);
   if (ret) {
   pr_debug(read error in \%s\\n, mtd-name);
 @@ -106,11 +110,15 @@ static int __mtdsplit_parse_uimage(struct mtd_info 
 *master,
   ret = -ENOMEM;
   goto err_free_parts;
   }
 + if (first_try)
 + pr_info([%s] buf:%p sizeof(*buf):%u\n, __FUNCTION__, buf, 
 sizeof(*buf));
  
   /* find uImage on erase block boundaries */
   for (offset = 0; offset  master-size; offset += master-erasesize) {
   struct uimage_header *header;
  
 + if (first_try)
 + pr_info([%s] sizeof(*header):%u\n, __FUNCTION__, 
 sizeof(*header));
   uimage_size = 0;
  
   ret = read_uimage_header(master, offset, buf, sizeof(*buf));
 @@ -308,8 +316,13 @@ static ssize_t uimage_find_edimax(u_char *buf, size_t 
 len)
  {
   struct uimage_header *header;
  
 + if (first_try)
 + pr_info([%s] buf:%p len:%zu FW_EDIMAX_OFFSET + 
 sizeof(*header):%u\n, __FUNCTION__, buf, len, FW_EDIMAX_OFFSET + 
 sizeof(*header));
 +
   if (len  FW_EDIMAX_OFFSET + sizeof(*header)) {
 - pr_err(Buffer too small for checking Edimax header\n);
 + if (first_try)
 + pr_err(Buffer too small for checking Edimax header\n);
 + first_try = 0;
   return -ENOSPC;
   }
  
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH RFT] kernel: mtdsplit_uimage: debug buf/header sizes

2015-02-12 Thread John Crispin


On 12/02/2015 21:18, Rafał Miłecki wrote:
 On 12 February 2015 at 21:04, John Crispin blo...@openwrt.org wrote:
 [0.564000] Creating 4 MTD partitions on spi32766.0:
 [0.568000] 0x-0x0001 : uboot
 [0.572000] 0x0001-0x0002 : uboot-env
 [0.58] 0x0002-0x0003 : calibration
 [0.584000] 0x0005-0x00ff : firmware
 [0.596000] mtdsplit_uimage: [__mtdsplit_parse_uimage] buf:c0049000
 sizeof(*buf):1
 [0.60] mtdsplit_uimage: [__mtdsplit_parse_uimage] sizeof(*header):64
 [0.608000] mtdsplit_uimage: [read_uimage_header] buf:c0049000
 header_len:1
 [0.616000] mtdsplit_uimage: [uimage_find_edimax] buf:c0049000 len:1
 FW_EDIMAX_OFFSET + sizeof(*header):84
 [0.624000] mtdsplit_uimage: Buffer too small for checking Edimax header
 [0.784000] Dedicated partitioner didn't split firmware partition,
 please fill a bug report!
 [0.788000] 0x00172108-0x00ff : rootfs
 [0.796000] mtd: partition rootfs must either start or end on erase
 block boundary or be smaller than an erase block -- forcing read-only
 [0.808000] mtd: device 4 (rootfs) set to be root filesystem
 [0.812000] 1 squashfs-split partitions found on MTD device rootfs
 [0.82] 0x0034-0x00ff : rootfs_data
 [1.916000] Realtek RTL8366RB ethernet switch driver version 0.2.4
 [1.924000] rtl8366rb rtl8366rb: using GPIO pins 491 (SDA) and 493 (SCK)
 [1.928000] rtl8366rb rtl8366rb: RTL5937 ver. 3 chip found
 
 Thank you! My obvious bug was fixed in
 https://dev.openwrt.org/changeset/44424/
 

they tend to be the hardest to find ;)

 Please note that if you still get
 Dedicated partitioner didn't split firmware partition, please fill a bug 
 report!
 with 44424, it means that there is something wrong in
 target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
 and we/you should look for a working reference code in
 405-mtd-old-firmware-uimage-splitter.patch
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel