linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] unify pfn_to_page take3 [0/23]
@ 2006-02-14  9:48 KAMEZAWA Hiroyuki
  2006-02-14  9:54 ` [PATCH] unify pfn_to_page take3 [1/23] generic functions KAMEZAWA Hiroyuki
                   ` (23 more replies)
  0 siblings, 24 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14  9:48 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, Kyle McMartin

Hi, this is unify-pfn_to_page patch take3. thank you for comments on
previous version.

This patch consolidates definitions of pfn_to_page/page_to_pfn which are
defined by each arch to generic one. Most of archs can use it.
This patch is against 2.6.16-rc3 and totally rewritten.

Changelog v2 -> v3
  - linux/memory_model.h is moved to asm-generic/memory_model.h
  - If an arch can use generic funcs, it includes asm-generic/memory_model.h.
    If not, it doesn't include them. (m68k, m68knommu, ia64 + virtual_mem_map)
  - remvoed CONFIG_ARCH_PFN_TO_PAGE
  - CONFIG_DONT_INLINE_PFN_TO_PAGE was renamed to CONFIG_OUT_OF_LINE_PFN_TO_PAGE
    This is used by x86_64+DISCONTIGMEM and sparc64.

Changelog: v1->v2
  - linux/memory_model.h is added. this defines pfn<->page translation.
  - new config options (set by arch) CONFIG_DONT_INLINE_PFN_TO_PAGE
    and CONFIG_ARCH_HAS_PFN_TO_PAGE are added.
  - SPARSEMEM's page_to_pfn is moved to linux/memory_model.h

-- Kame.


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [1/23] generic functions
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
@ 2006-02-14  9:54 ` KAMEZAWA Hiroyuki
  2006-02-14  9:56 ` [PATCH] unify pfn_to_page take3 [2/23] i386 pfn_to_page KAMEZAWA Hiroyuki
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14  9:54 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, Kyle McMartin

There are 3 memory models, FLATMEM, DISCONTIGMEM, SPARSEMEM.
Each arch defines its own page_to_pfn(), pfn_to_page() for each models.
But most of them can use the same function.

This patch adds asm-generic/memory_model.h, which defines generic
page_to_pfn(), pfn_to_page() for each memory model.

When CONFIG_OUT_OF_LINE_PFN_TO_PAGE=y, out-of-line functions are
used instead of macro. This is enabled by some archs and  reduces
text size.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-generic/memory_model.h
===================================================================
--- /dev/null
+++ testtree/include/asm-generic/memory_model.h
@@ -0,0 +1,77 @@
+#ifndef __ASM_MEMORY_MODEL_H
+#define __ASM_MEMORY_MODEL_H
+
+#ifdef __KERNEL__
+#ifndef __ASSEMBLY__
+
+#if defined(CONFIG_FLATMEM)
+
+#ifndef ARCH_PFN_OFFSET
+#define ARCH_PFN_OFFSET		(0UL)
+#endif
+
+#elif defined(CONFIG_DISCONTIGMEM)
+
+#ifndef arch_pfn_to_nid
+#define arch_pfn_to_nid(pfn)	pfn_to_nid(pfn)
+#endif
+
+#ifndef arch_local_page_offset
+#define arch_local_page_offset(pfn, nid)	\
+	((pfn) - NODE_DATA(nid)->node_start_pfn)
+#endif
+
+#endif /* CONFIG_DISCONTIGMEM */
+
+#ifdef CONFIG_OUT_OF_LINE_PFN_TO_PAGE
+struct page;
+/* this is useful when inlined pfn_to_page is too big */
+extern struct page *pfn_to_page(unsigned long pfn);
+extern unsigned long page_to_pfn(struct page *page);
+#else
+/*
+ * supports 3 memory models.
+ */
+#if defined(CONFIG_FLATMEM)
+
+#define pfn_to_page(pfn)	(mem_map + ((pfn) - ARCH_PFN_OFFSET))
+#define page_to_pfn(page)	((unsigned long)((page) - mem_map) + \
+				 ARCH_PFN_OFFSET)
+#elif defined(CONFIG_DISCONTIGMEM)
+
+#define pfn_to_page(pfn)			\
+({	unsigned long __pfn = (pfn);		\
+	unsigned long __nid = arch_pfn_to_nid(pfn);  \
+	NODE_DATA(__nid)->node_mem_map + arch_local_page_offset(__pfn, __nid);\
+})
+
+#define page_to_pfn(pg)			\
+({	struct page *__pg = (pg);		\
+	struct zone *__zone = page_zone(__pg);	\
+	(unsigned long)(__pg - __zone->zone_mem_map) +	\
+	 __zone->zone_start_pfn;			\
+})
+
+#elif defined(CONFIG_SPARSEMEM)
+/*
+ * Note: section's mem_map is encorded to reflect its start_pfn.
+ * section[i].section_mem_map == mem_map's address - start_pfn;
+ */
+#define page_to_pfn(pg)					\
+({	struct page *__pg = (pg);				\
+	int __sec = page_to_section(__pg);			\
+	__pg - __section_mem_map_addr(__nr_to_section(__sec));	\
+})
+
+#define pfn_to_page(pfn)				\
+({	unsigned long __pfn = (pfn);			\
+	struct mem_section *__sec = __pfn_to_section(__pfn);	\
+	__section_mem_map_addr(__sec) + __pfn;		\
+})
+#endif /* CONFIG_FLATMEM/DISCONTIGMEM/SPARSEMEM */
+#endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */
+
+#endif /* __ASSEMBLY__ */
+#endif /* __KERNEL__ */
+
+#endif
Index: testtree/include/linux/mmzone.h
===================================================================
--- testtree.orig/include/linux/mmzone.h
+++ testtree/include/linux/mmzone.h
@@ -602,17 +602,6 @@ static inline struct mem_section *__pfn_
  	return __nr_to_section(pfn_to_section_nr(pfn));
  }

-#define pfn_to_page(pfn) 						\
-({ 									\
-	unsigned long __pfn = (pfn);					\
-	__section_mem_map_addr(__pfn_to_section(__pfn)) + __pfn;	\
-})
-#define page_to_pfn(page)						\
-({									\
-	page - __section_mem_map_addr(__nr_to_section(			\
-		page_to_section(page)));				\
-})
-
  static inline int pfn_valid(unsigned long pfn)
  {
  	if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
Index: testtree/mm/page_alloc.c
===================================================================
--- testtree.orig/mm/page_alloc.c
+++ testtree/mm/page_alloc.c
@@ -2726,3 +2726,45 @@ void *__init alloc_large_system_hash(con

  	return table;
  }
+
+#ifdef CONFIG_OUT_OF_LINE_PFN_TO_PAGE
+/*
+ * pfn <-> page translation. out-of-line version.
+ * (see asm-generic/memory_model.h)
+ */
+#if defined(CONFIG_FLATMEM)
+struct page *pfn_to_page(unsigned long pfn)
+{
+	return mem_map + (pfn - ARCH_PFN_OFFSET);
+}
+unsigned long page_to_pfn(struct page *page)
+{
+	return (page - mem_map) + ARCH_PFN_OFFSET;
+}
+#elif defined(CONFIG_DISCONTIGMEM)
+struct page *pfn_to_page(unsigned long pfn)
+{
+	int nid = arch_pfn_to_nid(pfn);
+	return NODE_DATA(nid)->node_mem_map + arch_local_page_offset(pfn,nid);
+}
+unsigned long page_to_pfn(struct page *page)
+{
+	struct zone *zone = page_zone(page);
+	return (page - zone->zone_mem_map) + zone->zone_start_pfn;
+
+}
+#elif defined(CONFIG_SPARSEMEM)
+struct page *pfn_to_page(unsigned long pfn)
+{
+	return __section_mem_map_addr(__pfn_to_section(pfn)) + pfn;
+}
+
+unsigned long page_to_pfn(struct page *page)
+{
+	long section_id = page_to_section(page);
+	return page - __section_mem_map_addr(__nr_to_section(section_id));
+}
+#endif /* CONFIG_FLATMEM/DISCONTIGMME/SPARSEMEM */
+EXPORT_SYMBOL(pfn_to_page);
+EXPORT_SYMBOL(page_to_pfn);
+#endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [2/23] i386 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
  2006-02-14  9:54 ` [PATCH] unify pfn_to_page take3 [1/23] generic functions KAMEZAWA Hiroyuki
@ 2006-02-14  9:56 ` KAMEZAWA Hiroyuki
  2006-02-14  9:58 ` [PATCH] unify pfn_to_page take3 [3/23] x86_64 pfn_to_page KAMEZAWA Hiroyuki
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14  9:56 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

i386 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-i386/mmzone.h
===================================================================
--- testtree.orig/include/asm-i386/mmzone.h
+++ testtree/include/asm-i386/mmzone.h
@@ -70,8 +70,6 @@ static inline int pfn_to_nid(unsigned lo
  #endif
  }

-#define node_localnr(pfn, nid)		((pfn) - node_data[nid]->node_start_pfn)
-
  /*
   * Following are macros that each numa implmentation must define.
   */
@@ -86,21 +84,6 @@ static inline int pfn_to_nid(unsigned lo
  /* XXX: FIXME -- wli */
  #define kern_addr_valid(kaddr)	(0)

-#define pfn_to_page(pfn)						\
-({									\
-	unsigned long __pfn = pfn;					\
-	int __node  = pfn_to_nid(__pfn);				\
-	&NODE_DATA(__node)->node_mem_map[node_localnr(__pfn,__node)];	\
-})
-
-#define page_to_pfn(pg)							\
-({									\
-	struct page *__page = pg;					\
-	struct zone *__zone = page_zone(__page);			\
-	(unsigned long)(__page - __zone->zone_mem_map)			\
-		+ __zone->zone_start_pfn;				\
-})
-
  #ifdef CONFIG_X86_NUMAQ            /* we have contiguous memory on NUMA-Q */
  #define pfn_valid(pfn)          ((pfn) < num_physpages)
  #else
Index: testtree/include/asm-i386/page.h
===================================================================
--- testtree.orig/include/asm-i386/page.h
+++ testtree/include/asm-i386/page.h
@@ -126,8 +126,6 @@ extern int page_is_ram(unsigned long pag
  #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET))
  #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
  #ifdef CONFIG_FLATMEM
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < max_mapnr)
  #endif /* CONFIG_FLATMEM */
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
@@ -141,6 +139,7 @@ extern int page_is_ram(unsigned long pag

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _I386_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [3/23] x86_64 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
  2006-02-14  9:54 ` [PATCH] unify pfn_to_page take3 [1/23] generic functions KAMEZAWA Hiroyuki
  2006-02-14  9:56 ` [PATCH] unify pfn_to_page take3 [2/23] i386 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14  9:58 ` KAMEZAWA Hiroyuki
  2006-02-14 10:02 ` [PATCH] unify pfn_to_page take3 [4/23] powerpc pfn_to_page KAMEZAWA Hiroyuki
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14  9:58 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, Andi Kleen

x86_64 can use generic funcs.
For DISCONTIGMEM, CONFIG_OUT_OF_LINE_PFN_TO_PAGE is selected.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/arch/x86_64/mm/numa.c
===================================================================
--- testtree.orig/arch/x86_64/mm/numa.c
+++ testtree/arch/x86_64/mm/numa.c
@@ -369,21 +369,6 @@ EXPORT_SYMBOL(node_data);
   * Should do that.
   */

-/* Requires pfn_valid(pfn) to be true */
-struct page *pfn_to_page(unsigned long pfn)
-{
-	int nid = phys_to_nid(((unsigned long)(pfn)) << PAGE_SHIFT);
-	return (pfn - node_start_pfn(nid)) + NODE_DATA(nid)->node_mem_map;
-}
-EXPORT_SYMBOL(pfn_to_page);
-
-unsigned long page_to_pfn(struct page *page)
-{
-	return (long)(((page) - page_zone(page)->zone_mem_map) +
-		      page_zone(page)->zone_start_pfn);
-}
-EXPORT_SYMBOL(page_to_pfn);
-
  int pfn_valid(unsigned long pfn)
  {
  	unsigned nid;
Index: testtree/include/asm-x86_64/mmzone.h
===================================================================
--- testtree.orig/include/asm-x86_64/mmzone.h
+++ testtree/include/asm-x86_64/mmzone.h
@@ -39,12 +39,8 @@ static inline __attribute__((pure)) int
  #define pfn_to_nid(pfn) phys_to_nid((unsigned long)(pfn) << PAGE_SHIFT)
  #define kvaddr_to_nid(kaddr)	phys_to_nid(__pa(kaddr))

-extern struct page *pfn_to_page(unsigned long pfn);
-extern unsigned long page_to_pfn(struct page *page);
  extern int pfn_valid(unsigned long pfn);
  #endif

-#define local_mapnr(kvaddr) \
-	( (__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(kvaddr_to_nid(kvaddr)) )
  #endif
  #endif
Index: testtree/include/asm-x86_64/page.h
===================================================================
--- testtree.orig/include/asm-x86_64/page.h
+++ testtree/include/asm-x86_64/page.h
@@ -123,8 +123,6 @@ typedef struct { unsigned long pgprot; }
  #define __boot_va(x)		__va(x)
  #define __boot_pa(x)		__pa(x)
  #ifdef CONFIG_FLATMEM
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < end_pfn)
  #endif

@@ -140,6 +138,7 @@ typedef struct { unsigned long pgprot; }

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _X86_64_PAGE_H */
Index: testtree/arch/x86_64/Kconfig
===================================================================
--- testtree.orig/arch/x86_64/Kconfig
+++ testtree/arch/x86_64/Kconfig
@@ -321,6 +321,10 @@ config HAVE_ARCH_EARLY_PFN_TO_NID
  	def_bool y
  	depends on NUMA

+config OUT_OF_LINE_PFN_TO_PAGE
+	def_bool y
+	depends on DISCONTIGMEM
+
  config NR_CPUS
  	int "Maximum number of CPUs (2-256)"
  	range 2 256


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [4/23] powerpc pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (2 preceding siblings ...)
  2006-02-14  9:58 ` [PATCH] unify pfn_to_page take3 [3/23] x86_64 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:02 ` KAMEZAWA Hiroyuki
  2006-02-14 10:12 ` [PATCH] unify pfn_to_page take3 [5/23] alpha pfn_to_page KAMEZAWA Hiroyuki
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:02 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: linuxppc-dev, Andrew Morton

PowerPC can use generic ones.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-powerpc/page.h
===================================================================
--- testtree.orig/include/asm-powerpc/page.h
+++ testtree/include/asm-powerpc/page.h
@@ -69,8 +69,6 @@
  #endif

  #ifdef CONFIG_FLATMEM
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < max_mapnr)
  #endif

@@ -200,6 +198,7 @@ extern void copy_user_page(void *to, voi
  		struct page *p);
  extern int page_is_ram(unsigned long pfn);

+#include <asm-generic/memory_model.h>
  #endif /* __ASSEMBLY__ */

  #endif /* __KERNEL__ */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [5/23] alpha pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (3 preceding siblings ...)
  2006-02-14 10:02 ` [PATCH] unify pfn_to_page take3 [4/23] powerpc pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:12 ` KAMEZAWA Hiroyuki
  2006-02-14 10:19 ` [PATCH] unify pfn_to_page take3 [6/23] arm pfn_to_page KAMEZAWA Hiroyuki
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:12 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, axp-list

Alpha can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-alpha/mmzone.h
===================================================================
--- testtree.orig/include/asm-alpha/mmzone.h
+++ testtree/include/asm-alpha/mmzone.h
@@ -59,9 +59,6 @@ PLAT_NODE_DATA_LOCALNR(unsigned long p,
  #define kvaddr_to_nid(kaddr)	pa_to_nid(__pa(kaddr))
  #define node_start_pfn(nid)	(NODE_DATA(nid)->node_start_pfn)

-#define local_mapnr(kvaddr) \
-      ((__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(kvaddr_to_nid(kvaddr)))
-
  /*
   * Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory
   * and returns the kaddr corresponding to first physical page in the
@@ -104,19 +101,8 @@ PLAT_NODE_DATA_LOCALNR(unsigned long p,
  	__xx;                                                           \
  })

-#define pfn_to_page(pfn)						\
-({									\
- 	unsigned long kaddr = (unsigned long)__va((pfn) << PAGE_SHIFT);	\
-	(NODE_DATA(kvaddr_to_nid(kaddr))->node_mem_map + local_mapnr(kaddr));	\
-})
-
-#define page_to_pfn(page)						\
-	((page) - page_zone(page)->zone_mem_map +			\
-	 (page_zone(page)->zone_start_pfn))
-
  #define page_to_pa(page)						\
-	((( (page) - page_zone(page)->zone_mem_map )			\
-	+ page_zone(page)->zone_start_pfn) << PAGE_SHIFT)
+	(page_to_pfn(page) << PAGE_SHIFT)

  #define pfn_to_nid(pfn)		pa_to_nid(((u64)(pfn) << PAGE_SHIFT))
  #define pfn_valid(pfn)							\
Index: testtree/include/asm-alpha/page.h
===================================================================
--- testtree.orig/include/asm-alpha/page.h
+++ testtree/include/asm-alpha/page.h
@@ -85,8 +85,6 @@ typedef unsigned long pgprot_t;
  #define __pa(x)			((unsigned long) (x) - PAGE_OFFSET)
  #define __va(x)			((void *)((unsigned long) (x) + PAGE_OFFSET))
  #ifndef CONFIG_DISCONTIGMEM
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)

  #define pfn_valid(pfn)		((pfn) < max_mapnr)
@@ -95,9 +93,9 @@ typedef unsigned long pgprot_t;

  #define VM_DATA_DEFAULT_FLAGS		(VM_READ | VM_WRITE | VM_EXEC | \
  					 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
-
  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _ALPHA_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [6/23]  arm pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (4 preceding siblings ...)
  2006-02-14 10:12 ` [PATCH] unify pfn_to_page take3 [5/23] alpha pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:19 ` KAMEZAWA Hiroyuki
  2006-02-14 10:21 ` [PATCH] unify pfn_to_page take3 [7/23] arm26 pfn_to_page KAMEZAWA Hiroyuki
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:19 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

ARM can use generic funcs.
PFN_TO_NID, LOCAL_MAP_NR are defined by sub-archs.

Signed-Off-By: KAMEZAWA Hirotuki <kamezawa.hiroyu@jp.fujitsu.com>


Index: testtree/include/asm-arm/memory.h
===================================================================
--- testtree.orig/include/asm-arm/memory.h
+++ testtree/include/asm-arm/memory.h
@@ -172,9 +172,7 @@ static inline __deprecated void *bus_to_
   *  virt_addr_valid(k)	indicates whether a virtual address is valid
   */
  #ifndef CONFIG_DISCONTIGMEM
-
-#define page_to_pfn(page)	(((page) - mem_map) + PHYS_PFN_OFFSET)
-#define pfn_to_page(pfn)	((mem_map + (pfn)) - PHYS_PFN_OFFSET)
+#define ARCH_PFN_OFFSET		(PHYS_PFN_OFFSET)
  #define pfn_valid(pfn)		((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))

  #define virt_to_page(kaddr)	(pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
@@ -189,13 +187,8 @@ static inline __deprecated void *bus_to_
   * around in memory.
   */
  #include <linux/numa.h>
-
-#define page_to_pfn(page)					\
-	(( (page) - page_zone(page)->zone_mem_map)		\
-	  + page_zone(page)->zone_start_pfn)
-
-#define pfn_to_page(pfn)					\
-	(PFN_TO_MAPBASE(pfn) + LOCAL_MAP_NR((pfn) << PAGE_SHIFT))
+#define arch_pfn_to_nid(pfn)	(PFN_TO_NID(pfn))
+#define arch_local_page_offset(pfn, nid) (LOCAL_MAP_NR((pfn) << PAGE_OFFSET))

  #define pfn_valid(pfn)						\
  	({							\
@@ -222,6 +215,7 @@ static inline __deprecated void *bus_to_

  #endif /* !CONFIG_DISCONTIGMEM */

+
  /*
   * For BIO.  "will die".  Kill me when bio_to_phys() and bvec_to_phys() die.
   */
@@ -243,4 +237,6 @@ static inline __deprecated void *bus_to_

  #endif

+#include <asm-generic/memory_model.h>
+
  #endif


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] unify pfn_to_page take3 [7/23]  arm26 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (5 preceding siblings ...)
  2006-02-14 10:19 ` [PATCH] unify pfn_to_page take3 [6/23] arm pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:21 ` KAMEZAWA Hiroyuki
  2006-02-14 10:23 ` [PATCH] unify pfn_to_page take3 [8/23] cris pfn_to_page KAMEZAWA Hiroyuki
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:21 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

arm26 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-arm26/memory.h
===================================================================
--- testtree.orig/include/asm-arm26/memory.h
+++ testtree/include/asm-arm26/memory.h
@@ -11,7 +11,6 @@
   */
  #ifndef __ASM_ARM_MEMORY_H
  #define __ASM_ARM_MEMORY_H
-
  /*
   * User space: 26MB
   */
@@ -81,8 +80,7 @@ static inline void *phys_to_virt(unsigne
   *  virt_to_page(k)	convert a _valid_ virtual address to struct page *
   *  virt_addr_valid(k)	indicates whether a virtual address is valid
   */
-#define page_to_pfn(page)	(((page) - mem_map) + PHYS_PFN_OFFSET)
-#define pfn_to_page(pfn)	((mem_map + (pfn)) - PHYS_PFN_OFFSET)
+#define ARCH_PFN_OFFSET		(PHYS_PFN_OFFSET)
  #define pfn_valid(pfn)		((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))

  #define virt_to_page(kaddr)	(pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
@@ -98,4 +96,5 @@ static inline void *phys_to_virt(unsigne
   */
  #define page_to_bus(page)	(page_address(page))

+#include <asm-generic/memory_model.h>
  #endif


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [8/23] cris pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (6 preceding siblings ...)
  2006-02-14 10:21 ` [PATCH] unify pfn_to_page take3 [7/23] arm26 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:23 ` KAMEZAWA Hiroyuki
  2006-02-14 10:25 ` [PATCH] unify pfn_to_page take3 [9/23] frv pfn_tp_page KAMEZAWA Hiroyuki
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:23 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, mikael.starvik

cris can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-cris/page.h
===================================================================
--- testtree.orig/include/asm-cris/page.h
+++ testtree/include/asm-cris/page.h
@@ -43,8 +43,7 @@ typedef struct { unsigned long pgprot; }

  /* On CRIS the PFN numbers doesn't start at 0 so we have to compensate */
  /* for that before indexing into the page table starting at mem_map    */
-#define pfn_to_page(pfn)	(mem_map + ((pfn) - (PAGE_OFFSET >> PAGE_SHIFT)))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map) + (PAGE_OFFSET >> PAGE_SHIFT))
+#define ARCH_PFN_OFFSET		(PAGE_OFFSET >> PAGE_SHIFT)
  #define pfn_valid(pfn)		(((pfn) - (PAGE_OFFSET >> PAGE_SHIFT)) < max_mapnr)

  /* to index into the page map. our pages all start at physical addr PAGE_OFFSET so
@@ -77,6 +76,7 @@ typedef struct { unsigned long pgprot; }

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _CRIS_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [9/23]  frv pfn_tp_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (7 preceding siblings ...)
  2006-02-14 10:23 ` [PATCH] unify pfn_to_page take3 [8/23] cris pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:25 ` KAMEZAWA Hiroyuki
  2006-02-14 10:28 ` [PATCH] unify pfn_to_page take3 [10/23] h8300 pfn_to_page KAMEZAWA Hiroyuki
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:25 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, dhowells

FRV can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-frv/page.h
===================================================================
--- testtree.orig/include/asm-frv/page.h
+++ testtree/include/asm-frv/page.h
@@ -57,13 +57,9 @@ extern unsigned long min_low_pfn;
  extern unsigned long max_pfn;

  #ifdef CONFIG_MMU
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long) ((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < max_mapnr)
-
  #else
-#define pfn_to_page(pfn)	(&mem_map[(pfn) - (PAGE_OFFSET >> PAGE_SHIFT)])
-#define page_to_pfn(page)	((PAGE_OFFSET >> PAGE_SHIFT) + (unsigned long) ((page) - mem_map))
+#define ARCH_PFN_OFFSET		(PAGE_OFFSET >> PAGE_SHIFT)
  #define pfn_valid(pfn)		((pfn) >= min_low_pfn && (pfn) < max_low_pfn)

  #endif
@@ -87,6 +83,7 @@ extern unsigned long max_pfn;
  #define WANT_PAGE_VIRTUAL	1
  #endif

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _ASM_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [10/23] h8300 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (8 preceding siblings ...)
  2006-02-14 10:25 ` [PATCH] unify pfn_to_page take3 [9/23] frv pfn_tp_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:28 ` KAMEZAWA Hiroyuki
  2006-02-14 10:33 ` [PATCH] unify pfn_to_page take3 [11/23] m32r pfn_to_page KAMEZAWA Hiroyuki
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:28 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

H8300 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-h8300/page.h
===================================================================
--- testtree.orig/include/asm-h8300/page.h
+++ testtree/include/asm-h8300/page.h
@@ -71,8 +71,7 @@ extern unsigned long memory_end;
  #define page_to_virt(page)	((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
  #define pfn_valid(page)	        (page < max_mapnr)

-#define pfn_to_page(pfn)	virt_to_page(pfn_to_virt(pfn))
-#define page_to_pfn(page)	virt_to_pfn(page_to_virt(page))
+#define ARCH_PFH_OFFSET		(PAGE_OFFSET >> PAGE_SHIFT)

  #define	virt_addr_valid(kaddr)	(((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
  				((void *)(kaddr) < (void *)memory_end))
@@ -81,6 +80,7 @@ extern unsigned long memory_end;

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _H8300_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [11/23] m32r pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (9 preceding siblings ...)
  2006-02-14 10:28 ` [PATCH] unify pfn_to_page take3 [10/23] h8300 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:33 ` KAMEZAWA Hiroyuki
  2006-02-14 10:36 ` [PATCH] unify pfn_to_page take3 [12/23] mips pfn_to_page KAMEZAWA Hiroyuki
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:33 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

m32r can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-m32r/mmzone.h
===================================================================
--- testtree.orig/include/asm-m32r/mmzone.h
+++ testtree/include/asm-m32r/mmzone.h
@@ -21,20 +21,6 @@ extern struct pglist_data *node_data[];
  	__pgdat->node_start_pfn + __pgdat->node_spanned_pages - 1;	\
  })

-#define pfn_to_page(pfn)						\
-({									\
-	unsigned long __pfn = pfn;					\
-	int __node  = pfn_to_nid(__pfn);				\
-	&NODE_DATA(__node)->node_mem_map[node_localnr(__pfn,__node)];	\
-})
-
-#define page_to_pfn(pg)							\
-({									\
-	struct page *__page = pg;					\
-	struct zone *__zone = page_zone(__page);			\
-	(unsigned long)(__page - __zone->zone_mem_map)			\
-		+ __zone->zone_start_pfn;				\
-})
  #define pmd_page(pmd)		(pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
  /*
   * pfn_valid should be made as fast as possible, and the current definition
Index: testtree/include/asm-m32r/page.h
===================================================================
--- testtree.orig/include/asm-m32r/page.h
+++ testtree/include/asm-m32r/page.h
@@ -76,9 +76,7 @@ typedef struct { unsigned long pgprot; }

  #ifndef CONFIG_DISCONTIGMEM
  #define PFN_BASE		(CONFIG_MEMORY_START >> PAGE_SHIFT)
-#define pfn_to_page(pfn)	(mem_map + ((pfn) - PFN_BASE))
-#define page_to_pfn(page)	\
-	((unsigned long)((page) - mem_map) + PFN_BASE)
+#define ARCH_PFN_OFFSET		PFN_BASE
  #define pfn_valid(pfn)		(((pfn) - PFN_BASE) < max_mapnr)
  #endif  /* !CONFIG_DISCONTIGMEM */

@@ -92,6 +90,7 @@ typedef struct { unsigned long pgprot; }

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _ASM_M32R_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [12/23] mips pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (10 preceding siblings ...)
  2006-02-14 10:33 ` [PATCH] unify pfn_to_page take3 [11/23] m32r pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:36 ` KAMEZAWA Hiroyuki
  2006-02-14 10:40 ` [PATCH] unify pfn_to_page take3 [13/23] parisc pfn_to_page KAMEZAWA Hiroyuki
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:36 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, linux-mips

MIPS can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-mips/mmzone.h
===================================================================
--- testtree.orig/include/asm-mips/mmzone.h
+++ testtree/include/asm-mips/mmzone.h
@@ -22,20 +22,6 @@
  		       NODE_DATA(__n)->node_spanned_pages) : 0);\
  })

-#define pfn_to_page(pfn)					\
-({								\
- 	unsigned long __pfn = (pfn);				\
-	pg_data_t *__pg = NODE_DATA(pfn_to_nid(__pfn));		\
-	__pg->node_mem_map + (__pfn - __pg->node_start_pfn);	\
-})
-
-#define page_to_pfn(p)						\
-({								\
-	struct page *__p = (p);					\
-	struct zone *__z = page_zone(__p);			\
-	((__p - __z->zone_mem_map) + __z->zone_start_pfn);	\
-})
-
  /* XXX: FIXME -- wli */
  #define kern_addr_valid(addr)	(0)

Index: testtree/include/asm-mips/page.h
===================================================================
--- testtree.orig/include/asm-mips/page.h
+++ testtree/include/asm-mips/page.h
@@ -17,6 +17,7 @@

  #endif

+
  /*
   * PAGE_SHIFT determines the page size
   */
@@ -140,8 +141,6 @@ typedef struct { unsigned long pgprot; }
  #define pfn_to_kaddr(pfn)	__va((pfn) << PAGE_SHIFT)

  #ifndef CONFIG_NEED_MULTIPLE_NODES
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < max_mapnr)
  #endif

@@ -160,6 +159,7 @@ typedef struct { unsigned long pgprot; }
  #define WANT_PAGE_VIRTUAL
  #endif

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _ASM_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [13/23] parisc pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (11 preceding siblings ...)
  2006-02-14 10:36 ` [PATCH] unify pfn_to_page take3 [12/23] mips pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:40 ` KAMEZAWA Hiroyuki
  2006-02-14 10:43 ` [PATCH] unify pfn_to_page take3 [14/23] ppc pfn_to_page KAMEZAWA Hiroyuki
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:40 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, kyle, grundler, matthew

PARISC can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-parisc/mmzone.h
===================================================================
--- testtree.orig/include/asm-parisc/mmzone.h
+++ testtree/include/asm-parisc/mmzone.h
@@ -25,23 +25,6 @@ extern struct node_map_data node_data[];
  	pg_data_t *__pgdat = NODE_DATA(nid);				\
  	__pgdat->node_start_pfn + __pgdat->node_spanned_pages;		\
  })
-#define node_localnr(pfn, nid)		((pfn) - node_start_pfn(nid))
-
-#define pfn_to_page(pfn)						\
-({									\
-	unsigned long __pfn = (pfn);					\
-	int __node  = pfn_to_nid(__pfn);				\
-	&NODE_DATA(__node)->node_mem_map[node_localnr(__pfn,__node)];	\
-})
-
-#define page_to_pfn(pg)							\
-({									\
-	struct page *__page = pg;					\
-	struct zone *__zone = page_zone(__page);			\
-	BUG_ON(__zone == NULL);						\
-	(unsigned long)(__page - __zone->zone_mem_map)			\
-		+ __zone->zone_start_pfn;				\
-})

  /* We have these possible memory map layouts:
   * Astro: 0-3.75, 67.75-68, 4-64
Index: testtree/include/asm-parisc/page.h
===================================================================
--- testtree.orig/include/asm-parisc/page.h
+++ testtree/include/asm-parisc/page.h
@@ -130,8 +130,6 @@ extern int npmem_ranges;
  #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET))

  #ifndef CONFIG_DISCONTIGMEM
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define pfn_valid(pfn)		((pfn) < max_mapnr)
  #endif /* CONFIG_DISCONTIGMEM */

@@ -152,6 +150,7 @@ extern int npmem_ranges;

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _PARISC_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [14/23] ppc pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (12 preceding siblings ...)
  2006-02-14 10:40 ` [PATCH] unify pfn_to_page take3 [13/23] parisc pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:43 ` KAMEZAWA Hiroyuki
  2006-02-14 10:45 ` [PATCH] unify pfn_to_page take3 [15/23] s390 pfn_to_page KAMEZAWA Hiroyuki
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:43 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, linuxppc-dev

PPC can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-ppc/page.h
===================================================================
--- testtree.orig/include/asm-ppc/page.h
+++ testtree/include/asm-ppc/page.h
@@ -149,8 +149,7 @@ extern int page_is_ram(unsigned long pfn
  #define __pa(x) ___pa((unsigned long)(x))
  #define __va(x) ((void *)(___va((unsigned long)(x))))

-#define pfn_to_page(pfn)	(mem_map + ((pfn) - PPC_PGSTART))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map) + PPC_PGSTART)
+#define ARCH_PFN_OFFSET		(PPC_PGSTART)
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
  #define page_to_virt(page)	__va(page_to_pfn(page) << PAGE_SHIFT)

@@ -175,5 +174,6 @@ extern __inline__ int get_order(unsigned
  /* We do define AT_SYSINFO_EHDR but don't use the gate mecanism */
  #define __HAVE_ARCH_GATE_AREA		1

+#include <asm-generic/memory_model.h>
  #endif /* __KERNEL__ */
  #endif /* _PPC_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [15/23] s390 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (13 preceding siblings ...)
  2006-02-14 10:43 ` [PATCH] unify pfn_to_page take3 [14/23] ppc pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:45 ` KAMEZAWA Hiroyuki
  2006-02-14 10:47 ` [PATCH] unify pfn_to_page take3 [16/23] sh pfn_to_page KAMEZAWA Hiroyuki
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:45 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

s390 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-s390/page.h
===================================================================
--- testtree.orig/include/asm-s390/page.h
+++ testtree/include/asm-s390/page.h
@@ -181,8 +181,6 @@ page_get_storage_key(unsigned long addr)
  #define PAGE_OFFSET             0x0UL
  #define __pa(x)                 (unsigned long)(x)
  #define __va(x)                 (void *)(unsigned long)(x)
-#define pfn_to_page(pfn)	(mem_map + (pfn))
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map))
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)

  #define pfn_valid(pfn)		((pfn) < max_mapnr)
@@ -193,6 +191,7 @@ page_get_storage_key(unsigned long addr)

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _S390_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] unify pfn_to_page take3 [16/23] sh pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (14 preceding siblings ...)
  2006-02-14 10:45 ` [PATCH] unify pfn_to_page take3 [15/23] s390 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:47 ` KAMEZAWA Hiroyuki
  2006-02-14 10:51 ` [PATCH] unify pfn_to_page take3 [17/23] sh64 pfn_to_page KAMEZAWA Hiroyuki
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:47 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, lethal

sh can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-sh/page.h
===================================================================
--- testtree.orig/include/asm-sh/page.h
+++ testtree/include/asm-sh/page.h
@@ -105,9 +105,7 @@ typedef struct { unsigned long pgprot; }

  /* PFN start number, because of __MEMORY_START */
  #define PFN_START		(__MEMORY_START >> PAGE_SHIFT)
-
-#define pfn_to_page(pfn)	(mem_map + (pfn) - PFN_START)
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map) + PFN_START)
+#define ARCH_PFN_OFFSET		(PFN_START)
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
  #define pfn_valid(pfn)		(((pfn) - PFN_START) < max_mapnr)
  #define virt_addr_valid(kaddr)	pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
@@ -117,6 +115,7 @@ typedef struct { unsigned long pgprot; }

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* __ASM_SH_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [17/23] sh64 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (15 preceding siblings ...)
  2006-02-14 10:47 ` [PATCH] unify pfn_to_page take3 [16/23] sh pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:51 ` KAMEZAWA Hiroyuki
  2006-02-14 10:54 ` [PATCH] unify pfn_to_page take3 [18/23] sparc pfn_to_page KAMEZAWA Hiroyuki
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:51 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, lethal

sh64 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-sh64/page.h
===================================================================
--- testtree.orig/include/asm-sh64/page.h
+++ testtree/include/asm-sh64/page.h
@@ -105,9 +105,7 @@ typedef struct { unsigned long pgprot; }

  /* PFN start number, because of __MEMORY_START */
  #define PFN_START		(__MEMORY_START >> PAGE_SHIFT)
-
-#define pfn_to_page(pfn)	(mem_map + (pfn) - PFN_START)
-#define page_to_pfn(page)	((unsigned long)((page) - mem_map) + PFN_START)
+#define ARCH_PFN_OFFSET		(PFN_START)
  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
  #define pfn_valid(pfn)		(((pfn) - PFN_START) < max_mapnr)
  #define virt_addr_valid(kaddr)	pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
@@ -117,6 +115,7 @@ typedef struct { unsigned long pgprot; }

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* __ASM_SH64_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [18/23] sparc pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (16 preceding siblings ...)
  2006-02-14 10:51 ` [PATCH] unify pfn_to_page take3 [17/23] sh64 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:54 ` KAMEZAWA Hiroyuki
  2006-02-14 10:56 ` [PATCH] unify pfn_to_page take3 [19/23] sparc64 pfn_to_page KAMEZAWA Hiroyuki
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:54 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, sparclinux

sparc can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-sparc/page.h
===================================================================
--- testtree.orig/include/asm-sparc/page.h
+++ testtree/include/asm-sparc/page.h
@@ -9,6 +9,7 @@
  #define _SPARC_PAGE_H

  #include <linux/config.h>
+
  #ifdef CONFIG_SUN4
  #define PAGE_SHIFT   13
  #else
@@ -152,8 +153,7 @@ extern unsigned long pfn_base;
  #define virt_to_phys		__pa
  #define phys_to_virt		__va

-#define pfn_to_page(pfn)	(mem_map + ((pfn)-(pfn_base)))
-#define page_to_pfn(page)	((unsigned long)(((page) - mem_map) + pfn_base))
+#define ARCH_PFN_OFFSET		(pfn_base)
  #define virt_to_page(kaddr)	(mem_map + ((((unsigned long)(kaddr)-PAGE_OFFSET)>>PAGE_SHIFT)))

  #define pfn_valid(pfn)		(((pfn) >= (pfn_base)) && (((pfn)-(pfn_base)) < max_mapnr))
@@ -164,6 +164,7 @@ extern unsigned long pfn_base;

  #endif /* __KERNEL__ */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* _SPARC_PAGE_H */



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [19/23] sparc64 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (17 preceding siblings ...)
  2006-02-14 10:54 ` [PATCH] unify pfn_to_page take3 [18/23] sparc pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:56 ` KAMEZAWA Hiroyuki
  2006-02-14 10:58 ` [PATCH] unify pfn_to_page take3 [20/23] UML pfn_to_page KAMEZAWA Hiroyuki
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:56 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, davem

sparc64 can use generic funcs.
CONFIG_OUT_OF_LINE_PFN_TO_PAGE is selected.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>


Index: testtree/arch/sparc64/Kconfig
===================================================================
--- testtree.orig/arch/sparc64/Kconfig
+++ testtree/arch/sparc64/Kconfig
@@ -34,6 +34,10 @@ config ARCH_MAY_HAVE_PC_FDC
  	bool
  	default y

+config OUT_OF_LINE_PFN_TO_PAGE
+	bool
+	default y
+
  choice
  	prompt "Kernel page size"
  	default SPARC64_PAGE_SIZE_8KB
Index: testtree/arch/sparc64/mm/init.c
===================================================================
--- testtree.orig/arch/sparc64/mm/init.c
+++ testtree/arch/sparc64/mm/init.c
@@ -320,16 +320,6 @@ void __kprobes flush_icache_range(unsign
  	}
  }

-unsigned long page_to_pfn(struct page *page)
-{
-	return (unsigned long) ((page - mem_map) + pfn_base);
-}
-
-struct page *pfn_to_page(unsigned long pfn)
-{
-	return (mem_map + (pfn - pfn_base));
-}
-
  void show_mem(void)
  {
  	printk("Mem-info:\n");
Index: testtree/include/asm-sparc64/page.h
===================================================================
--- testtree.orig/include/asm-sparc64/page.h
+++ testtree/include/asm-sparc64/page.h
@@ -129,8 +129,8 @@ typedef unsigned long pgprot_t;
   * the first physical page in the machine is at some huge physical address,
   * such as 4GB.   This is common on a partitioned E10000, for example.
   */
-extern struct page *pfn_to_page(unsigned long pfn);
-extern unsigned long page_to_pfn(struct page *);
+/* pfn_base is declared in pgtable.h */
+#define ARCH_PFN_OFFSET		(pfn_base)

  #define virt_to_page(kaddr)	pfn_to_page(__pa(kaddr)>>PAGE_SHIFT)

@@ -147,6 +147,7 @@ extern unsigned long page_to_pfn(struct

  #endif /* !(__KERNEL__) */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* !(_SPARC64_PAGE_H) */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [20/23] UML pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (18 preceding siblings ...)
  2006-02-14 10:56 ` [PATCH] unify pfn_to_page take3 [19/23] sparc64 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:58 ` KAMEZAWA Hiroyuki
  2006-02-14 10:59 ` [PATCH] unify pfn_to_page take3 [21/23] v850 pfn_to_page KAMEZAWA Hiroyuki
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:58 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

UML can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-um/page.h
===================================================================
--- testtree.orig/include/asm-um/page.h
+++ testtree/include/asm-um/page.h
@@ -106,9 +106,6 @@ extern unsigned long uml_physmem;
  #define __pa(virt) to_phys((void *) (unsigned long) (virt))
  #define __va(phys) to_virt((unsigned long) (phys))

-#define page_to_pfn(page) ((page) - mem_map)
-#define pfn_to_page(pfn) (mem_map + (pfn))
-
  #define phys_to_pfn(p) ((p) >> PAGE_SHIFT)
  #define pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT)

@@ -121,6 +118,7 @@ extern struct page *arch_validate(struct
  extern void arch_free_page(struct page *page, int order);
  #define HAVE_ARCH_FREE_PAGE

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [21/23] v850 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (19 preceding siblings ...)
  2006-02-14 10:58 ` [PATCH] unify pfn_to_page take3 [20/23] UML pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 10:59 ` KAMEZAWA Hiroyuki
  2006-02-14 11:01 ` [PATCH] unify pfn_to_page take3 [22/23] xtensa pfn_to_page KAMEZAWA Hiroyuki
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 10:59 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

v850 can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-v850/page.h
===================================================================
--- testtree.orig/include/asm-v850/page.h
+++ testtree/include/asm-v850/page.h
@@ -111,8 +111,7 @@ typedef unsigned long pgprot_t;
  #define page_to_virt(page) \
    ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)

-#define pfn_to_page(pfn)	virt_to_page (pfn_to_virt (pfn))
-#define page_to_pfn(page)	virt_to_pfn (page_to_virt (page))
+#define ARCH_PFN_OFFSET		(PAGE_OFFSET >> PAGE_SHIFT)
  #define pfn_valid(pfn)	        ((pfn) < max_mapnr)

  #define	virt_addr_valid(kaddr)						\
@@ -125,6 +124,7 @@ typedef unsigned long pgprot_t;

  #endif /* KERNEL */

+#include <asm-generic/memory_model.h>
  #include <asm-generic/page.h>

  #endif /* __V850_PAGE_H__ */



^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [22/23] xtensa pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (20 preceding siblings ...)
  2006-02-14 10:59 ` [PATCH] unify pfn_to_page take3 [21/23] v850 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 11:01 ` KAMEZAWA Hiroyuki
  2006-02-14 11:04 ` [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page KAMEZAWA Hiroyuki
  2006-02-15  5:33 ` [PATCH] unify pfn_to_page take3 [0/23] Andrew Morton
  23 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 11:01 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton

xtensa can use generic funcs.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-xtensa/page.h
===================================================================
--- testtree.orig/include/asm-xtensa/page.h
+++ testtree/include/asm-xtensa/page.h
@@ -109,10 +109,7 @@ void copy_user_page(void *to,void* from,
  #define __pa(x)			((unsigned long) (x) - PAGE_OFFSET)
  #define __va(x)			((void *)((unsigned long) (x) + PAGE_OFFSET))
  #define pfn_valid(pfn)		((unsigned long)pfn < max_mapnr)
-#ifndef CONFIG_DISCONTIGMEM
-# define pfn_to_page(pfn)	(mem_map + (pfn))
-# define page_to_pfn(page)	((unsigned long)((page) - mem_map))
-#else
+#ifdef CONFIG_DISCONTIGMEM
  # error CONFIG_DISCONTIGMEM not supported
  #endif

@@ -130,4 +127,5 @@ void copy_user_page(void *to,void* from,
  				 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

  #endif /* __KERNEL__ */
+#include <asm-generic/memory_model.h>
  #endif /* _XTENSA_PAGE_H */


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (21 preceding siblings ...)
  2006-02-14 11:01 ` [PATCH] unify pfn_to_page take3 [22/23] xtensa pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-14 11:04 ` KAMEZAWA Hiroyuki
  2006-02-23 11:09   ` KAMEZAWA Hiroyuki
  2006-02-15  5:33 ` [PATCH] unify pfn_to_page take3 [0/23] Andrew Morton
  23 siblings, 1 reply; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-14 11:04 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Andrew Morton, linux-ia64

ia64 has special config CONFIG_VIRTUAL_MEM_MAP.
CONFIG_DISCONTIGMEM=y && CONFIG_VIRTUAL_MEM_MAP!=y looks invalid.

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: testtree/include/asm-ia64/page.h
===================================================================
--- testtree.orig/include/asm-ia64/page.h
+++ testtree/include/asm-ia64/page.h
@@ -104,17 +104,20 @@ extern int ia64_pfn_valid (unsigned long
  # define ia64_pfn_valid(pfn) 1
  #endif

+#ifdef CONFIG_VIRTUAL_MEM_MAP
+extern struct page *vmem_map;
+# define page_to_pfn(page)	((unsigned long) (page - vmem_map))
+# define pfn_to_page(pfn)	(vmem_map + (pfn))
+#else
+#include <asm-generic/memory_model.h>
+#endif
+
  #ifdef CONFIG_FLATMEM
  # define pfn_valid(pfn)		(((pfn) < max_mapnr) && ia64_pfn_valid(pfn))
-# define page_to_pfn(page)	((unsigned long) (page - mem_map))
-# define pfn_to_page(pfn)	(mem_map + (pfn))
  #elif defined(CONFIG_DISCONTIGMEM)
-extern struct page *vmem_map;
  extern unsigned long min_low_pfn;
  extern unsigned long max_low_pfn;
  # define pfn_valid(pfn)		(((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
-# define page_to_pfn(page)	((unsigned long) (page - vmem_map))
-# define pfn_to_page(pfn)	(vmem_map + (pfn))
  #endif

  #define page_to_phys(page)	(page_to_pfn(page) << PAGE_SHIFT)


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] unify pfn_to_page take3 [0/23]
  2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
                   ` (22 preceding siblings ...)
  2006-02-14 11:04 ` [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-15  5:33 ` Andrew Morton
  2006-02-15  5:43   ` KAMEZAWA Hiroyuki
  23 siblings, 1 reply; 27+ messages in thread
From: Andrew Morton @ 2006-02-15  5:33 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki; +Cc: linux-kernel, kyle

KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
>
> User-Agent: Thunderbird 1.5 (Windows/20051201)

uh-oh.

>  Hi, this is unify-pfn_to_page patch take3. thank you for comments on
>  previous version.

I get 100% rejects on all patches due to your email clients's
space-stuffing, which my client (or at least this version of it) doesn't
want to un-space-stuff.

Please resend off-list, using text/plain attachments.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] unify pfn_to_page take3 [0/23]
  2006-02-15  5:33 ` [PATCH] unify pfn_to_page take3 [0/23] Andrew Morton
@ 2006-02-15  5:43   ` KAMEZAWA Hiroyuki
  0 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-15  5:43 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, kyle

Andrew Morton wrote:
> KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
>> User-Agent: Thunderbird 1.5 (Windows/20051201)
> 
> uh-oh.
> 
>>  Hi, this is unify-pfn_to_page patch take3. thank you for comments on
>>  previous version.
> 
> I get 100% rejects on all patches due to your email clients's
> space-stuffing, which my client (or at least this version of it) doesn't
> want to un-space-stuff.
> 
> Please resend off-list, using text/plain attachments.
> 
Ouch, very sorry..
I posted them in usual way, but something was wrong.

I'll do soon.

I'm now comparing inlined and out-of-lined pfn_to_page() on ia64 sparsemem.
I'll post it if it is interesting.

-- Kame


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page
  2006-02-14 11:04 ` [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page KAMEZAWA Hiroyuki
@ 2006-02-23 11:09   ` KAMEZAWA Hiroyuki
  0 siblings, 0 replies; 27+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-02-23 11:09 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki; +Cc: Linux Kernel Mailing List, Andrew Morton, linux-ia64

[-- Attachment #1: Type: text/plain, Size: 124 bytes --]

KAMEZAWA Hiroyuki wrote:
> ia64 has special config CONFIG_VIRTUAL_MEM_MAP.
This vesion had a BUG. This is fixed one.
--Kame

[-- Attachment #2: b022-ia64.patch --]
[-- Type: text/x-patch, Size: 1516 bytes --]


ia64 has special config CONFIG_VIRTUAL_MEM_MAP.
CONFIG_DISCONTIGMEM=y && CONFIG_VIRTUAL_MEM_MAP!=y is bug ?

Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

Index: unify_page_to_pfn/include/asm-ia64/page.h
===================================================================
--- unify_page_to_pfn.orig/include/asm-ia64/page.h
+++ unify_page_to_pfn/include/asm-ia64/page.h
@@ -104,17 +104,25 @@ extern int ia64_pfn_valid (unsigned long
 # define ia64_pfn_valid(pfn) 1
 #endif
 
+#ifdef CONFIG_VIRTUAL_MEM_MAP
+extern struct page *vmem_map;
+#ifdef CONFIG_DISCONTIGMEM
+# define page_to_pfn(page)	((unsigned long) (page - vmem_map))
+# define pfn_to_page(pfn)	(vmem_map + (pfn))
+#endif
+#endif
+
+#if defined(CONFIG_FLATMEM) || defined(CONFIG_SPARSEMEM)
+/* FLATMEM always configures mem_map (mem_map = vmem_map if necessary) */
+#include <asm-generic/memory_model.h>
+#endif
+
 #ifdef CONFIG_FLATMEM
 # define pfn_valid(pfn)		(((pfn) < max_mapnr) && ia64_pfn_valid(pfn))
-# define page_to_pfn(page)	((unsigned long) (page - mem_map))
-# define pfn_to_page(pfn)	(mem_map + (pfn))
 #elif defined(CONFIG_DISCONTIGMEM)
-extern struct page *vmem_map;
 extern unsigned long min_low_pfn;
 extern unsigned long max_low_pfn;
 # define pfn_valid(pfn)		(((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
-# define page_to_pfn(page)	((unsigned long) (page - vmem_map))
-# define pfn_to_page(pfn)	(vmem_map + (pfn))
 #endif
 
 #define page_to_phys(page)	(page_to_pfn(page) << PAGE_SHIFT)

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2006-02-23 11:08 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-14  9:48 [PATCH] unify pfn_to_page take3 [0/23] KAMEZAWA Hiroyuki
2006-02-14  9:54 ` [PATCH] unify pfn_to_page take3 [1/23] generic functions KAMEZAWA Hiroyuki
2006-02-14  9:56 ` [PATCH] unify pfn_to_page take3 [2/23] i386 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14  9:58 ` [PATCH] unify pfn_to_page take3 [3/23] x86_64 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:02 ` [PATCH] unify pfn_to_page take3 [4/23] powerpc pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:12 ` [PATCH] unify pfn_to_page take3 [5/23] alpha pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:19 ` [PATCH] unify pfn_to_page take3 [6/23] arm pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:21 ` [PATCH] unify pfn_to_page take3 [7/23] arm26 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:23 ` [PATCH] unify pfn_to_page take3 [8/23] cris pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:25 ` [PATCH] unify pfn_to_page take3 [9/23] frv pfn_tp_page KAMEZAWA Hiroyuki
2006-02-14 10:28 ` [PATCH] unify pfn_to_page take3 [10/23] h8300 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:33 ` [PATCH] unify pfn_to_page take3 [11/23] m32r pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:36 ` [PATCH] unify pfn_to_page take3 [12/23] mips pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:40 ` [PATCH] unify pfn_to_page take3 [13/23] parisc pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:43 ` [PATCH] unify pfn_to_page take3 [14/23] ppc pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:45 ` [PATCH] unify pfn_to_page take3 [15/23] s390 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:47 ` [PATCH] unify pfn_to_page take3 [16/23] sh pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:51 ` [PATCH] unify pfn_to_page take3 [17/23] sh64 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:54 ` [PATCH] unify pfn_to_page take3 [18/23] sparc pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:56 ` [PATCH] unify pfn_to_page take3 [19/23] sparc64 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:58 ` [PATCH] unify pfn_to_page take3 [20/23] UML pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 10:59 ` [PATCH] unify pfn_to_page take3 [21/23] v850 pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 11:01 ` [PATCH] unify pfn_to_page take3 [22/23] xtensa pfn_to_page KAMEZAWA Hiroyuki
2006-02-14 11:04 ` [PATCH] unify pfn_to_page take3 [23/23] ia64 pfn_to_page KAMEZAWA Hiroyuki
2006-02-23 11:09   ` KAMEZAWA Hiroyuki
2006-02-15  5:33 ` [PATCH] unify pfn_to_page take3 [0/23] Andrew Morton
2006-02-15  5:43   ` KAMEZAWA Hiroyuki

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).