diff mbox

nand: fix flash erase when oob is in memory

Message ID alpine.DEB.2.02.1511131335150.11990@lnxricardw1.se.axis.com
State New
Headers show

Commit Message

Ricard Wanderlof Nov. 13, 2015, 1:17 p.m. UTC
For the "main area on file, oob in memory" case, fix the shifts so that
we erase the correct number of pages.

Signed-off-by: Ricard Wanderlöf <ricardw@axis.com>
---
 hw/block/nand.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ricard Wanderlof Nov. 13, 2015, 3:19 p.m. UTC | #1
On Fri, 13 Nov 2015, Ricard Wanderlof wrote:

> For the "main area on file, oob in memory" case, fix the shifts so that 
> we erase the correct number of pages.
> ...

Sorry about the duplicate post.

Initially used the wrong email address when subscribing so when I 
subscribed with the correct one one it seems that the first post was 
submitted as well as the second.

/Ricard
Rabin Vincent Nov. 24, 2015, 5:39 a.m. UTC | #2
(to: Kevin and cc: qemu-block)

On Fri, Nov 13, 2015 at 02:17:28PM +0100, Ricard Wanderlöf wrote:
> 
> For the "main area on file, oob in memory" case, fix the shifts so that
> we erase the correct number of pages.
> 
> Signed-off-by: Ricard Wanderlöf <ricardw@axis.com>
> ---
>  hw/block/nand.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/block/nand.c b/hw/block/nand.c
> index a68266f..f0e3413 100644
> --- a/hw/block/nand.c
> +++ b/hw/block/nand.c
> @@ -712,7 +712,7 @@ static void glue(nand_blk_erase_, PAGE_SIZE)(NANDFlashState *s)
>          memset(s->storage + (PAGE(addr) << OOB_SHIFT),
>                          0xff, OOB_SIZE << s->erase_shift);
>          i = SECTOR(addr);
> -        page = SECTOR(addr + (ADDR_SHIFT + s->erase_shift));
> +        page = SECTOR(addr + (1 << (ADDR_SHIFT + s->erase_shift)));
>          for (; i < page; i ++)
>              if (blk_write(s->blk, i, iobuf, 1) < 0) {
>                  printf("%s: write error in sector %" PRIu64 "\n", __func__, i);
> -- 
> 1.7.10.4
> 
> -- 
> Ricard Wolf Wanderlöf                           ricardw(at)axis.com
> Axis Communications AB, Lund, Sweden            www.axis.com
> Phone +46 46 272 2016                           Fax +46 46 13 61 30
> 
>
Kevin Wolf Nov. 24, 2015, 1:09 p.m. UTC | #3
Am 24.11.2015 um 06:39 hat Rabin Vincent geschrieben:
> (to: Kevin and cc: qemu-block)

Thanks for forwarding!

> On Fri, Nov 13, 2015 at 02:17:28PM +0100, Ricard Wanderlöf wrote:
> > 
> > For the "main area on file, oob in memory" case, fix the shifts so that
> > we erase the correct number of pages.
> > 
> > Signed-off-by: Ricard Wanderlöf <ricardw@axis.com>

Thanks, applied to my block branch for 2.5.

Kevin
diff mbox

Patch

diff --git a/hw/block/nand.c b/hw/block/nand.c
index a68266f..f0e3413 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -712,7 +712,7 @@  static void glue(nand_blk_erase_, PAGE_SIZE)(NANDFlashState *s)
         memset(s->storage + (PAGE(addr) << OOB_SHIFT),
                         0xff, OOB_SIZE << s->erase_shift);
         i = SECTOR(addr);
-        page = SECTOR(addr + (ADDR_SHIFT + s->erase_shift));
+        page = SECTOR(addr + (1 << (ADDR_SHIFT + s->erase_shift)));
         for (; i < page; i ++)
             if (blk_write(s->blk, i, iobuf, 1) < 0) {
                 printf("%s: write error in sector %" PRIu64 "\n", __func__, i);