Kernel oops after sync command in jffs2
fgiasson at mediatrix.com
Thu May 23 11:36:53 EDT 2002
I am currently testing the modifications I suggested in do_write_oneword and
do_erase_oneblock regarding polling. If you want my sources to test it
and/or improve it yourself, just let me known. Otherwise, when I will have
tested it throughfully, I will commit it into the CVS tree.
|From: Ales Makarov [mailto:ales.makarov at wolfhill.cz]
|Sent: Thursday, May 23, 2002 11:34 AM
|To: Frederic Giasson; Linux MTD mailing list
|Subject: Re: Kernel oops after sync command in jffs2
|Frederic Giasson wrote:
|> However, I had a look at do_erase_oneword() function. I
|seen that to verify
|I guess you mean do_write_oneword() function.
|> if write operation has completed, we simply read back the
|> until it matches or until we read back 10000 times or more.
|This works most
|> of the time, but in my opinion it is not the best way to do that.
|You are right. This could be my problem...
|> What I think we should do to determine if write operation
|has completed OK
|> is to poll DQ6 and DQ5, as we do for erase operation. However, since
|> program operation takes *much* less time than erase
|operation ( 150 us max
|> accoring to my AMD spec ), we should not schedule. We
|should simply poll
|> 150 times at most, inserting a "udelay(1);" in each loop.
|If DQ5 rises, we
|> must threat it the same way we do in do_erase_oneblock().
|I agree. I would also prefer the DQ6 and DQ5 testing.
|> Also, speaking of do_erase_oneblock(), it is said in my AMD
|spec that when
|> DQ5 rises, even if that happen while DQ6 still toggle, it is
|> read DQ0-DQ7 twice once again and compare both values to see
|if it still
|> toggles. If it does not toggle, it means that erase
|operation has completed
|> correctly. You can verify that my yourself by having a look
|at figure 6, p.
|> 29 in spec sheet "Am29DL322D/323D/324D, revD, May 8th, 2001".
|> Frederic Giasson
|I have read it also in the datasheet of the Fujitsu MBM29LV320 (p.32).
|These additional reads should be done, because the toggle bit may have
|stopped toggling just as DQ5 went high.
More information about the linux-mtd