diff options
author | Mike Travis <travis@sgi.com> | 2008-12-31 21:08:47 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-03 13:15:40 -0500 |
commit | 80855f7361eb68205e6bc1981928629d9b02d5c9 (patch) | |
tree | 029e78df08989c8d335b67a8031c784136a57539 /arch | |
parent | 2fdf66b491ac706657946442789ec644cc317e1a (diff) |
cpumask: use alloc_cpumask_var_node where appropriate
Impact: Reduce inter-node memory traffic.
Reduces inter-node memory traffic (offloading the global system bus)
by allocating referenced struct cpumasks on the same node as the
referring struct.
Signed-off-by: Mike Travis <travis@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 5 | ||||
-rw-r--r-- | arch/x86/kernel/io_apic.c | 6 |
2 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c index d0a001093b2d..28102ad1a363 100644 --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -547,8 +547,9 @@ static int __init acpi_cpufreq_early_init(void) | |||
547 | return -ENOMEM; | 547 | return -ENOMEM; |
548 | } | 548 | } |
549 | for_each_possible_cpu(i) { | 549 | for_each_possible_cpu(i) { |
550 | if (!alloc_cpumask_var(&per_cpu_ptr(acpi_perf_data, i) | 550 | if (!alloc_cpumask_var_node( |
551 | ->shared_cpu_map, GFP_KERNEL)) { | 551 | &per_cpu_ptr(acpi_perf_data, i)->shared_cpu_map, |
552 | GFP_KERNEL, cpu_to_node(i))) { | ||
552 | 553 | ||
553 | /* Freeing a NULL pointer is OK: alloc_percpu zeroes. */ | 554 | /* Freeing a NULL pointer is OK: alloc_percpu zeroes. */ |
554 | free_acpi_perf_data(); | 555 | free_acpi_perf_data(); |
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c index 3e070bb961d7..a25c3f76b8ac 100644 --- a/arch/x86/kernel/io_apic.c +++ b/arch/x86/kernel/io_apic.c | |||
@@ -212,11 +212,11 @@ static struct irq_cfg *get_one_free_irq_cfg(int cpu) | |||
212 | 212 | ||
213 | cfg = kzalloc_node(sizeof(*cfg), GFP_ATOMIC, node); | 213 | cfg = kzalloc_node(sizeof(*cfg), GFP_ATOMIC, node); |
214 | if (cfg) { | 214 | if (cfg) { |
215 | /* FIXME: needs alloc_cpumask_var_node() */ | 215 | if (!alloc_cpumask_var_node(&cfg->domain, GFP_ATOMIC, node)) { |
216 | if (!alloc_cpumask_var(&cfg->domain, GFP_ATOMIC)) { | ||
217 | kfree(cfg); | 216 | kfree(cfg); |
218 | cfg = NULL; | 217 | cfg = NULL; |
219 | } else if (!alloc_cpumask_var(&cfg->old_domain, GFP_ATOMIC)) { | 218 | } else if (!alloc_cpumask_var_node(&cfg->old_domain, |
219 | GFP_ATOMIC, node)) { | ||
220 | free_cpumask_var(cfg->domain); | 220 | free_cpumask_var(cfg->domain); |
221 | kfree(cfg); | 221 | kfree(cfg); |
222 | cfg = NULL; | 222 | cfg = NULL; |