From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-mm@kvack.org, mel@skynet.ie, clameter@engr.sgi.com,
akpm@linux-foundation.org
Subject: [RFC} memory unplug patchset prep [2/16] gathering alloc_zeroed_user_highpage()
Date: Tue, 6 Mar 2007 13:43:34 +0900 [thread overview]
Message-ID: <20070306134334.e01e41bf.kamezawa.hiroyu@jp.fujitsu.com> (raw)
In-Reply-To: <20070306133223.5d610daf.kamezawa.hiroyu@jp.fujitsu.com>
Definitions of alloc_zeroed_user_highpage() is scattered.
This patch gathers them to linux/highmem.h
To do so, added CONFIG_ARCH_HAS_PREZERO_USERPAGE and
CONFIG_ARCH_HAS_FLUSH_USERNEWZEROPAGE.
If you know better config name, please tell me.
Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
---
arch/alpha/Kconfig | 3 +++
arch/cris/Kconfig | 3 +++
arch/h8300/Kconfig | 4 ++++
arch/i386/Kconfig | 3 +++
arch/ia64/Kconfig | 6 ++++++
arch/m32r/Kconfig | 3 +++
arch/m68knommu/Kconfig | 3 +++
arch/s390/Kconfig | 3 +++
arch/x86_64/Kconfig | 3 +++
include/asm-alpha/page.h | 3 ---
include/asm-cris/page.h | 3 ---
include/asm-h8300/page.h | 3 ---
include/asm-i386/page.h | 3 ---
include/asm-ia64/page.h | 10 +---------
include/asm-m32r/page.h | 3 ---
include/asm-m68knommu/page.h | 3 ---
include/asm-s390/page.h | 2 --
include/asm-x86_64/page.h | 2 --
include/linux/highmem.h | 16 +++++++++++++++-
19 files changed, 47 insertions(+), 32 deletions(-)
Index: devel-tree-2.6.20-mm2/arch/alpha/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/alpha/Kconfig
+++ devel-tree-2.6.20-mm2/arch/alpha/Kconfig
@@ -551,6 +551,9 @@ config ARCH_DISCONTIGMEM_ENABLE
or have huge holes in the physical address space for other reasons.
See <file:Documentation/vm/numa> for more.
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
config NUMA
Index: devel-tree-2.6.20-mm2/include/asm-alpha/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-alpha/page.h
+++ devel-tree-2.6.20-mm2/include/asm-alpha/page.h
@@ -17,9 +17,6 @@
extern void clear_page(void *page);
#define clear_user_page(page, vaddr, pg) clear_page(page)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vmaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
extern void copy_page(void * _to, void * _from);
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
Index: devel-tree-2.6.20-mm2/arch/cris/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/cris/Kconfig
+++ devel-tree-2.6.20-mm2/arch/cris/Kconfig
@@ -97,6 +97,9 @@ config PREEMPT
Say Y here if you are building a kernel for a desktop, embedded
or real-time system. Say N if you are unsure.
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source mm/Kconfig
endmenu
Index: devel-tree-2.6.20-mm2/include/asm-cris/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-cris/page.h
+++ devel-tree-2.6.20-mm2/include/asm-cris/page.h
@@ -20,9 +20,6 @@
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/arch/h8300/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/h8300/Kconfig
+++ devel-tree-2.6.20-mm2/arch/h8300/Kconfig
@@ -68,6 +68,10 @@ config PCI
bool
default n
+config ARCH_HAS_PREZERO_USERPAGE
+ bool
+ default y
+
source "init/Kconfig"
source "arch/h8300/Kconfig.cpu"
Index: devel-tree-2.6.20-mm2/include/asm-h8300/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-h8300/page.h
+++ devel-tree-2.6.20-mm2/include/asm-h8300/page.h
@@ -22,9 +22,6 @@
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/arch/i386/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/i386/Kconfig
+++ devel-tree-2.6.20-mm2/arch/i386/Kconfig
@@ -675,6 +675,9 @@ config ARCH_SELECT_MEMORY_MODEL
config ARCH_POPULATES_NODE_MAP
def_bool y
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
config HIGHPTE
Index: devel-tree-2.6.20-mm2/include/asm-i386/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-i386/page.h
+++ devel-tree-2.6.20-mm2/include/asm-i386/page.h
@@ -34,9 +34,6 @@
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/arch/ia64/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/ia64/Kconfig
+++ devel-tree-2.6.20-mm2/arch/ia64/Kconfig
@@ -329,6 +329,12 @@ config PREEMPT
Say Y here if you are building a kernel for a desktop, embedded
or real-time system. Say N if you are unsure.
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
+config ARCH_HAS_FLUSH_USERNEWZEROPAGE
+ def_bool y
+
source "mm/Kconfig"
config ARCH_SELECT_MEMORY_MODEL
Index: devel-tree-2.6.20-mm2/include/asm-ia64/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-ia64/page.h
+++ devel-tree-2.6.20-mm2/include/asm-ia64/page.h
@@ -87,15 +87,7 @@ do { \
} while (0)
-#define alloc_zeroed_user_highpage(vma, vaddr) \
-({ \
- struct page *page = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr); \
- if (page) \
- flush_dcache_page(page); \
- page; \
-})
-
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
+#define flush_user_newzeropage(page) flush_dcache_page(page)
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
Index: devel-tree-2.6.20-mm2/arch/m32r/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/m32r/Kconfig
+++ devel-tree-2.6.20-mm2/arch/m32r/Kconfig
@@ -193,6 +193,9 @@ config ARCH_DISCONTIGMEM_ENABLE
depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104
default y
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
config IRAM_START
Index: devel-tree-2.6.20-mm2/include/asm-m32r/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-m32r/page.h
+++ devel-tree-2.6.20-mm2/include/asm-m32r/page.h
@@ -15,9 +15,6 @@ extern void copy_page(void *to, void *fr
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/arch/m68knommu/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/m68knommu/Kconfig
+++ devel-tree-2.6.20-mm2/arch/m68knommu/Kconfig
@@ -627,6 +627,9 @@ config ROMKERNEL
endchoice
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
endmenu
Index: devel-tree-2.6.20-mm2/include/asm-m68knommu/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-m68knommu/page.h
+++ devel-tree-2.6.20-mm2/include/asm-m68knommu/page.h
@@ -22,9 +22,6 @@
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
-
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/arch/s390/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/s390/Kconfig
+++ devel-tree-2.6.20-mm2/arch/s390/Kconfig
@@ -272,6 +272,9 @@ config WARN_STACK_SIZE
config ARCH_POPULATES_NODE_MAP
def_bool y
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
config HOLES_IN_ZONE
Index: devel-tree-2.6.20-mm2/include/asm-s390/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-s390/page.h
+++ devel-tree-2.6.20-mm2/include/asm-s390/page.h
@@ -64,8 +64,6 @@ static inline void copy_page(void *to, v
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
/*
* These are used to make use of C type-checking..
Index: devel-tree-2.6.20-mm2/arch/x86_64/Kconfig
===================================================================
--- devel-tree-2.6.20-mm2.orig/arch/x86_64/Kconfig
+++ devel-tree-2.6.20-mm2/arch/x86_64/Kconfig
@@ -400,6 +400,9 @@ config ARCH_FLATMEM_ENABLE
def_bool y
depends on !NUMA
+config ARCH_HAS_PREZERO_USERPAGE
+ def_bool y
+
source "mm/Kconfig"
config MEMORY_HOTPLUG_RESERVE
Index: devel-tree-2.6.20-mm2/include/asm-x86_64/page.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/asm-x86_64/page.h
+++ devel-tree-2.6.20-mm2/include/asm-x86_64/page.h
@@ -51,8 +51,6 @@ void copy_page(void *, void *);
#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
-#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr)
-#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
/*
* These are used to make use of C type-checking..
*/
Index: devel-tree-2.6.20-mm2/include/linux/highmem.h
===================================================================
--- devel-tree-2.6.20-mm2.orig/include/linux/highmem.h
+++ devel-tree-2.6.20-mm2/include/linux/highmem.h
@@ -60,8 +60,22 @@ static inline void clear_user_highpage(s
/* Make sure this page is cleared on other CPU's too before using it */
smp_wmb();
}
+#ifndef CONFIG_ARCH_HAS_FLUSH_USER_NEWZEROPAGE
+#define flush_user_newzeroapge(page) do{}while(0);
+#endif
-#ifndef __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
+#ifdef CONFIG_ARCH_HAS_PREZERO_USERPAGE
+static inline struct page *
+alloc_zeroed_user_highpage(struct vm_area_struct *vma, unsigned long vaddr)
+{
+ struct page *page;
+ page = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr);
+ if (page)
+ flush_user_newzeropage(page);
+ return page;
+}
+
+#else
static inline struct page *
alloc_zeroed_user_highpage(struct vm_area_struct *vma, unsigned long vaddr)
{
--
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:[~2007-03-06 4:43 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-06 4:32 [RFC} memory unplug patchset prep [0/16] KAMEZAWA Hiroyuki
2007-03-06 4:42 ` [RFC} memory unplug patchset prep [1/16] zone ids cleanup KAMEZAWA Hiroyuki
2007-03-06 15:36 ` David Rientjes
2007-03-07 1:21 ` KAMEZAWA Hiroyuki
2007-03-06 4:43 ` KAMEZAWA Hiroyuki [this message]
2007-03-06 15:54 ` [RFC} memory unplug patchset prep [2/16] gathering alloc_zeroed_user_highpage() David Rientjes
2007-03-07 1:46 ` KAMEZAWA Hiroyuki
2007-03-06 4:44 ` [RFC} memory unplug patchset prep [3/16] define is_identity_mapped KAMEZAWA Hiroyuki
2007-03-06 15:55 ` David Rientjes
2007-03-07 1:48 ` KAMEZAWA Hiroyuki
2007-03-06 4:45 ` [RFC} memory unplug patchset prep [4/16] ZONE_MOVABLE KAMEZAWA Hiroyuki
2007-03-06 16:06 ` David Rientjes
2007-03-07 1:51 ` KAMEZAWA Hiroyuki
2007-03-06 4:47 ` [RFC} memory unplug patchset prep [5/16] GFP_MOVABLE KAMEZAWA Hiroyuki
2007-03-06 4:48 ` [RFC} memory unplug patchset prep [6/16] alloc_zeroed_user_high_movable KAMEZAWA Hiroyuki
2007-03-06 4:49 ` [RFC} memory unplug patchset prep [7/16] change caller's gfp_mask KAMEZAWA Hiroyuki
2007-03-06 4:50 ` [RFC} memory unplug patchset prep [8/16] counter for ZONE_MOVABLE KAMEZAWA Hiroyuki
2007-03-06 16:11 ` David Rientjes
2007-03-07 1:55 ` KAMEZAWA Hiroyuki
2007-03-06 4:52 ` [RFC} memory unplug patchset prep [9/16] create movable zone at boot KAMEZAWA Hiroyuki
2007-03-06 16:06 ` David Rientjes
2007-03-07 2:02 ` KAMEZAWA Hiroyuki
2007-03-06 4:53 ` [RFC} memory unplug patchset prep [10/16] ia64 support KAMEZAWA Hiroyuki
2007-03-06 4:55 ` [RFC} memory unplug patchset prep [11/16] page isolation core KAMEZAWA Hiroyuki
2007-03-06 4:56 ` [RFC} memory unplug patchset prep [12/16] drain all pages KAMEZAWA Hiroyuki
2007-03-06 4:57 ` [RFC} memory unplug patchset prep [13/16] isolate freed pages KAMEZAWA Hiroyuki
2007-03-06 4:59 ` [RFC} memory unplug patchset prep [14/16] memory unplug core KAMEZAWA Hiroyuki
2007-03-06 5:00 ` [RFC} memory unplug patchset prep [15/16] hot-unplug interface for ia64 KAMEZAWA Hiroyuki
2007-03-06 5:02 ` [RFC} memory unplug patchset prep [16/16] migration nocontext KAMEZAWA Hiroyuki
2007-03-06 15:24 ` [RFC} memory unplug patchset prep [0/16] David Rientjes
2007-03-07 2:24 ` KAMEZAWA Hiroyuki
2007-03-07 2:31 ` David Rientjes
2007-03-07 2:44 ` KAMEZAWA Hiroyuki
2007-03-07 19:44 ` Mark Gross
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=20070306134334.e01e41bf.kamezawa.hiroyu@jp.fujitsu.com \
--to=kamezawa.hiroyu@jp.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=clameter@engr.sgi.com \
--cc=linux-mm@kvack.org \
--cc=mel@skynet.ie \
/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