The patch titled mm: Make generic weak get_user_pages_fast and EXPORT_GPL it has been added to the -mm tree. Its filename is mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: mm: Make generic weak get_user_pages_fast and EXPORT_GPL it From: Rusty Russell <rusty@xxxxxxxxxxxxxxx> 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@xxxxxxx> Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- 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 -puN arch/powerpc/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it arch/powerpc/Kconfig --- a/arch/powerpc/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/arch/powerpc/Kconfig @@ -42,9 +42,6 @@ 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 -puN arch/x86/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it arch/x86/Kconfig --- a/arch/x86/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/arch/x86/Kconfig @@ -23,7 +23,6 @@ config X86 select HAVE_OPROFILE select HAVE_ARCH_TRACEHOOK select HAVE_IOREMAP_PROT - select HAVE_GET_USER_PAGES_FAST select HAVE_KPROBES select ARCH_WANT_OPTIONAL_GPIOLIB select HAVE_KRETPROBES diff -puN arch/x86/mm/Makefile~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it arch/x86/mm/Makefile --- a/arch/x86/mm/Makefile~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/arch/x86/mm/Makefile @@ -1,7 +1,6 @@ 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 -puN include/linux/mm.h~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it include/linux/mm.h --- a/include/linux/mm.h~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/include/linux/mm.h @@ -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). @@ -848,25 +847,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 -puN mm/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it mm/Kconfig --- a/mm/Kconfig~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/mm/Kconfig @@ -77,9 +77,6 @@ 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 # to represent different areas of memory. This variable allows diff -puN mm/util.c~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it mm/util.c --- a/mm/util.c~mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it +++ a/mm/util.c @@ -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); _ Patches currently in -mm which might be from rusty@xxxxxxxxxxxxxxx are origin.patch linux-next.patch modules-extend-initcall_debug-functionality-to-the-module-loader.patch mm-make-generic-weak-get_user_pages_fast-and-export_gpl-it.patch kernel-call-constructors.patch kernel-introduce-gcc_version_lower-macro.patch seq_file-add-function-to-write-binary-data.patch gcov-add-gcov-profiling-infrastructure.patch gcov-add-gcov-profiling-infrastructure-revert-link-changes.patch gcov-architecture-specific-compile-flag-adjustments.patch gcov-architecture-specific-compile-flag-adjustments-powerpc-moved-stuff.patch reiser4.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html