Kernel oops after sync command in jffs2
fgiasson at mediatrix.com
Tue May 21 22:03:34 EDT 2002
Your fix in mtdconcat.c solves the OOPS. However, erase is still failing.
The 'called while erasing!' message means that I put a trace in the map
driver write16() function to tell me if write16()is called when a global
variable is set. This global variable indicates that do_erase_oneword has
sent the erase sector command and is currently polling for the erase
operation to complete.
I tried removing DQ5 check while do_erase_oneblock() is polling the flash to
know when the erase is completed. DQ5 rises if one of the 2 following
conditions occurs: the flash device received a write command for a bank that
is still erasing or a timeout internal to the flash device itself has
expired while the flash was still erasing.
Theorically, the software timeout in do_erase_oneblock (timeo) should expire
before the flash's internal timeout, which eliminates the second condition.
If the first condition *really* occurs, then the function which issued a
write command to the flash should fail, and I should be able to track it
down this way. What I suspect is that DQ5 is somehow not *really* raising
and the polling algorithm in do_erase_oneblock() reports an error anyways.
If my test succeeds this time with DQ5 polling disabled, I will inform you.
Otherwise, I will keep on searching the cause of DQ5 raising.
|From: David Woodhouse [mailto:dwmw2 at infradead.org]
|Sent: Tuesday, May 21, 2002 5:08 PM
|To: Frederic Giasson
|Cc: 'linux-mtd at lists.infradead.org'
|Subject: Re: Kernel oops after sync command in jffs2
|> mtxmap_write16() called when erasing!
|> waiting for erase to complete timed out.
|> Erase at 0x00030000 failed immediately: errno -5
|> Oops: kernel access of bad area, sig: 11
|> C00BCEFC: concat_erase_callback()
|> C00BD26C: concat_erase()
|Thanks. mtdconcat.c shouldn't have been calling the erase completion
|callback _and_ returning failure. Can you update it and try again?
|T'would still be interesting to know _why_ the erase failed
|does the 'called while erasing!' message mean?
More information about the linux-mtd