[PATCH][MTD] mtdpart.c: allow other drivers to get physical address of partition

Jared Hulbert jaredeh at gmail.com
Thu Aug 2 17:55:32 EDT 2007


> That does'nt work on smp machines, does it?

Probably not.  That code is machine specific, and only implemented for
a couple of ARM targets.

> Sounds like a hack to me.

:)  Yes but it works where it needs to.  It's done a lot in the cellular world.

> How do you know a user app that has a valid pte to your flash media
> accesses it? Userspace may do so at any time it wants, and as far as I
> understand Joerns and Davids explanations on flash it will just see
> invalid data rather than raising a page fault.

Maybe I wasn't so clear.  Assuming the MTD is going to do an erase you would:

(a) zap all page affected by block erase
(b) identify all pte's mapped to the affected region
(c) modify these pte's so they now trigger a fault
(d) wait for completion of erase
(c) reestablish valid pte mappings


If you get a fault it gets routed to the filesystem .fault or
something like that.  The .fault routine can:
(a) suspend the erase
(b) copy the page to RAM
(c) update the pte to point to RAM
(d) resume the erase
-or-
(a) suspend the erase
(b) reenable the pte
(c) wait a short time
(d) disable pte again
(e) resume the erase



More information about the linux-mtd mailing list