All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: benh@kernel.crashing.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Avi Kivity <avi@qumranet.com>, Adrian Bunk <bunk@kernel.org>,
	lguest <lguest@ozlabs.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] Export get_user_pages_fast
Date: Tue, 5 Aug 2008 15:47:34 +1000	[thread overview]
Message-ID: <200808051547.34743.rusty@rustcorp.com.au> (raw)
In-Reply-To: <200807311856.39837.nickpiggin@yahoo.com.au>

On Thursday 31 July 2008 18:56:39 Nick Piggin wrote:
> I see. Here we are, then.

I can't see this in linux-next?  I put it in mm/util.c instead of
mm/memory.c: your version will barf on CONFIG_MMU=n AFAICT.

Since I'm the one who wants the export, I guess I'll fwd:

mm: Make generic weak get_user_pages_fast and EXPORT_GPL it

Out of line get_user_pages_fast fallback implementation, make it a weak
symbol, get rid of CONFIG_HAVE_GET_USER_PAGES_FAST.

Export the symbol to modules so lguest can use it.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 arch/powerpc/Kconfig |    3 ---
 arch/x86/Kconfig     |    1 -
 arch/x86/mm/Makefile |    3 +--
 include/linux/mm.h   |   20 --------------------
 mm/Kconfig           |    3 ---
 mm/util.c            |   15 +++++++++++++++
 6 files changed, 16 insertions(+), 29 deletions(-)

diff -r 607fc39e88f5 arch/powerpc/Kconfig
--- a/arch/powerpc/Kconfig	Tue Aug 05 15:14:02 2008 +1000
+++ b/arch/powerpc/Kconfig	Tue Aug 05 15:46:04 2008 +1000
@@ -41,9 +41,6 @@ config GENERIC_HARDIRQS
 config GENERIC_HARDIRQS
 	bool
 	default y
-
-config HAVE_GET_USER_PAGES_FAST
-	def_bool PPC64
 
 config HAVE_SETUP_PER_CPU_AREA
 	def_bool PPC64
diff -r 607fc39e88f5 arch/x86/Kconfig
--- a/arch/x86/Kconfig	Tue Aug 05 15:14:02 2008 +1000
+++ b/arch/x86/Kconfig	Tue Aug 05 15:46:04 2008 +1000
@@ -22,7 +22,6 @@ config X86
 	select HAVE_IDE
 	select HAVE_OPROFILE
 	select HAVE_IOREMAP_PROT
-	select HAVE_GET_USER_PAGES_FAST
 	select HAVE_KPROBES
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select HAVE_KRETPROBES
diff -r 607fc39e88f5 arch/x86/mm/Makefile
--- a/arch/x86/mm/Makefile	Tue Aug 05 15:14:02 2008 +1000
+++ b/arch/x86/mm/Makefile	Tue Aug 05 15:46:04 2008 +1000
@@ -1,7 +1,6 @@ obj-y	:=  init_$(BITS).o fault.o ioremap
 obj-y	:=  init_$(BITS).o fault.o ioremap.o extable.o pageattr.o mmap.o \
-	    pat.o pgtable.o
+	    pat.o pgtable.o gup.o
 
-obj-$(CONFIG_HAVE_GET_USER_PAGES_FAST) += gup.o
 obj-$(CONFIG_X86_32)		+= pgtable_32.o
 
 obj-$(CONFIG_HUGETLB_PAGE)	+= hugetlbpage.o
diff -r 607fc39e88f5 include/linux/mm.h
--- a/include/linux/mm.h	Tue Aug 05 15:14:02 2008 +1000
+++ b/include/linux/mm.h	Tue Aug 05 15:46:04 2008 +1000
@@ -834,7 +834,6 @@ extern int mprotect_fixup(struct vm_area
 			  struct vm_area_struct **pprev, unsigned long start,
 			  unsigned long end, unsigned long newflags);
 
-#ifdef CONFIG_HAVE_GET_USER_PAGES_FAST
 /*
  * get_user_pages_fast provides equivalent functionality to get_user_pages,
  * operating on current and current->mm (force=0 and doesn't return any vmas).
@@ -847,25 +846,6 @@ extern int mprotect_fixup(struct vm_area
  */
 int get_user_pages_fast(unsigned long start, int nr_pages, int write,
 			struct page **pages);
-
-#else
-/*
- * Should probably be moved to asm-generic, and architectures can include it if
- * they don't implement their own get_user_pages_fast.
- */
-#define get_user_pages_fast(start, nr_pages, write, pages)	\
-({								\
-	struct mm_struct *mm = current->mm;			\
-	int ret;						\
-								\
-	down_read(&mm->mmap_sem);				\
-	ret = get_user_pages(current, mm, start, nr_pages,	\
-					write, 0, pages, NULL);	\
-	up_read(&mm->mmap_sem);					\
-								\
-	ret;							\
-})
-#endif
 
 /*
  * A callback you can register to apply pressure to ageable caches.
diff -r 607fc39e88f5 mm/Kconfig
--- a/mm/Kconfig	Tue Aug 05 15:14:02 2008 +1000
+++ b/mm/Kconfig	Tue Aug 05 15:46:04 2008 +1000
@@ -76,9 +76,6 @@ config FLAT_NODE_MEM_MAP
 config FLAT_NODE_MEM_MAP
 	def_bool y
 	depends on !SPARSEMEM
-
-config HAVE_GET_USER_PAGES_FAST
-	bool
 
 #
 # Both the NUMA code and DISCONTIGMEM use arrays of pg_data_t's
diff -r 607fc39e88f5 mm/util.c
--- a/mm/util.c	Tue Aug 05 15:14:02 2008 +1000
+++ b/mm/util.c	Tue Aug 05 15:46:04 2008 +1000
@@ -171,3 +171,18 @@ void arch_pick_mmap_layout(struct mm_str
 	mm->unmap_area = arch_unmap_area;
 }
 #endif
+
+int __attribute__((weak)) get_user_pages_fast(unsigned long start,
+				int nr_pages, int write, struct page **pages)
+{
+	struct mm_struct *mm = current->mm;
+	int ret;
+
+	down_read(&mm->mmap_sem);
+	ret = get_user_pages(current, mm, start, nr_pages,
+					write, 0, pages, NULL);
+	up_read(&mm->mmap_sem);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(get_user_pages_fast);

      reply	other threads:[~2008-08-05  5:47 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-30  4:38 [PATCH 1/2] Export get_user_pages_fast Rusty Russell
2008-07-30  4:39 ` [PATCH 2/2] lguest: use get_user_pages_fast() instead of get_user_pages() Rusty Russell
2008-07-30  5:30   ` Nick Piggin
2008-07-30  6:53     ` Rusty Russell
2008-07-30  5:23 ` [PATCH 1/2] Export get_user_pages_fast Nick Piggin
2008-07-30 10:35 ` Andrew Morton
2008-07-30 15:47   ` Adrian Bunk
2008-07-30 17:03     ` Andrew Morton
2008-07-30 17:09       ` Adrian Bunk
2008-07-30 17:14         ` Andrew Morton
2008-07-30 17:18           ` Adrian Bunk
2008-07-30 17:28             ` Andrew Morton
2008-07-30 17:39               ` Adrian Bunk
2008-07-30 17:50                 ` Andrew Morton
2008-07-30 17:23           ` Avi Kivity
2008-07-30 17:29             ` Andrew Morton
2008-07-31  6:43               ` Avi Kivity
2008-07-31  7:02                 ` Andrew Morton
2008-07-31  8:10                   ` Nick Piggin
2008-07-31  8:21                     ` Andrew Morton
2008-07-31  8:32                       ` Benjamin Herrenschmidt
2008-07-31  8:48                       ` Nick Piggin
2008-07-31  8:52                         ` Benjamin Herrenschmidt
2008-07-31  8:56                           ` Nick Piggin
2008-08-05  5:47                             ` Rusty Russell [this message]

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=200808051547.34743.rusty@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=akpm@linux-foundation.org \
    --cc=avi@qumranet.com \
    --cc=benh@kernel.crashing.org \
    --cc=bunk@kernel.org \
    --cc=lguest@ozlabs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    /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.