All of lore.kernel.org
 help / color / mirror / Atom feed
* question: Why the nand_wait() wait for 20ms for nand program.
@ 2013-01-18  8:05 Huang Shijie
  2013-01-18 12:26 ` Matthieu CASTET
  0 siblings, 1 reply; 13+ messages in thread
From: Huang Shijie @ 2013-01-18  8:05 UTC (permalink / raw)
  To: Artem Bityutskiy, linux-mtd@lists.infradead.org, David Woodhouse

Hi all:
Why the nand_wait() wait for 20ms for nand program. could we
expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
The chip's BUSY/READY pin may needs more then 20ms to become ready,
though its
datasheet tells me the tPROG's max value is 2.5ms.

thanks
Huang Shijie

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-18  8:05 question: Why the nand_wait() wait for 20ms for nand program Huang Shijie
@ 2013-01-18 12:26 ` Matthieu CASTET
  2013-01-21  3:34   ` Huang Shijie
  0 siblings, 1 reply; 13+ messages in thread
From: Matthieu CASTET @ 2013-01-18 12:26 UTC (permalink / raw)
  To: Huang Shijie
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

Huang Shijie a écrit :
> Hi all:
> Why the nand_wait() wait for 20ms for nand program. could we
> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
> The chip's BUSY/READY pin may needs more then 20ms to become ready,
> though its
> datasheet tells me the tPROG's max value is 2.5ms.
> 
Don't you have an hardware problem (missing pullup/down on ready busy pin) ?

If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.


Matthieu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-18 12:26 ` Matthieu CASTET
@ 2013-01-21  3:34   ` Huang Shijie
  2013-01-21  8:57     ` Matthieu CASTET
  0 siblings, 1 reply; 13+ messages in thread
From: Huang Shijie @ 2013-01-21  3:34 UTC (permalink / raw)
  To: Matthieu CASTET
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

于 2013年01月18日 20:26, Matthieu CASTET 写道:
> Huang Shijie a écrit :
>> Hi all:
>> Why the nand_wait() wait for 20ms for nand program. could we
>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>> though its
>> datasheet tells me the tPROG's max value is 2.5ms.
>>
> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>
> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.

I finally found the root cause.

I added the do_gettimeofday() in the nand_wait() to measure the 
READY/BUSY time. The code is like this:
---------------------------------------------------- code start 
-----------------------------------------------------------------------

+static struct timeval start, finish;
+static int my_nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
+{
+
+ unsigned long timeo = jiffies;
+ int status, state = chip->state;
+ int check = 0;
+
+ if (state == FL_ERASING)
+ timeo += (HZ * 400) / 1000;
+ else
+ timeo += (HZ * 20) / 1000;
+
+ led_trigger_event(nand_led_trigger, LED_FULL);
+
+ /*
+ * Apply this short delay always to ensure that we do wait tWB in any
+ * case on any machine.
+ */
+ ndelay(100);
+
+ if ((state == FL_ERASING) && (chip->options & NAND_IS_AND))
+ chip->cmdfunc(mtd, NAND_CMD_STATUS_MULTI, -1, -1);
+ else
+ chip->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1);
+
+ do_gettimeofday(&start);
+
+ if (in_interrupt() || oops_in_progress)
+ panic_nand_wait(mtd, chip, timeo);
+ else {
+ while (time_before(jiffies, timeo)) {
+ if (chip->dev_ready) {
+ if (chip->dev_ready(mtd)) {
+ do_gettimeofday(&finish);
+ check = 1;
+ break;
+ }
+ } else {
+ if (chip->read_byte(mtd) & NAND_STATUS_READY)
+ break;
+ }
+ cond_resched();
+ }
+ }
+ led_trigger_event(nand_led_trigger, LED_OFF);
+
+ status = (int)chip->read_byte(mtd);
+ if (check == 0) {
+ long ms, us;
+
+ /* get it here. */
+ do_gettimeofday(&finish);
+
+ us = (finish.tv_sec * USEC_PER_SEC + finish.tv_usec)
+ - (start.tv_sec * USEC_PER_SEC + start.tv_usec);
+ ms = us / USEC_PER_MSEC;
+
+ printk("[ %s : ], status : %x, <%lu, %lu>, < %lu, %lu>, <%lu, %lu>, Js 
<%lu, %lu>\n",
+ __func__, status, finish.tv_sec, start.tv_sec,
+ finish.tv_usec, start.tv_usec, ms, us);
+
+ }
+ start = finish = (struct timeval) {0, 0};
+ return status;
+}

/**
* __nand_unlock - [REPLACEABLE] unlocks specified locked blocks
* @mtd: mtd info
@@ -2180,7 +2247,8 @@ static int nand_write_page(struct mtd_info *mtd, 
struct nand_chip *chip,
if (!cached || !(chip->options & NAND_CACHEPRG)) {

chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
- status = chip->waitfunc(mtd, chip);
+ status = my_nand_wait(mtd, chip);
+
/*
* See if operation failed and additional status checks are
* available.
-- 
------------------------------------------------------------------------code 
end 
here.----------------------------------------------------------------------------


The code tells me that it will wait for 20ms, but in actually, the 
kernel may breaks the while loop in JUST 1ms.
My CONFIG_HZ is 100.

Any idea about this?

thanks.
Huang Shijie









>
> Matthieu
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-21  3:34   ` Huang Shijie
@ 2013-01-21  8:57     ` Matthieu CASTET
       [not found]       ` <50FD0554.8030108@freescale.com>
  0 siblings, 1 reply; 13+ messages in thread
From: Matthieu CASTET @ 2013-01-21  8:57 UTC (permalink / raw)
  To: Huang Shijie
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

Huang Shijie a écrit :
> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>> Huang Shijie a écrit :
>>> Hi all:
>>> Why the nand_wait() wait for 20ms for nand program. could we
>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>> though its
>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>
>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>
>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
> 
> I finally found the root cause.
> 
> I added the do_gettimeofday() in the nand_wait() to measure the 
> READY/BUSY time. The code is like this:
> ---------------------------------------------------- code start 
>
Could you dump jiffies and timeo in your code ?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
       [not found]       ` <50FD0554.8030108@freescale.com>
@ 2013-01-21  9:15         ` Matthieu CASTET
  2013-01-21  9:25           ` Huang Shijie
  0 siblings, 1 reply; 13+ messages in thread
From: Matthieu CASTET @ 2013-01-21  9:15 UTC (permalink / raw)
  To: Huang Shijie
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

Huang Shijie a écrit :
>  于 2013年01月21日 16:57, Matthieu CASTET 写道:
>> Huang Shijie a écrit :
>>> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>>>> Huang Shijie a écrit :
>>>>> Hi all:
>>>>> Why the nand_wait() wait for 20ms for nand program. could we
>>>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>>>> though its
>>>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>>>
>>>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>>>
>>>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
>>> I finally found the root cause.
>>>
>>> I added the do_gettimeofday() in the nand_wait() to measure the 
>>> READY/BUSY time. The code is like this:
>>> ---------------------------------------------------- code start 
>>>
>> Could you dump jiffies and timeo in your code ?
> The following just shows some part of the log:
> 
> [my_nand_wait]status : 80, <21480, 21480>, < 665911, 664170>, <1, 1741>
> [my_nand_wait]status : 80, <21480, 21480>, < 735989, 734626>, <1, 1363>
> [my_nand_wait]status : 80, <21480, 21480>, < 805693, 804825>, <0, 868>
> 
> From the log, we can see that the kernel just waits for 1741us to break
> the while loop,
> not 20ms.
> 

Yes but you should display jiffies and timeo value to understand why the kernel
thinks 2 jiffies elapsed.


Matthieu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-21  9:15         ` Matthieu CASTET
@ 2013-01-21  9:25           ` Huang Shijie
  2013-01-21  9:32             ` Matthieu CASTET
  0 siblings, 1 reply; 13+ messages in thread
From: Huang Shijie @ 2013-01-21  9:25 UTC (permalink / raw)
  To: Matthieu CASTET
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

于 2013年01月21日 17:15, Matthieu CASTET 写道:
> Huang Shijie a écrit :
>>   于 2013年01月21日 16:57, Matthieu CASTET 写道:
>>> Huang Shijie a écrit :
>>>> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>>>>> Huang Shijie a écrit :
>>>>>> Hi all:
>>>>>> Why the nand_wait() wait for 20ms for nand program. could we
>>>>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>>>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>>>>> though its
>>>>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>>>>
>>>>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>>>>
>>>>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
>>>> I finally found the root cause.
>>>>
>>>> I added the do_gettimeofday() in the nand_wait() to measure the
>>>> READY/BUSY time. The code is like this:
>>>> ---------------------------------------------------- code start
>>>>
>>> Could you dump jiffies and timeo in your code ?
>> The following just shows some part of the log:
>>
>> [my_nand_wait]status : 80,<21480, 21480>,<  665911, 664170>,<1, 1741>
>> [my_nand_wait]status : 80,<21480, 21480>,<  735989, 734626>,<1, 1363>
>> [my_nand_wait]status : 80,<21480, 21480>,<  805693, 804825>,<0, 868>
>>
>>  From the log, we can see that the kernel just waits for 1741us to break
>> the while loop,
>> not 20ms.
>>
> Yes but you should display jiffies and timeo value to understand why the kernel
> thinks 2 jiffies elapsed.
I dumpped the jiffies and timeo too. The jiffies is really _equal_ to 
the timeo, and then the while loop breaks.

thanks for your comments.

I think there is something wrong with the timer.

Huang Shijie





>
> Matthieu
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-21  9:25           ` Huang Shijie
@ 2013-01-21  9:32             ` Matthieu CASTET
  2013-01-21  9:35               ` Huang Shijie
  2013-01-22  2:46               ` question: Why the nand_wait() wait for 20ms for nand program Huang Shijie
  0 siblings, 2 replies; 13+ messages in thread
From: Matthieu CASTET @ 2013-01-21  9:32 UTC (permalink / raw)
  To: Huang Shijie
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

Huang Shijie a écrit :
> 于 2013年01月21日 17:15, Matthieu CASTET 写道:
>> Huang Shijie a écrit :
>>>   于 2013年01月21日 16:57, Matthieu CASTET 写道:
>>>> Huang Shijie a écrit :
>>>>> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>>>>>> Huang Shijie a écrit :
>>>>>>> Hi all:
>>>>>>> Why the nand_wait() wait for 20ms for nand program. could we
>>>>>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>>>>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>>>>>> though its
>>>>>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>>>>>
>>>>>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>>>>>
>>>>>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
>>>>> I finally found the root cause.
>>>>>
>>>>> I added the do_gettimeofday() in the nand_wait() to measure the
>>>>> READY/BUSY time. The code is like this:
>>>>> ---------------------------------------------------- code start
>>>>>
>>>> Could you dump jiffies and timeo in your code ?
>>> The following just shows some part of the log:
>>>
>>> [my_nand_wait]status : 80,<21480, 21480>,<  665911, 664170>,<1, 1741>
>>> [my_nand_wait]status : 80,<21480, 21480>,<  735989, 734626>,<1, 1363>
>>> [my_nand_wait]status : 80,<21480, 21480>,<  805693, 804825>,<0, 868>
>>>
>>>  From the log, we can see that the kernel just waits for 1741us to break
>>> the while loop,
>>> not 20ms.
>>>
>> Yes but you should display jiffies and timeo value to understand why the kernel
>> thinks 2 jiffies elapsed.
> I dumpped the jiffies and timeo too. The jiffies is really _equal_ to 
> the timeo, and then the while loop breaks.
> 
> thanks for your comments.
> 
> I think there is something wrong with the timer.
> 
timeo += (HZ * 20) / 1000;

So what is the value of HZ ?

In order (HZ * 20) / 1000 is 0 HZ should be < 50.


Matthieu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-21  9:32             ` Matthieu CASTET
@ 2013-01-21  9:35               ` Huang Shijie
       [not found]                 ` <50FF9068.1030709@freescale.com>
  2013-01-22  2:46               ` question: Why the nand_wait() wait for 20ms for nand program Huang Shijie
  1 sibling, 1 reply; 13+ messages in thread
From: Huang Shijie @ 2013-01-21  9:35 UTC (permalink / raw)
  To: Matthieu CASTET
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

于 2013年01月21日 17:32, Matthieu CASTET 写道:
> Huang Shijie a écrit :
>> 于 2013年01月21日 17:15, Matthieu CASTET 写道:
>>> Huang Shijie a écrit :
>>>>    于 2013年01月21日 16:57, Matthieu CASTET 写道:
>>>>> Huang Shijie a écrit :
>>>>>> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>>>>>>> Huang Shijie a écrit :
>>>>>>>> Hi all:
>>>>>>>> Why the nand_wait() wait for 20ms for nand program. could we
>>>>>>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>>>>>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>>>>>>> though its
>>>>>>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>>>>>>
>>>>>>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>>>>>>
>>>>>>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
>>>>>> I finally found the root cause.
>>>>>>
>>>>>> I added the do_gettimeofday() in the nand_wait() to measure the
>>>>>> READY/BUSY time. The code is like this:
>>>>>> ---------------------------------------------------- code start
>>>>>>
>>>>> Could you dump jiffies and timeo in your code ?
>>>> The following just shows some part of the log:
>>>>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   665911, 664170>,<1, 1741>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   735989, 734626>,<1, 1363>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   805693, 804825>,<0, 868>
>>>>
>>>>    From the log, we can see that the kernel just waits for 1741us to break
>>>> the while loop,
>>>> not 20ms.
>>>>
>>> Yes but you should display jiffies and timeo value to understand why the kernel
>>> thinks 2 jiffies elapsed.
>> I dumpped the jiffies and timeo too. The jiffies is really _equal_ to
>> the timeo, and then the while loop breaks.
>>
>> thanks for your comments.
>>
>> I think there is something wrong with the timer.
>>
> timeo += (HZ * 20) / 1000;
>
> So what is the value of HZ ?
my CONFIG_HZ is 100.

thanks
Huang Shijie
> In order (HZ * 20) / 1000 is 0 HZ should be<  50.
>
>
> Matthieu
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question: Why the nand_wait() wait for 20ms for nand program.
  2013-01-21  9:32             ` Matthieu CASTET
  2013-01-21  9:35               ` Huang Shijie
@ 2013-01-22  2:46               ` Huang Shijie
  1 sibling, 0 replies; 13+ messages in thread
From: Huang Shijie @ 2013-01-22  2:46 UTC (permalink / raw)
  To: Matthieu CASTET
  Cc: David Woodhouse, linux-mtd@lists.infradead.org, Artem Bityutskiy

于 2013年01月21日 17:32, Matthieu CASTET 写道:
> Huang Shijie a écrit :
>> 于 2013年01月21日 17:15, Matthieu CASTET 写道:
>>> Huang Shijie a écrit :
>>>>    于 2013年01月21日 16:57, Matthieu CASTET 写道:
>>>>> Huang Shijie a écrit :
>>>>>> 于 2013年01月18日 20:26, Matthieu CASTET 写道:
>>>>>>> Huang Shijie a écrit :
>>>>>>>> Hi all:
>>>>>>>> Why the nand_wait() wait for 20ms for nand program. could we
>>>>>>>> expand this time to 40ms? I have a nand chip : Micron MT29F64G08CBABAWP.
>>>>>>>> The chip's BUSY/READY pin may needs more then 20ms to become ready,
>>>>>>>> though its
>>>>>>>> datasheet tells me the tPROG's max value is 2.5ms.
>>>>>>>>
>>>>>>> Don't you have an hardware problem (missing pullup/down on ready busy pin) ?
>>>>>>>
>>>>>>> If the datasheet say the max value is 2.5 ms , how it can be more than 20 ms.
>>>>>> I finally found the root cause.
>>>>>>
>>>>>> I added the do_gettimeofday() in the nand_wait() to measure the
>>>>>> READY/BUSY time. The code is like this:
>>>>>> ---------------------------------------------------- code start
>>>>>>
>>>>> Could you dump jiffies and timeo in your code ?
>>>> The following just shows some part of the log:
>>>>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   665911, 664170>,<1, 1741>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   735989, 734626>,<1, 1363>
>>>> [my_nand_wait]status : 80,<21480, 21480>,<   805693, 804825>,<0, 868>
>>>>
>>>>    From the log, we can see that the kernel just waits for 1741us to break
>>>> the while loop,
>>>> not 20ms.
>>>>
>>> Yes but you should display jiffies and timeo value to understand why the kernel
>>> thinks 2 jiffies elapsed.
>> I dumpped the jiffies and timeo too. The jiffies is really _equal_ to
>> the timeo, and then the while loop breaks.
>>
>> thanks for your comments.
>>
>> I think there is something wrong with the timer.
>>
> timeo += (HZ * 20) / 1000;
>
> So what is the value of HZ ?
>
> In order (HZ * 20) / 1000 is 0 HZ should be<  50.

thanks for your help.

I really appreciate it.

this bug is caused by our unstable kernel.
I tried with some other stable code, the issue never occurs.


thanks
Huang shijie
>
> Matthieu
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question about mtd_torturetest.c
       [not found]                 ` <50FF9068.1030709@freescale.com>
@ 2013-02-01 16:58                   ` Artem Bityutskiy
  2013-02-04  5:19                     ` Gupta, Pekon
  0 siblings, 1 reply; 13+ messages in thread
From: Artem Bityutskiy @ 2013-02-01 16:58 UTC (permalink / raw)
  To: Huang Shijie
  Cc: linux-mtd@lists.infradead.org, Lin Wei-B34918, David Woodhouse,
	Matthieu CASTET

[-- Attachment #1: Type: text/plain, Size: 295 bytes --]

On Wed, 2013-01-23 at 15:25 +0800, Huang Shijie wrote:
> Hi all:
> 
>     The mtd_torturetest.c uses the 55/AA patterns to torture the nand block.
> Are the 55/AA patterns more tougher then the random data?

Probably not, please, improve the test.

-- 
Best Regards,
Artem Bityutskiy

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: question about mtd_torturetest.c
  2013-02-01 16:58                   ` question about mtd_torturetest.c Artem Bityutskiy
@ 2013-02-04  5:19                     ` Gupta, Pekon
  2013-02-04  6:58                       ` Artem Bityutskiy
  0 siblings, 1 reply; 13+ messages in thread
From: Gupta, Pekon @ 2013-02-04  5:19 UTC (permalink / raw)
  To: dedekind1@gmail.com, Huang Shijie
  Cc: David Woodhouse, Lin Wei-B34918, linux-mtd@lists.infradead.org,
	Matthieu CASTET

> On Wed, 2013-01-23 at 15:25 +0800, Huang Shijie wrote:
> > Hi all:
> >
> >     The mtd_torturetest.c uses the 55/AA patterns to torture the nand
> block.
> > Are the 55/AA patterns more tougher then the random data?
> 
> Probably not, please, improve the test.
> 

(0x55/0xAA/0x55) pattern ensures that _all_ bits in the byte transition from 0-> 1, and 1->0,
Whereas, a random pattern may miss a bit-cell or miss transition sequence, of an bad bit-cell.
Exercising each bit both ways is important so as to differentiate a bad bit-cell (permanent error) from read-disturb errors (temporary error).

For read-disturb: http://download.micron.com/pdf/presentations/events/flash_mem_summit_jcooke_inconvenient_truths_nand.pdf


with regards, pekon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question about mtd_torturetest.c
  2013-02-04  5:19                     ` Gupta, Pekon
@ 2013-02-04  6:58                       ` Artem Bityutskiy
  2013-02-04  7:32                         ` Huang Shijie
  0 siblings, 1 reply; 13+ messages in thread
From: Artem Bityutskiy @ 2013-02-04  6:58 UTC (permalink / raw)
  To: Gupta, Pekon
  Cc: Huang Shijie, Lin Wei-B34918, linux-mtd@lists.infradead.org,
	David Woodhouse, Matthieu CASTET

[-- Attachment #1: Type: text/plain, Size: 985 bytes --]

On Mon, 2013-02-04 at 05:19 +0000, Gupta, Pekon wrote:
> > On Wed, 2013-01-23 at 15:25 +0800, Huang Shijie wrote:
> > > Hi all:
> > >
> > >     The mtd_torturetest.c uses the 55/AA patterns to torture the nand
> > block.
> > > Are the 55/AA patterns more tougher then the random data?
> > 
> > Probably not, please, improve the test.
> > 
> 
> (0x55/0xAA/0x55) pattern ensures that _all_ bits in the byte transition from 0-> 1, and 1->0,
> Whereas, a random pattern may miss a bit-cell or miss transition sequence, of an bad bit-cell.
> Exercising each bit both ways is important so as to differentiate a bad bit-cell (permanent error) from read-disturb errors (temporary error).
> 
> For read-disturb: http://download.micron.com/pdf/presentations/events/flash_mem_summit_jcooke_inconvenient_truths_nand.pdf

Sure, I did not mean remove those, I meant that random data test can
also be added and that would be an improvement.

-- 
Best Regards,
Artem Bityutskiy

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: question about mtd_torturetest.c
  2013-02-04  6:58                       ` Artem Bityutskiy
@ 2013-02-04  7:32                         ` Huang Shijie
  0 siblings, 0 replies; 13+ messages in thread
From: Huang Shijie @ 2013-02-04  7:32 UTC (permalink / raw)
  To: dedekind1
  Cc: David Woodhouse, Lin Wei-B34918, linux-mtd@lists.infradead.org,
	Gupta, Pekon, Matthieu CASTET

于 2013年02月04日 14:58, Artem Bityutskiy 写道:
> On Mon, 2013-02-04 at 05:19 +0000, Gupta, Pekon wrote:
>>> On Wed, 2013-01-23 at 15:25 +0800, Huang Shijie wrote:
>>>> Hi all:
>>>>
>>>>      The mtd_torturetest.c uses the 55/AA patterns to torture the nand
>>> block.
>>>> Are the 55/AA patterns more tougher then the random data?
>>> Probably not, please, improve the test.
>>>
>> (0x55/0xAA/0x55) pattern ensures that _all_ bits in the byte transition from 0->  1, and 1->0,
>> Whereas, a random pattern may miss a bit-cell or miss transition sequence, of an bad bit-cell.
>> Exercising each bit both ways is important so as to differentiate a bad bit-cell (permanent error) from read-disturb errors (temporary error).
>>
>> For read-disturb: http://download.micron.com/pdf/presentations/events/flash_mem_summit_jcooke_inconvenient_truths_nand.pdf
> Sure, I did not mean remove those, I meant that random data test can
> also be added and that would be an improvement.
>
I think the random data test is much like the simulation of the nand 
real use, such as the nand is used in
the filesystem.

thank
Huang Shijie

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-02-04  7:32 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-18  8:05 question: Why the nand_wait() wait for 20ms for nand program Huang Shijie
2013-01-18 12:26 ` Matthieu CASTET
2013-01-21  3:34   ` Huang Shijie
2013-01-21  8:57     ` Matthieu CASTET
     [not found]       ` <50FD0554.8030108@freescale.com>
2013-01-21  9:15         ` Matthieu CASTET
2013-01-21  9:25           ` Huang Shijie
2013-01-21  9:32             ` Matthieu CASTET
2013-01-21  9:35               ` Huang Shijie
     [not found]                 ` <50FF9068.1030709@freescale.com>
2013-02-01 16:58                   ` question about mtd_torturetest.c Artem Bityutskiy
2013-02-04  5:19                     ` Gupta, Pekon
2013-02-04  6:58                       ` Artem Bityutskiy
2013-02-04  7:32                         ` Huang Shijie
2013-01-22  2:46               ` question: Why the nand_wait() wait for 20ms for nand program Huang Shijie

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.