public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Jared Hulbert <jaredeh@gmail.com>
Cc: carsteno@de.ibm.com, Andrew Morton <akpm@linux-foundation.org>,
	richard.griffiths@windriver.com,
	Richard Griffiths <res07ml0@verizon.net>,
	Linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2.6.21] cramfs: add cramfs Linear XIP
Date: Sat, 02 Jun 2007 18:42:23 +1000	[thread overview]
Message-ID: <46612D6F.6000002@yahoo.com.au> (raw)
In-Reply-To: <6934efce0706011748p46cf7995vdca0b9cc3f0b06a3@mail.gmail.com>

Jared Hulbert wrote:
>> > The current xip stack relies on having struct page behind the memory
>> > segment. This causes few impact on memory management, but occupies some
>> > more memory. The cramfs patch chose to modify copy on write in order to
>> > deal with vmas that don't have struct page behind.
>> > So far, Hugh and Linus have shown strong opposition against copy on
>> > write with no struct page behind. If this implementation is acceptable
>> > to the them, it seems preferable to me over wasting memory. The xip
>> > stack should be modified to use this vma flag in that case.
>>
>> I would rather not :P
>>
>> We can copy on write without a struct page behind the source today, no?
> 
> 
> The existing COW techniques fail on some corner cases.  I'm not up to
> speed on the vm code.  I'll try to look into this a little more but it
> might be useful if I knew what questions I need to answer so you vm
> experts can understand the problem.

Previously I believe we couldn't do COW without a struct page for the
source memory, nor could we COW with a source that is not readable
from the kernel virtual mapping.

Now we can do both. cow_user_page in mm/memory.c does a copy_from_user
if there is no source page, so it uses the user mappings and does not
require a struct page.

The question is, why is that not enough (I haven't looked at these
patches enough to work out if there is anything more they provide).

> 
> Let me give one example.  If you try to debug an XIP application
> without this patch, bad things happen.  XIP in this sense is synomous
> with executing directly out of Flash and you can't just change the
> physical memory to redirect it to the debugger so easily in Flash.
> Now I don't know exactly why yet some, but not all applications,
> trigger this added vm hack.  I'm not sure exactly why it would get
> triggered under normal circumstances.  Why would a read-only map get
> written to?
> 
>> What is insufficient for the XIP code with the current COW?
> 
> 
> So I think the problem may have something to do with the nature of the
> memory in question.   We are using Flash that is ioremap()'ed to a
> usable virtual address.  And yet we go on to try to use it as if it
> were plain old system memory, like any RAM page.  We need it to be
> presented as any other memory page only physically read-only.
> ioremap() seems to be a hacky way of accomplishing that, but I can't
> think of better way.  In ARM we even had to invent ioremap_cached() to
> improve performance.  Thoughts?
> 


-- 
SUSE Labs, Novell Inc.

  reply	other threads:[~2007-06-02  8:42 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-22 22:09 [PATCH 2.6.21] cramfs: add cramfs Linear XIP Richard Griffiths
2007-05-22 22:49 ` Andrew Morton
2007-05-22 22:58   ` Richard Griffiths (wrs)
2007-05-23  7:51   ` Carsten Otte
2007-05-23 15:25     ` Richard Griffiths (wrs)
2007-05-24  6:46       ` Carsten Otte
2007-05-23 17:21     ` Jared Hulbert
2007-05-24  6:57       ` Carsten Otte
2007-05-29  5:10     ` Nick Piggin
2007-06-02  0:48       ` Jared Hulbert
2007-06-02  8:42         ` Nick Piggin [this message]
2007-06-04 13:32           ` Carsten Otte
2007-06-06 11:13             ` Jared Hulbert
2007-06-06 11:33               ` Christoph Hellwig
2007-06-06 15:17                 ` Richard Griffiths
2007-06-06 15:50                   ` Christoph Hellwig
2007-06-06 16:09                     ` Jared Hulbert
2007-06-06 16:07                 ` Jared Hulbert
2007-06-06 16:16                   ` Christoph Hellwig
2007-06-06 18:26                     ` Jared Hulbert
2007-06-07 19:37                       ` Christoph Hellwig
2007-06-07 19:40                         ` Christoph Hellwig
2007-06-07 20:27                           ` Jared Hulbert
2007-06-08  7:39                           ` Carsten Otte
2007-06-07 21:11                         ` Jared Hulbert
2007-06-07 21:15                           ` Christoph Hellwig
2007-06-07 22:59                             ` Jared Hulbert
2007-06-08 13:19                               ` Jörn Engel
2007-06-08 13:10                             ` Jörn Engel
2007-06-06 16:15                 ` Carsten Otte
2007-06-06 16:23                   ` Christoph Hellwig
2007-06-06 18:40                     ` Jared Hulbert
2007-06-06 22:59                       ` Matt Mackall
2007-06-07 17:07                     ` Carsten Otte
2007-06-07 19:38                       ` Christoph Hellwig
2007-06-07 20:34                         ` Jared Hulbert
2007-06-08  7:28                           ` Christoph Hellwig
2007-06-08 16:02                             ` Jared Hulbert
2007-06-08  7:17                         ` Carsten Otte
2007-06-08  7:26                           ` Christoph Hellwig
2007-06-08  7:50                             ` Carsten Otte
2007-06-08  7:57                               ` Christoph Hellwig
2007-06-08  7:59                                 ` Carsten Otte
2007-06-08  8:04                                   ` Christoph Hellwig
2007-06-08 16:05                                     ` Jared Hulbert
2007-06-08 16:09                                       ` Christoph Hellwig
2007-06-08 16:11                                         ` Jared Hulbert
2007-06-08 16:15                                           ` Christoph Hellwig
2007-06-08 17:51                                             ` Jörn Engel
2007-06-08 19:04                                               ` Carsten Otte
2007-06-08 19:06                                                 ` Carsten Otte
2007-06-08 19:36                                                 ` Jörn Engel
2007-06-09  7:55                                                   ` Carsten Otte
2007-06-09 10:37                                                     ` Jörn Engel
2007-06-08 23:02                                                 ` Jared Hulbert
2007-06-07 21:19                       ` Jared Hulbert
2007-06-06 12:05               ` Carsten Otte
2007-06-06 19:01                 ` Jared Hulbert
2007-06-07  1:00                   ` Justin Treon
2007-06-13  0:11             ` Jared Hulbert
2007-06-14 13:57               ` Carsten Otte
2007-06-14 16:53                 ` Jared Hulbert
2007-06-15  9:22                   ` Carsten Otte
2007-06-15 11:49                     ` Heiko Carstens
2007-06-15 17:30                       ` Jared Hulbert
2007-06-18  7:38                         ` Carsten Otte
2007-06-15 13:53       ` Carsten Otte
2007-06-15 21:46         ` Jared Hulbert
2007-05-23  8:21 ` Alistair John Strachan
2007-05-24 20:22 ` Jared Hulbert
2007-05-24 20:52   ` Richard Griffiths
2007-05-24 21:21     ` Jared Hulbert
     [not found] <337240.79058.qm@web59309.mail.re1.yahoo.com>
2007-06-09  8:09 ` Carsten Otte

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=46612D6F.6000002@yahoo.com.au \
    --to=nickpiggin@yahoo.com.au \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=carsteno@de.ibm.com \
    --cc=jaredeh@gmail.com \
    --cc=res07ml0@verizon.net \
    --cc=richard.griffiths@windriver.com \
    /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