From: David Woodhouse <dwmw2@infradead.org>
To: Jared Hulbert <jaredeh@gmail.com>
Cc: carsteno@de.ibm.com, dhowells <dhowells@redhat.com>,
"Jörn Engel" <joern@logfs.org>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>
Subject: Re: [PATCH][MTD] mtdpart.c: allow other drivers to get physical address of partition
Date: Fri, 03 Aug 2007 14:09:03 +0100 [thread overview]
Message-ID: <1186146543.2931.82.camel@pmac.infradead.org> (raw)
In-Reply-To: <6934efce0708021455h29c9151aw7aab2245df0062e5@mail.gmail.com>
On Thu, 2007-08-02 at 14:55 -0700, Jared Hulbert wrote:
> > 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
No need to reestablish them -- they'll fault when they need to, which
means less work next time you erase. And it'll be a minor page fault,
which is quite cheap -- it only needs to set up the pte and return.
> 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
This could lead to all your data pages ending up in RAM, which kind of
defeats the object of XIP.
> -or-
> (a) suspend the erase
> (b) reenable the pte
> (c) wait a short time
> (d) disable pte again
> (e) resume the erase
Alternatively, just wait for the chip to become available. Or increment
a count of 'waiters' and only interrupt the erase when there are a
certain number of people waiting.
Perhaps we want to set it up so that _if_ there is a process which can
continue, it'll do so. Only when there's nothing runnable in userspace
do we suspend an erase? In that case, perhaps we'd want some kind of
hook in the idle loop?
--
dwmw2
next prev parent reply other threads:[~2007-08-03 13:09 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-27 0:04 [PATCH][MTD] mtdpart.c: allow other drivers to get physical address of partition Jared Hulbert
2007-07-27 13:48 ` Jörn Engel
2007-07-27 17:05 ` Jared Hulbert
2007-07-27 17:44 ` Jörn Engel
2007-07-27 20:53 ` Jared Hulbert
2007-07-28 11:43 ` Jörn Engel
2007-07-28 21:08 ` Jared Hulbert
2007-07-31 11:55 ` David Woodhouse
2007-07-31 19:55 ` Jared Hulbert
2007-08-01 11:55 ` Jörn Engel
2007-08-03 1:56 ` Jared Hulbert
2007-08-03 3:01 ` Jörn Engel
2007-08-03 5:23 ` Jared Hulbert
2007-08-03 9:21 ` Jörn Engel
2007-08-03 6:42 ` Jared Hulbert
2007-08-03 12:47 ` Jörn Engel
2007-08-03 22:29 ` Jared Hulbert
2007-08-01 12:18 ` Jörn Engel
2007-08-01 12:59 ` Carsten Otte
2007-08-01 20:37 ` Jared Hulbert
2007-08-01 23:31 ` Jörn Engel
2007-08-02 7:53 ` Carsten Otte
2007-08-02 21:55 ` Jared Hulbert
2007-08-03 7:59 ` Carsten Otte
2007-08-03 9:17 ` Jörn Engel
2007-08-03 11:03 ` Carsten Otte
2007-08-03 11:31 ` Jörn Engel
2007-08-03 12:21 ` Carsten Otte
2007-08-03 12:58 ` Jörn Engel
2007-08-03 13:09 ` David Woodhouse [this message]
2007-08-03 13:18 ` Jörn Engel
2007-08-03 19:45 ` Jared Hulbert
2007-08-03 23:02 ` Jörn Engel
2007-08-04 12:33 ` David Woodhouse
2007-08-04 17:47 ` Jared Hulbert
2007-08-06 6:30 ` Carsten Otte
2007-08-03 18:39 ` Jared Hulbert
2007-08-06 6:23 ` Carsten Otte
2007-08-01 18:03 ` Jared Hulbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1186146543.2931.82.camel@pmac.infradead.org \
--to=dwmw2@infradead.org \
--cc=carsteno@de.ibm.com \
--cc=dhowells@redhat.com \
--cc=jaredeh@gmail.com \
--cc=joern@logfs.org \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox