On Wed, 22 Feb 2006, KAMEZAWA Hiroyuki wrote:Oh, yes. ia64 doesn't includes asm-generic/memory_model.h when DISCONTIGMEM.
This patch removes zone_mem_map.
Note that IA64 does not seem to depend on zone_mem_map...
There are several types of NODE_DATA definitions.Index: test/include/asm-generic/memory_model.h
===================================================================
--- test.orig/include/asm-generic/memory_model.h
+++ test/include/asm-generic/memory_model.h
@@ -47,9 +47,9 @@ extern unsigned long page_to_pfn(struct
#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; \
+ struct pglist_data *__pgdat = NODE_DATA(page_to_nid(__pg)); \
+ (unsigned long)(__pg - __pgdat->node_mem_map) + \
+ __pgdat->node_start_pfn; \
})
NODE_DATA is an arch specific lookup, If it always is a table lookup
then the performance will be comparable to page_zone because that also involves one table lookup.