All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Mundt <lethal@linux-sh.org>
To: Magnus Damm <magnus.damm@gmail.com>, Arnd Bergmann <arnd@arndb.de>
Cc: linux-mm@kvack.org, jayakumar.lkml@gmail.com, akpm@linux-foundation.org
Subject: Re: [PATCH][RFC] mm: uncached vma support with writenotify
Date: Mon, 15 Jun 2009 12:32:40 +0900	[thread overview]
Message-ID: <20090615033240.GC31902@linux-sh.org> (raw)
In-Reply-To: <20090614132845.17543.11882.sendpatchset@rx1.opensource.se>

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?

---

 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>

  reply	other threads:[~2009-06-15  3:32 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 [this message]
2009-06-22 22:15   ` Andrew Morton
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=20090615033240.GC31902@linux-sh.org \
    --to=lethal@linux-sh.org \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=jayakumar.lkml@gmail.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.