Commit dd0932d9d4301bd58a4d5a634a3a8298c4fc5e24
Committed by
Linus Torvalds
1 parent
7049027c6f
Exists in
master
and in
7 other branches
[PATCH] pgdat allocation and update for ia64 of memory hotplug: allocate pgdat and per node data
This is a patch to allocate pgdat and per node data area for ia64. The size for them can be calculated by compute_pernodesize(). Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: "Luck, Tony" <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 2 changed files with 16 additions and 9 deletions Side-by-side Diff
arch/ia64/mm/discontig.c
... | ... | @@ -100,7 +100,7 @@ |
100 | 100 | * acpi_boot_init() (which builds the node_to_cpu_mask array) hasn't been |
101 | 101 | * called yet. Note that node 0 will also count all non-existent cpus. |
102 | 102 | */ |
103 | -static int __init early_nr_cpus_node(int node) | |
103 | +static int __meminit early_nr_cpus_node(int node) | |
104 | 104 | { |
105 | 105 | int cpu, n = 0; |
106 | 106 | |
... | ... | @@ -115,7 +115,7 @@ |
115 | 115 | * compute_pernodesize - compute size of pernode data |
116 | 116 | * @node: the node id. |
117 | 117 | */ |
118 | -static unsigned long __init compute_pernodesize(int node) | |
118 | +static unsigned long __meminit compute_pernodesize(int node) | |
119 | 119 | { |
120 | 120 | unsigned long pernodesize = 0, cpus; |
121 | 121 | |
... | ... | @@ -790,6 +790,18 @@ |
790 | 790 | } |
791 | 791 | |
792 | 792 | zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page)); |
793 | +} | |
794 | + | |
795 | +pg_data_t *arch_alloc_nodedata(int nid) | |
796 | +{ | |
797 | + unsigned long size = compute_pernodesize(nid); | |
798 | + | |
799 | + return kzalloc(size, GFP_KERNEL); | |
800 | +} | |
801 | + | |
802 | +void arch_free_nodedata(pg_data_t *pgdat) | |
803 | +{ | |
804 | + kfree(pgdat); | |
793 | 805 | } |
794 | 806 | |
795 | 807 | void arch_refresh_nodedata(int update_node, pg_data_t *update_pgdat) |
include/linux/memory_hotplug.h
... | ... | @@ -84,13 +84,8 @@ |
84 | 84 | * Now, arch_free_nodedata() is just defined for error path of node_hot_add. |
85 | 85 | * |
86 | 86 | */ |
87 | -static inline pg_data_t *arch_alloc_nodedata(int nid) | |
88 | -{ | |
89 | - return NULL; | |
90 | -} | |
91 | -static inline void arch_free_nodedata(pg_data_t *pgdat) | |
92 | -{ | |
93 | -} | |
87 | +extern pg_data_t *arch_alloc_nodedata(int nid); | |
88 | +extern void arch_free_nodedata(pg_data_t *pgdat); | |
94 | 89 | extern void arch_refresh_nodedata(int nid, pg_data_t *pgdat); |
95 | 90 | |
96 | 91 | #else /* CONFIG_HAVE_ARCH_NODEDATA_EXTENSION */ |