From: Yasunori Goto Date: Tue, 27 Jun 2006 09:53:33 +0000 (-0700) Subject: [PATCH] pgdat allocation for new node add (refresh node_data[]) X-Git-Tag: v2.6.18-rc1~581 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=10ad400b49aca15ecf83b0fde7e35e4064b15c85;p=linux-2.6 [PATCH] pgdat allocation for new node add (refresh node_data[]) Refresh NODE_DATA() for generic archs. In this case, NODE_DATA(nid) == node_data[nid]. node_data[] is array of address of pgdat. So, refresh is quite simple. Signed-off-by: Yasunori Goto Signed-off-by: KAMEZAWA Hiroyuki Cc: Dave Hansen Cc: "Brown, Len" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 1831874988..a56df7bf02 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -374,6 +374,10 @@ config HAVE_ARCH_EARLY_PFN_TO_NID def_bool y depends on NEED_MULTIPLE_NODES +config HAVE_ARCH_NODEDATA_EXTENSION + def_bool y + depends on NUMA + config IA32_SUPPORT bool "Support for Linux/x86 binaries" help diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index c6fd2c0323..569b1f6c27 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -91,6 +91,9 @@ static inline pg_data_t *arch_alloc_nodedata(int nid) static inline void arch_free_nodedata(pg_data_t *pgdat) { } +static inline void arch_refresh_nodedata(int nid, pg_data_t *pgdat) +{ +} #else /* CONFIG_HAVE_ARCH_NODEDATA_EXTENSION */ @@ -114,6 +117,12 @@ static inline void arch_free_nodedata(pg_data_t *pgdat) */ #define generic_free_nodedata(pgdat) kfree(pgdat) +extern pg_data_t *node_data[]; +static inline void arch_refresh_nodedata(int nid, pg_data_t *pgdat) +{ + node_data[nid] = pgdat; +} + #else /* !CONFIG_NUMA */ /* never called */ @@ -125,6 +134,9 @@ static inline pg_data_t *generic_alloc_nodedata(int nid) static inline void generic_free_nodedata(pg_data_t *pgdat) { } +static inline void arch_refresh_nodedata(int nid, pg_data_t *pgdat) +{ +} #endif /* CONFIG_NUMA */ #endif /* CONFIG_HAVE_ARCH_NODEDATA_EXTENSION */