Kernel oops after sync command in jffs2

Frederic Giasson fgiasson at
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.

Frédéric Giasson

|-----Original Message-----
|From: David Woodhouse [mailto:dwmw2 at]
|Sent: Tuesday, May 21, 2002 5:08 PM
|To: Frederic Giasson
|Cc: 'linux-mtd at'
|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 
|though. What 
|does the 'called while erasing!' message mean?

More information about the linux-mtd mailing list