All of lore.kernel.org
 help / color / mirror / Atom feed
From: Huang Shijie <b32955@freescale.com>
To: "Lothar Waßmann" <LW@KARO-electronics.de>
Cc: linux-mtd@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	Shawn Guo <shawn.guo@freescale.com>
Subject: Re: [i.MX28 GPMI] problem overwriting all-0xff data in NAND
Date: Wed, 20 Jul 2011 12:55:54 +0800	[thread overview]
Message-ID: <4E265FDA.5090306@freescale.com> (raw)
In-Reply-To: <20005.21635.427202.49313@ipc1.ka-ro>

Hi,
> Hi,
>
> Huang Shijie writes:
>> 于 2011年07月19日 14:02, Lothar Waßmann 写道:
>>> Hi,
>>>
>>> Huang Shijie writes:
>>>> hi  Lothar:
>>>>> On Mon, Jul 18, 2011 at 03:13:27PM +0200, Lothar Waßmann wrote:
>>>>>> Hi,
>>>>>>
>>>>>> with the gpmi-nfc driver for imx28 from Shawn Guo on a TX28 I
>>>>> To be clear, the author of gpmi-nfc driver is Huang Shijie (Cc-ed).
>>>>>
>>>>> Regards,
>>>>> Shawn
>>>>>
>>>>>> encountered some problems with jffs2 when overwriting pages that have
>>>>>> been written with 0xff (e.g. from padding from the file system image
>>>>>> file).
>>>> The GPMI driver now does not support the JFFS2 very well.
>>>> The JFFS2 will write the OOB, while the BCH of GPMI will use the OOB too.
>>>>
>>> I have applied a patch (from the Freescale BSPs) that prevents JFFS2
>>> from using the OOB area. But this still doesn't help.
>>>
>> Could you show the log ?
>>
> On the host:
>    mkfs.jffs2 -o ../rootfs.img -n -e 0x20000 -p -r .
> The last block gets padded with a stretch of 91840 bytes of 0xff.
> On the target:
>    flash_eraseall  /dev/mtd2
>    nandwrite /dev/mtd2 /rootfs-jffs2.image
> The raw data of the last used block in flash looks like this
> afterwards:
>    nanddump -n -p -l 0x800 -s 0x889800 /dev/mtd2
> |Block size 131072, page size 2048, OOB size 64
> |Dumping data starting at 0x00889800 and ending at 0x0088a000...
> |0x00889800: ff ff ff ff ff ff ff ff ff ff b7 00 00 00 f2 00
> |0x00889810: 00 00 06 00 00 00 7f ca a1 e3 e4 1f e9 24 78 5e
> |0x00889820: 34 8f 41 0e 83 30 0c 04 ef 7d 85 25 ae 6d f3 8e
> |0x00889830: de fb 81 10 0c b1 08 76 e4 18 10 bf af 83 d4 93
> |0x00889840: 2d 6b 67 77 3d c0 37 53 83 99 0a 82 cf 76 6d 85
> |0x00889850: 78 c5 09 4c 20 a0 a5 a0 d8 a4 1c ef 24 3c 3f 06
> |0x00889860: f8 58 57 ad 58 7d 32 84 23 6a d0 9d c3 94 53 4d
> |0x00889870: a1 33 23 42 1c dd cb d7 4d 76 36 b0 8c a0 22 36
> |0x00889880: 37 c7 15 e3 f4 12 2e 17 9c b9 27 56 77 47 3d 88
> |0x00889890: 97 5b 57 a5 35 1a a9 90 5d dd 20 c7 c3 4b 99 53
> |0x008898a0: a7 92 19 b2 3b 8c 17 dc 61 d3 13 68 be 21 46 3b
> |0x008898b0: 45 57 e8 0d 69 d9 35 1a 09 f7 96 ff 83 3f f3 13
> |0x008898c0: 40 69 f9 45 0a 2e 1e ce 01 7a 5c ca 5c 00 01 06
> |0x008898d0: 00 2b 56 54 c6 ff 85 19 01 e0 2f 00 00 00 b1 f9
> |0x008898e0: 44 f2 c2 03 00 00 d5 03 00 00 c8 03 00 00 a7 ac
> |0x008898f0: e3 4d 07 08 00 00 55 81 af 84 e8 5f 94 39 79 70
> |0x00889900: 2e 63 6f 6e 66 ff 85 19 02 e0 44 00 00 00 1d fb
> |0x00889910: f7 98 c8 03 00 00 01 00 00 00 a4 81 00 00 00 00
> |0x00889920: 00 00 00 00 00 00 a7 ac e3 4d a7 ac e3 4d a7 ac
> |0x00889930: e3 4d 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> |0x00889940: 00 00 00 00 00 00 13 77 d1 ba ff ff ff ff ff ff
> |0x00889950: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889a00: ff ff ff ff ff ff ff ff ff ff 27 21 37 1b 06 87
> |0x00889a10: 70 f1 00 0e 6a 8e 57 ff ff ff ff ff ff ff ff ff
> |0x00889a20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889c10: ff ff ff ff ff ff ff 08 75 8b 6f 48 36 a6 bc 16
> |0x00889c20: 61 58 db 52 ff ff ff ff ff ff ff ff ff ff ff ff
> |0x00889c30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889e20: ff ff ff ff 08 75 8b 6f 48 36 a6 bc 16 61 58 db
> |0x00889e30: 52 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |0x00889e40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff 08 75 8b 6f 48 36 a6 bc 16 61 58 db 52 00 00
>
> The remaining pages of this block are all-FF except for the ecc
> pattern as above.
>
> Checking the readability of the whole flash partition shows no errors:
>    dd if=/dev/mtdblock2 of=/dev/null
> |32768+0 records in
> |32768+0 records out
> |16777216 bytes (17 MB) copied, 18.6754 s, 898 kB/s
>
> Mounting the partition and writing some file produces ecc errors upon
> successive reads:
>    mount -t jffs2 /dev/mtdblock2 /mnt
>    touch /mnt/xxx
It seems the writing of JFFS2 corrupted something.
So the following commands will fail.

You can add some log in the functions 
mil_ecc_write_page()/mil_ecc_read_page()
to check what kind of error occurs.


Best Regards
Huang Shijie



>    umount /mnt
>    dd if=/dev/mtdblock2 of=/dev/null
> |end_request: I/O error, dev mtdblock2, sector 17488
> |Buffer I/O error on device mtdblock2, logical block 2186
> |end_request: I/O error, dev mtdblock2, sector 17488
> |Buffer I/O error on device mtdblock2, logical block 2186
> |dd: reading `/dev/mtdblock2': Input/output error
> |17488+0 records in
> |17488+0 records out
> |8953856 bytes (9.0 MB) copied, 10.243 s, 874 kB/s
>
> Remounting the file system:
>    mount -t jffs2 /dev/mtdblock2 /mnt
> |mtd->read(0x1fdfc bytes from 0x880204) returned ECC error
> |mtd->read(0x166bc bytes from 0x889944) returned ECC error
> |Empty flash at 0x00889940 ends at 0x0088a000
>
>>>> So I have to disable the JFFS2 to use the OOB. I have not finish the
>>>> code about it now.
>>>>
>>>> I recommend you use the UBIFS. But the latest version of GPMI driver
>>>> meets a DMA bug.
>>>> I am debugging the DMA bug now. and I will send it out when i fix it.
>>>>
>>> What sort of DMA bug?
>>>
>> The DMA may time-out. :(
>>
>> The DMA time-out may occur in two situations:
>> [1] send a command DMA descriptor, see the nfc->send_command() function.
>> [2] read the non-ecc data from nand, see the nfc->read_data() function.
>>
>> I don't know why. Maybe caused by the timing, or something else.
>>
> Maybe you are missing this patch:
> http://lists.infradead.org/pipermail/linux-arm-kernel/2011-April/049105.html
> I sent it in April, but apparently it has not been integrated in
> mainline or the pengutronix git.
>
>
> Lothar Waßmann

WARNING: multiple messages have this Message-ID (diff)
From: b32955@freescale.com (Huang Shijie)
To: linux-arm-kernel@lists.infradead.org
Subject: [i.MX28 GPMI] problem overwriting all-0xff data in NAND
Date: Wed, 20 Jul 2011 12:55:54 +0800	[thread overview]
Message-ID: <4E265FDA.5090306@freescale.com> (raw)
In-Reply-To: <20005.21635.427202.49313@ipc1.ka-ro>

Hi,
> Hi,
>
> Huang Shijie writes:
>> ? 2011?07?19? 14:02, Lothar Wa?mann ??:
>>> Hi,
>>>
>>> Huang Shijie writes:
>>>> hi  Lothar:
>>>>> On Mon, Jul 18, 2011 at 03:13:27PM +0200, Lothar Wa?mann wrote:
>>>>>> Hi,
>>>>>>
>>>>>> with the gpmi-nfc driver for imx28 from Shawn Guo on a TX28 I
>>>>> To be clear, the author of gpmi-nfc driver is Huang Shijie (Cc-ed).
>>>>>
>>>>> Regards,
>>>>> Shawn
>>>>>
>>>>>> encountered some problems with jffs2 when overwriting pages that have
>>>>>> been written with 0xff (e.g. from padding from the file system image
>>>>>> file).
>>>> The GPMI driver now does not support the JFFS2 very well.
>>>> The JFFS2 will write the OOB, while the BCH of GPMI will use the OOB too.
>>>>
>>> I have applied a patch (from the Freescale BSPs) that prevents JFFS2
>>> from using the OOB area. But this still doesn't help.
>>>
>> Could you show the log ?
>>
> On the host:
>    mkfs.jffs2 -o ../rootfs.img -n -e 0x20000 -p -r .
> The last block gets padded with a stretch of 91840 bytes of 0xff.
> On the target:
>    flash_eraseall  /dev/mtd2
>    nandwrite /dev/mtd2 /rootfs-jffs2.image
> The raw data of the last used block in flash looks like this
> afterwards:
>    nanddump -n -p -l 0x800 -s 0x889800 /dev/mtd2
> |Block size 131072, page size 2048, OOB size 64
> |Dumping data starting at 0x00889800 and ending at 0x0088a000...
> |0x00889800: ff ff ff ff ff ff ff ff ff ff b7 00 00 00 f2 00
> |0x00889810: 00 00 06 00 00 00 7f ca a1 e3 e4 1f e9 24 78 5e
> |0x00889820: 34 8f 41 0e 83 30 0c 04 ef 7d 85 25 ae 6d f3 8e
> |0x00889830: de fb 81 10 0c b1 08 76 e4 18 10 bf af 83 d4 93
> |0x00889840: 2d 6b 67 77 3d c0 37 53 83 99 0a 82 cf 76 6d 85
> |0x00889850: 78 c5 09 4c 20 a0 a5 a0 d8 a4 1c ef 24 3c 3f 06
> |0x00889860: f8 58 57 ad 58 7d 32 84 23 6a d0 9d c3 94 53 4d
> |0x00889870: a1 33 23 42 1c dd cb d7 4d 76 36 b0 8c a0 22 36
> |0x00889880: 37 c7 15 e3 f4 12 2e 17 9c b9 27 56 77 47 3d 88
> |0x00889890: 97 5b 57 a5 35 1a a9 90 5d dd 20 c7 c3 4b 99 53
> |0x008898a0: a7 92 19 b2 3b 8c 17 dc 61 d3 13 68 be 21 46 3b
> |0x008898b0: 45 57 e8 0d 69 d9 35 1a 09 f7 96 ff 83 3f f3 13
> |0x008898c0: 40 69 f9 45 0a 2e 1e ce 01 7a 5c ca 5c 00 01 06
> |0x008898d0: 00 2b 56 54 c6 ff 85 19 01 e0 2f 00 00 00 b1 f9
> |0x008898e0: 44 f2 c2 03 00 00 d5 03 00 00 c8 03 00 00 a7 ac
> |0x008898f0: e3 4d 07 08 00 00 55 81 af 84 e8 5f 94 39 79 70
> |0x00889900: 2e 63 6f 6e 66 ff 85 19 02 e0 44 00 00 00 1d fb
> |0x00889910: f7 98 c8 03 00 00 01 00 00 00 a4 81 00 00 00 00
> |0x00889920: 00 00 00 00 00 00 a7 ac e3 4d a7 ac e3 4d a7 ac
> |0x00889930: e3 4d 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> |0x00889940: 00 00 00 00 00 00 13 77 d1 ba ff ff ff ff ff ff
> |0x00889950: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889a00: ff ff ff ff ff ff ff ff ff ff 27 21 37 1b 06 87
> |0x00889a10: 70 f1 00 0e 6a 8e 57 ff ff ff ff ff ff ff ff ff
> |0x00889a20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889c10: ff ff ff ff ff ff ff 08 75 8b 6f 48 36 a6 bc 16
> |0x00889c20: 61 58 db 52 ff ff ff ff ff ff ff ff ff ff ff ff
> |0x00889c30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |0x00889e20: ff ff ff ff 08 75 8b 6f 48 36 a6 bc 16 61 58 db
> |0x00889e30: 52 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |0x00889e40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> [...]
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> |  OOB Data: ff 08 75 8b 6f 48 36 a6 bc 16 61 58 db 52 00 00
>
> The remaining pages of this block are all-FF except for the ecc
> pattern as above.
>
> Checking the readability of the whole flash partition shows no errors:
>    dd if=/dev/mtdblock2 of=/dev/null
> |32768+0 records in
> |32768+0 records out
> |16777216 bytes (17 MB) copied, 18.6754 s, 898 kB/s
>
> Mounting the partition and writing some file produces ecc errors upon
> successive reads:
>    mount -t jffs2 /dev/mtdblock2 /mnt
>    touch /mnt/xxx
It seems the writing of JFFS2 corrupted something.
So the following commands will fail.

You can add some log in the functions 
mil_ecc_write_page()/mil_ecc_read_page()
to check what kind of error occurs.


Best Regards
Huang Shijie



>    umount /mnt
>    dd if=/dev/mtdblock2 of=/dev/null
> |end_request: I/O error, dev mtdblock2, sector 17488
> |Buffer I/O error on device mtdblock2, logical block 2186
> |end_request: I/O error, dev mtdblock2, sector 17488
> |Buffer I/O error on device mtdblock2, logical block 2186
> |dd: reading `/dev/mtdblock2': Input/output error
> |17488+0 records in
> |17488+0 records out
> |8953856 bytes (9.0 MB) copied, 10.243 s, 874 kB/s
>
> Remounting the file system:
>    mount -t jffs2 /dev/mtdblock2 /mnt
> |mtd->read(0x1fdfc bytes from 0x880204) returned ECC error
> |mtd->read(0x166bc bytes from 0x889944) returned ECC error
> |Empty flash at 0x00889940 ends at 0x0088a000
>
>>>> So I have to disable the JFFS2 to use the OOB. I have not finish the
>>>> code about it now.
>>>>
>>>> I recommend you use the UBIFS. But the latest version of GPMI driver
>>>> meets a DMA bug.
>>>> I am debugging the DMA bug now. and I will send it out when i fix it.
>>>>
>>> What sort of DMA bug?
>>>
>> The DMA may time-out. :(
>>
>> The DMA time-out may occur in two situations:
>> [1] send a command DMA descriptor, see the nfc->send_command() function.
>> [2] read the non-ecc data from nand, see the nfc->read_data() function.
>>
>> I don't know why. Maybe caused by the timing, or something else.
>>
> Maybe you are missing this patch:
> http://lists.infradead.org/pipermail/linux-arm-kernel/2011-April/049105.html
> I sent it in April, but apparently it has not been integrated in
> mainline or the pengutronix git.
>
>
> Lothar Wa?mann

  parent reply	other threads:[~2011-07-20  4:55 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-18 13:13 [i.MX28 GPMI] problem overwriting all-0xff data in NAND Lothar Waßmann
2011-07-18 13:13 ` Lothar Waßmann
2011-07-18 14:56 ` Ivan Djelic
2011-07-18 14:56   ` Ivan Djelic
2011-07-19  5:59   ` Lothar Waßmann
2011-07-19  5:59     ` Lothar Waßmann
2011-07-19  6:48     ` Ivan Djelic
2011-07-19  6:48       ` Ivan Djelic
2011-07-18 16:43 ` Shawn Guo
2011-07-18 16:43   ` Shawn Guo
2011-07-19  2:12   ` Huang Shijie
2011-07-19  2:12     ` Huang Shijie
2011-07-19  6:02     ` Lothar Waßmann
2011-07-19  6:02       ` Lothar Waßmann
2011-07-19  7:03       ` Huang Shijie
2011-07-19  7:03         ` Huang Shijie
2011-07-19  9:55         ` Lothar Waßmann
2011-07-19  9:55           ` Lothar Waßmann
2011-07-19 13:36           ` Wolfram Sang
2011-07-19 13:36             ` Wolfram Sang
2011-07-20  2:18             ` Huang Shijie
2011-07-20  2:18               ` Huang Shijie
2011-07-20  8:51               ` Wolfram Sang
2011-07-20  8:51                 ` Wolfram Sang
2011-07-20 10:34                 ` Huang Shijie
2011-07-20  4:55           ` Huang Shijie [this message]
2011-07-20  4:55             ` Huang Shijie
2011-07-20  6:22             ` Lothar Waßmann
2011-07-20  6:22               ` Lothar Waßmann
2011-07-20  5:16     ` Artem Bityutskiy
2011-07-20  5:16       ` Artem Bityutskiy
2011-07-20  5:19       ` Artem Bityutskiy
2011-07-20  5:19         ` Artem Bityutskiy
2011-07-19  6:00   ` Lothar Waßmann
2011-07-19  6:00     ` Lothar Waßmann
2011-07-20  6:44   ` Huang Shijie
2011-07-20  6:44     ` Huang Shijie
2011-07-20  8:10     ` Lothar Waßmann
2011-07-20  8:10       ` Lothar Waßmann
2011-07-20  8:35     ` Artem Bityutskiy
2011-07-20  8:35       ` Artem Bityutskiy
2011-07-20  5:12 ` Artem Bityutskiy
2011-07-20  5:12   ` Artem Bityutskiy

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=4E265FDA.5090306@freescale.com \
    --to=b32955@freescale.com \
    --cc=LW@KARO-electronics.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=shawn.guo@freescale.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.