Commit dd0932d9d4301bd58a4d5a634a3a8298c4fc5e24
Committed by
Linus Torvalds
1 parent
7049027c6f
Exists in
master
and in
4 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 */ |