diff options
author | Yasunori Goto <y-goto@jp.fujitsu.com> | 2006-06-27 05:53:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-27 20:32:37 -0400 |
commit | dd0932d9d4301bd58a4d5a634a3a8298c4fc5e24 (patch) | |
tree | 864da70354875dadfcaebd51571122462959530a /arch/ia64 | |
parent | 7049027c6f0098eb6b23b8f6ca65a905541faf81 (diff) |
[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>
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/mm/discontig.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 9153465d7fcc..525b082eb661 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -100,7 +100,7 @@ static int __init build_node_maps(unsigned long start, unsigned long len, | |||
100 | * acpi_boot_init() (which builds the node_to_cpu_mask array) hasn't been | 100 | * acpi_boot_init() (which builds the node_to_cpu_mask array) hasn't been |
101 | * called yet. Note that node 0 will also count all non-existent cpus. | 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 | int cpu, n = 0; | 105 | int cpu, n = 0; |
106 | 106 | ||
@@ -115,7 +115,7 @@ static int __init early_nr_cpus_node(int node) | |||
115 | * compute_pernodesize - compute size of pernode data | 115 | * compute_pernodesize - compute size of pernode data |
116 | * @node: the node id. | 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 | unsigned long pernodesize = 0, cpus; | 120 | unsigned long pernodesize = 0, cpus; |
121 | 121 | ||
@@ -792,6 +792,18 @@ void __init paging_init(void) | |||
792 | zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page)); | 792 | zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page)); |
793 | } | 793 | } |
794 | 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); | ||
805 | } | ||
806 | |||
795 | void arch_refresh_nodedata(int update_node, pg_data_t *update_pgdat) | 807 | void arch_refresh_nodedata(int update_node, pg_data_t *update_pgdat) |
796 | { | 808 | { |
797 | pgdat_list[update_node] = update_pgdat; | 809 | pgdat_list[update_node] = update_pgdat; |