All of lore.kernel.org
 help / color / mirror / Atom feed
From: arno@natisbad.org (Arnaud Ebalard)
To: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	devicetree@vger.kernel.org, klightspeed@killerwolves.net,
	Jason Cooper <jason@lakedaemon.net>,
	linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
	Gregory Clement <gregory.clement@free-electrons.com>,
	Brian Norris <computersforpeace@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] ARM: MVEBU: Netgear RN102: Use Hardware BCH ECC
Date: Fri, 05 Sep 2014 22:49:58 +0200	[thread overview]
Message-ID: <87ha0l23nt.fsf@natisbad.org> (raw)
In-Reply-To: 20140905154140.GA1377@arch.hh.imgtec.org

Hi,

Ezequiel Garcia <ezequiel.garcia@free-electrons.com> writes:

> (Fixing Cc list: dropping devicetree guys, and adding Brian and MTD instead)
>
> On 05 Sep 04:23 PM, klightspeed@killerwolves.net wrote:
>> The bootloader on the Netgear ReadyNAS RN102 uses Hardware BCH ECC
>> (strength = 4), while the pxa3xx NAND driver by default uses 
>> Hamming ECC (strength = 1).
>> 
>
> Hm, I guess the device (Hynix H27U1G8F2BTR) does not support ONFI,
> and the kernel is just taking the legacy ECC. The flash specs makes no
> mention to ONFI, so probably no ONFI here.
>
>> This patch changes the ECC mode on these machines to match that
>> of the bootloader and of the stock firmware, so that for example
>> updating the kernel is possible without requiring a serial
>> connection.
>> 
>> This patch depends on commit 5b3e507 (mtd: nand: pxa3xx: Use ECC
>> strength and step size devicetree binding)
>> 
>> Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
>
> Looks good to me, since Arnaud reports this is the correct ECC scheme:
> http://natisbad.org/NAS2/index.html#hw-nand
>
> Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
>
> Thanks for the fix,

w/o the patch, you can write data to the flash using userland tools from
mtd-utils package (flash_erase and nandwrite); data can then be read
again using userland tools (say using dd). But - as reported by Ben - if
you nandwrite an uImage from userland, here is what you indeed get from
u-boot when you try and boot that image:

  root@humble:~# flash_erase /dev/mtd2 0 0
  Erasing 128 Kibyte @ 5e0000 -- 100 % complete 
  
  root@humble:~# nandwrite -p /dev/mtd2 /tmp/uImage-3.16.1.rn102
  Writing data to block 0 at offset 0x0
  Writing data to block 1 at offset 0x20000
  Writing data to block 2 at offset 0x40000
  Writing data to block 3 at offset 0x60000
  Writing data to block 4 at offset 0x80000
  
  ...
  
  reboot 
  
  ...
  
  Marvell>> nand read 0x1200000 0x200000 0x600000
  
  NAND read: device 0 offset 0x200000, size 0x600000
   6291456 bytes read: OK
  
  Marvell>> bootm 0x1200000
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-08-14  13:33:46 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4423998 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... Bad Data CRC
  ERROR: can't get kernel image!
  

Now, w/ the patch submitted by Ben, here is what you get:

  With the patch applied, this indeed works has 
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-09-05  20:25:34 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4424067 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... OK
     Loading Kernel Image ... OK
  OK
  
  Starting kernel ...

i.e. it works.  

So, thanks for reporting this, Ben. I must confess I got used to update
my kernels from u-boot and did not take enough attention to that
aspect when I updated the .dts to add access to NAND after Ezequiel
wrote the NAND driver. I will take a look at RN104 and RN2120 to check
if something similar is needed for those two.

FWIW, you can add my:

 Tested-by: Arnaud Ebalard <arno@natisbad.org>
 
Additionally, Ezequiel, would anything prevent pushing the patch to
stable team (nand entry in .dts was added in 3.14):

 Fixes: 92beaccd8b49 ("ARM: mvebu: Enable NAND controller in ReadyNAS 102 .dts file")

Cheers,

a+

WARNING: multiple messages have this Message-ID (diff)
From: arno@natisbad.org (Arnaud Ebalard)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: MVEBU: Netgear RN102: Use Hardware BCH ECC
Date: Fri, 05 Sep 2014 22:49:58 +0200	[thread overview]
Message-ID: <87ha0l23nt.fsf@natisbad.org> (raw)
In-Reply-To: 20140905154140.GA1377@arch.hh.imgtec.org

Hi,

Ezequiel Garcia <ezequiel.garcia@free-electrons.com> writes:

> (Fixing Cc list: dropping devicetree guys, and adding Brian and MTD instead)
>
> On 05 Sep 04:23 PM, klightspeed at killerwolves.net wrote:
>> The bootloader on the Netgear ReadyNAS RN102 uses Hardware BCH ECC
>> (strength = 4), while the pxa3xx NAND driver by default uses 
>> Hamming ECC (strength = 1).
>> 
>
> Hm, I guess the device (Hynix H27U1G8F2BTR) does not support ONFI,
> and the kernel is just taking the legacy ECC. The flash specs makes no
> mention to ONFI, so probably no ONFI here.
>
>> This patch changes the ECC mode on these machines to match that
>> of the bootloader and of the stock firmware, so that for example
>> updating the kernel is possible without requiring a serial
>> connection.
>> 
>> This patch depends on commit 5b3e507 (mtd: nand: pxa3xx: Use ECC
>> strength and step size devicetree binding)
>> 
>> Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
>
> Looks good to me, since Arnaud reports this is the correct ECC scheme:
> http://natisbad.org/NAS2/index.html#hw-nand
>
> Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
>
> Thanks for the fix,

w/o the patch, you can write data to the flash using userland tools from
mtd-utils package (flash_erase and nandwrite); data can then be read
again using userland tools (say using dd). But - as reported by Ben - if
you nandwrite an uImage from userland, here is what you indeed get from
u-boot when you try and boot that image:

  root at humble:~# flash_erase /dev/mtd2 0 0
  Erasing 128 Kibyte @ 5e0000 -- 100 % complete 
  
  root at humble:~# nandwrite -p /dev/mtd2 /tmp/uImage-3.16.1.rn102
  Writing data to block 0 at offset 0x0
  Writing data to block 1 at offset 0x20000
  Writing data to block 2 at offset 0x40000
  Writing data to block 3 at offset 0x60000
  Writing data to block 4 at offset 0x80000
  
  ...
  
  reboot 
  
  ...
  
  Marvell>> nand read 0x1200000 0x200000 0x600000
  
  NAND read: device 0 offset 0x200000, size 0x600000
   6291456 bytes read: OK
  
  Marvell>> bootm 0x1200000
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-08-14  13:33:46 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4423998 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... Bad Data CRC
  ERROR: can't get kernel image!
  

Now, w/ the patch submitted by Ben, here is what you get:

  With the patch applied, this indeed works has 
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-09-05  20:25:34 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4424067 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... OK
     Loading Kernel Image ... OK
  OK
  
  Starting kernel ...

i.e. it works.  

So, thanks for reporting this, Ben. I must confess I got used to update
my kernels from u-boot and did not take enough attention to that
aspect when I updated the .dts to add access to NAND after Ezequiel
wrote the NAND driver. I will take a look at RN104 and RN2120 to check
if something similar is needed for those two.

FWIW, you can add my:

 Tested-by: Arnaud Ebalard <arno@natisbad.org>
 
Additionally, Ezequiel, would anything prevent pushing the patch to
stable team (nand entry in .dts was added in 3.14):

 Fixes: 92beaccd8b49 ("ARM: mvebu: Enable NAND controller in ReadyNAS 102 .dts file")

Cheers,

a+

WARNING: multiple messages have this Message-ID (diff)
From: arno-LkuqDEemtHBg9hUCZPvPmw@public.gmane.org (Arnaud Ebalard)
To: Ezequiel Garcia
	<ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Brian Norris
	<computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Thomas Petazzoni
	<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Gregory Clement
	<gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Subject: Re: [PATCH] ARM: MVEBU: Netgear RN102: Use Hardware BCH ECC
Date: Fri, 05 Sep 2014 22:49:58 +0200	[thread overview]
Message-ID: <87ha0l23nt.fsf@natisbad.org> (raw)
In-Reply-To: 20140905154140.GA1377@arch.hh.imgtec.org

Hi,

Ezequiel Garcia <ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> writes:

> (Fixing Cc list: dropping devicetree guys, and adding Brian and MTD instead)
>
> On 05 Sep 04:23 PM, klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org wrote:
>> The bootloader on the Netgear ReadyNAS RN102 uses Hardware BCH ECC
>> (strength = 4), while the pxa3xx NAND driver by default uses 
>> Hamming ECC (strength = 1).
>> 
>
> Hm, I guess the device (Hynix H27U1G8F2BTR) does not support ONFI,
> and the kernel is just taking the legacy ECC. The flash specs makes no
> mention to ONFI, so probably no ONFI here.
>
>> This patch changes the ECC mode on these machines to match that
>> of the bootloader and of the stock firmware, so that for example
>> updating the kernel is possible without requiring a serial
>> connection.
>> 
>> This patch depends on commit 5b3e507 (mtd: nand: pxa3xx: Use ECC
>> strength and step size devicetree binding)
>> 
>> Signed-off-by: Ben Peddell <klightspeed-aslSrjg9ejhWX4hkXwHRhw@public.gmane.org>
>
> Looks good to me, since Arnaud reports this is the correct ECC scheme:
> http://natisbad.org/NAS2/index.html#hw-nand
>
> Acked-by: Ezequiel Garcia <ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
>
> Thanks for the fix,

w/o the patch, you can write data to the flash using userland tools from
mtd-utils package (flash_erase and nandwrite); data can then be read
again using userland tools (say using dd). But - as reported by Ben - if
you nandwrite an uImage from userland, here is what you indeed get from
u-boot when you try and boot that image:

  root@humble:~# flash_erase /dev/mtd2 0 0
  Erasing 128 Kibyte @ 5e0000 -- 100 % complete 
  
  root@humble:~# nandwrite -p /dev/mtd2 /tmp/uImage-3.16.1.rn102
  Writing data to block 0 at offset 0x0
  Writing data to block 1 at offset 0x20000
  Writing data to block 2 at offset 0x40000
  Writing data to block 3 at offset 0x60000
  Writing data to block 4 at offset 0x80000
  
  ...
  
  reboot 
  
  ...
  
  Marvell>> nand read 0x1200000 0x200000 0x600000
  
  NAND read: device 0 offset 0x200000, size 0x600000
   6291456 bytes read: OK
  
  Marvell>> bootm 0x1200000
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-08-14  13:33:46 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4423998 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... Bad Data CRC
  ERROR: can't get kernel image!
  

Now, w/ the patch submitted by Ben, here is what you get:

  With the patch applied, this indeed works has 
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-09-05  20:25:34 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4424067 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... OK
     Loading Kernel Image ... OK
  OK
  
  Starting kernel ...

i.e. it works.  

So, thanks for reporting this, Ben. I must confess I got used to update
my kernels from u-boot and did not take enough attention to that
aspect when I updated the .dts to add access to NAND after Ezequiel
wrote the NAND driver. I will take a look at RN104 and RN2120 to check
if something similar is needed for those two.

FWIW, you can add my:

 Tested-by: Arnaud Ebalard <arno-LkuqDEemtHBg9hUCZPvPmw@public.gmane.org>
 
Additionally, Ezequiel, would anything prevent pushing the patch to
stable team (nand entry in .dts was added in 3.14):

 Fixes: 92beaccd8b49 ("ARM: mvebu: Enable NAND controller in ReadyNAS 102 .dts file")

Cheers,

a+
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: arno@natisbad.org (Arnaud Ebalard)
To: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Cc: klightspeed@killerwolves.net,
	linux-arm-kernel@lists.infradead.org,
	Jason Cooper <jason@lakedaemon.net>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mtd@lists.infradead.org,
	Brian Norris <computersforpeace@gmail.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Gregory Clement <gregory.clement@free-electrons.com>
Subject: Re: [PATCH] ARM: MVEBU: Netgear RN102: Use Hardware BCH ECC
Date: Fri, 05 Sep 2014 22:49:58 +0200	[thread overview]
Message-ID: <87ha0l23nt.fsf@natisbad.org> (raw)
In-Reply-To: 20140905154140.GA1377@arch.hh.imgtec.org

Hi,

Ezequiel Garcia <ezequiel.garcia@free-electrons.com> writes:

> (Fixing Cc list: dropping devicetree guys, and adding Brian and MTD instead)
>
> On 05 Sep 04:23 PM, klightspeed@killerwolves.net wrote:
>> The bootloader on the Netgear ReadyNAS RN102 uses Hardware BCH ECC
>> (strength = 4), while the pxa3xx NAND driver by default uses 
>> Hamming ECC (strength = 1).
>> 
>
> Hm, I guess the device (Hynix H27U1G8F2BTR) does not support ONFI,
> and the kernel is just taking the legacy ECC. The flash specs makes no
> mention to ONFI, so probably no ONFI here.
>
>> This patch changes the ECC mode on these machines to match that
>> of the bootloader and of the stock firmware, so that for example
>> updating the kernel is possible without requiring a serial
>> connection.
>> 
>> This patch depends on commit 5b3e507 (mtd: nand: pxa3xx: Use ECC
>> strength and step size devicetree binding)
>> 
>> Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
>
> Looks good to me, since Arnaud reports this is the correct ECC scheme:
> http://natisbad.org/NAS2/index.html#hw-nand
>
> Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
>
> Thanks for the fix,

w/o the patch, you can write data to the flash using userland tools from
mtd-utils package (flash_erase and nandwrite); data can then be read
again using userland tools (say using dd). But - as reported by Ben - if
you nandwrite an uImage from userland, here is what you indeed get from
u-boot when you try and boot that image:

  root@humble:~# flash_erase /dev/mtd2 0 0
  Erasing 128 Kibyte @ 5e0000 -- 100 % complete 
  
  root@humble:~# nandwrite -p /dev/mtd2 /tmp/uImage-3.16.1.rn102
  Writing data to block 0 at offset 0x0
  Writing data to block 1 at offset 0x20000
  Writing data to block 2 at offset 0x40000
  Writing data to block 3 at offset 0x60000
  Writing data to block 4 at offset 0x80000
  
  ...
  
  reboot 
  
  ...
  
  Marvell>> nand read 0x1200000 0x200000 0x600000
  
  NAND read: device 0 offset 0x200000, size 0x600000
   6291456 bytes read: OK
  
  Marvell>> bootm 0x1200000
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-08-14  13:33:46 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4423998 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... Bad Data CRC
  ERROR: can't get kernel image!
  

Now, w/ the patch submitted by Ben, here is what you get:

  With the patch applied, this indeed works has 
  ## Booting kernel from Legacy Image at 01200000 ...
     Image Name:   Linux-3.16.1.rn102
     Created:      2014-09-05  20:25:34 UTC
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    4424067 Bytes =  4.2 MB
     Load Address: 00008000
     Entry Point:  00008000
     Verifying Checksum ... OK
     Loading Kernel Image ... OK
  OK
  
  Starting kernel ...

i.e. it works.  

So, thanks for reporting this, Ben. I must confess I got used to update
my kernels from u-boot and did not take enough attention to that
aspect when I updated the .dts to add access to NAND after Ezequiel
wrote the NAND driver. I will take a look at RN104 and RN2120 to check
if something similar is needed for those two.

FWIW, you can add my:

 Tested-by: Arnaud Ebalard <arno@natisbad.org>
 
Additionally, Ezequiel, would anything prevent pushing the patch to
stable team (nand entry in .dts was added in 3.14):

 Fixes: 92beaccd8b49 ("ARM: mvebu: Enable NAND controller in ReadyNAS 102 .dts file")

Cheers,

a+

  reply	other threads:[~2014-09-05 20:49 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05  6:23 [PATCH] ARM: MVEBU: Netgear RN102: Use Hardware BCH ECC klightspeed at killerwolves.net
2014-09-05  6:23 ` klightspeed
2014-09-05  6:23 ` klightspeed
2014-09-05 15:41 ` Ezequiel Garcia
2014-09-05 15:41   ` Ezequiel Garcia
2014-09-05 15:41   ` Ezequiel Garcia
2014-09-05 15:41   ` Ezequiel Garcia
2014-09-05 20:49   ` Arnaud Ebalard [this message]
2014-09-05 20:49     ` Arnaud Ebalard
2014-09-05 20:49     ` Arnaud Ebalard
2014-09-05 20:49     ` Arnaud Ebalard
2014-09-06  2:18     ` Ben Peddell
2014-09-06  2:18       ` Ben Peddell
2014-09-06  2:18       ` Ben Peddell
2014-09-06  2:18       ` Ben Peddell
  -- strict thread matches above, loose matches on Subject: below --
2014-09-05  6:18 klightspeed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ha0l23nt.fsf@natisbad.org \
    --to=arno@natisbad.org \
    --cc=computersforpeace@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=ezequiel.garcia@free-electrons.com \
    --cc=gregory.clement@free-electrons.com \
    --cc=jason@lakedaemon.net \
    --cc=klightspeed@killerwolves.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=thomas.petazzoni@free-electrons.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.