From: Andrew Morton <akpm@linux-foundation.org>
To: Paul Mundt <lethal@linux-sh.org>
Cc: magnus.damm@gmail.com, arnd@arndb.de, linux-mm@kvack.org,
jayakumar.lkml@gmail.com
Subject: Re: [PATCH][RFC] mm: uncached vma support with writenotify
Date: Mon, 22 Jun 2009 15:15:37 -0700 [thread overview]
Message-ID: <20090622151537.2f8009f7.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090615033240.GC31902@linux-sh.org>
On Mon, 15 Jun 2009 12:32:40 +0900
Paul Mundt <lethal@linux-sh.org> wrote:
> On Sun, Jun 14, 2009 at 10:28:45PM +0900, Magnus Damm wrote:
> > --- 0001/mm/mmap.c
> > +++ work/mm/mmap.c 2009-06-11 21:43:16.000000000 +0900
> > @@ -1209,8 +1209,20 @@ munmap_back:
> > pgoff = vma->vm_pgoff;
> > vm_flags = vma->vm_flags;
> >
> > - if (vma_wants_writenotify(vma))
> > + if (vma_wants_writenotify(vma)) {
> > + pgprot_t pprot = vma->vm_page_prot;
> > +
> > + /* Can vma->vm_page_prot have changed??
> > + *
> > + * Answer: Yes, drivers may have changed it in their
> > + * f_op->mmap method.
> > + *
> > + * Ensures that vmas marked as uncached stay that way.
> > + */
> > vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED);
> > + if (pgprot_val(pprot) == pgprot_val(pgprot_noncached(pprot)))
> > + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
> > + }
> >
> > vma_link(mm, vma, prev, rb_link, rb_parent);
> > file = vma->vm_file;
> >
> I guess the only real issue here is that we presently have no generic
> interface in the kernel for setting a VMA uncached. pgprot_noncached()
> is the closest approximation we have, but there are still architectures
> that do not implement it.
>
> Given that this comes up at least once a month, perhaps it makes sense to
> see which platforms are still outstanding. At least cris, h8300,
> m68knommu, s390, and xtensa all presently lack a definition for it. The
> nommu cases are easily handled, but the rest still require some attention
> from their architecture maintainers before we can really start treating
> this as a generic interface.
>
> Until then, you will have to do what every other user of
> pgprot_noncached() code does in generic code:
>
> #ifdef pgprot_noncached
> vma->vm_page_prot = pgprot_noncached(...);
> #endif
>
> OTOH, I guess we could just add something like:
>
> #define pgprot_noncached(x) (x)
>
> which works fine for the nommu case, and which functionally is no
> different from what happens right now anyways for the users that don't
> wire it up sanely.
>
> Arnd, what do you think about throwing this at asm-generic?
>
I think Arnd fell asleep ;)
>
> include/asm-generic/pgtable.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
> index e410f60..e2bd73e 100644
> --- a/include/asm-generic/pgtable.h
> +++ b/include/asm-generic/pgtable.h
> @@ -129,6 +129,10 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres
> #define move_pte(pte, prot, old_addr, new_addr) (pte)
> #endif
>
> +#ifndef pgprot_noncached
> +#define pgprot_noncached(prot) (prot)
> +#endif
> +
> #ifndef pgprot_writecombine
> #define pgprot_writecombine pgprot_noncached
> #endif
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-06-22 22:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-14 13:28 [PATCH][RFC] mm: uncached vma support with writenotify Magnus Damm
2009-06-15 3:32 ` Paul Mundt
2009-06-22 22:15 ` Andrew Morton [this message]
2009-06-23 12:40 ` Arnd Bergmann
2009-06-23 12:41 ` [PATCH] asm-generic: add dummy pgprot_noncached() Arnd Bergmann
2009-06-23 12:55 ` Paul Mundt
2009-06-23 13:00 ` xtensa: add pgprot_noncached Arnd Bergmann
2009-06-23 13:07 ` m32r: define pgprot_noncached Arnd Bergmann
2009-06-23 12:55 ` [PATCH] cris: add pgprot_noncached Arnd Bergmann
2009-06-23 19:20 ` Jesper Nilsson
2009-06-23 20:07 ` Arnd Bergmann
2009-06-23 20:23 ` Jesper Nilsson
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=20090622151537.2f8009f7.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=jayakumar.lkml@gmail.com \
--cc=lethal@linux-sh.org \
--cc=linux-mm@kvack.org \
--cc=magnus.damm@gmail.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;
as well as URLs for NNTP newsgroup(s).