Re-entrancy of flash erase/write
Robert Kaiser
rob at sysgo.de
Mon Feb 25 12:30:34 EST 2002
On Mon, 25 Feb 2002, David Woodhouse wrote:
>
> rob at sysgo.de said:
> > [David, OK to apply this ?]
>
> I'd rather it was done in the map driver's set_vpp function itself.
> Sometimes you have more than one map driver, because you have different
> regions of flash - but they all share the same Vpp control. In which case
> you need to do the counting in the map driver anyway.
Agreed. I'll modify the dilnetpc driver then.
>
>
> > I looked into this a little further: it seems that the erase
> > functions in cfi_cmdset_000?.c and amd_flash.c temporarily release the
> > chip->mutex while VPP is on. Won't that allow other threads to get
> > hold of the mutex and fiddle with VPP, possibly turning it off ?
>
> I see the possibility, but surely that would only _actually_ happen if we
> started to support writes during erase suspend? Otherwise, the only thing
> that should happen during an erase is a _read_, which doesn't set and clear
> vpp.
What mechanism is there to avoid writes during erase suspend ? I have
seen the problem in situations where the JFFS2 GC thread was erasing
while another process (tar in my case) was writing to a *different
partition* in the same chip. (Maybe that is a hint ?) Introducing the
set_vpp counter reliably solved this.
Rob
----------------------------------------------------------------
Robert Kaiser email: rkaiser at sysgo.de
SYSGO RTS GmbH
Am Pfaffenstein 14
D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10
More information about the linux-mtd
mailing list