aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Travis <travis@sgi.com>2008-12-31 18:08:47 -0800
committerIngo Molnar <mingo@elte.hu>2009-01-03 19:15:40 +0100
commit80855f7361eb68205e6bc1981928629d9b02d5c9 (patch)
tree029e78df08989c8d335b67a8031c784136a57539
parent2fdf66b491ac706657946442789ec644cc317e1a (diff)
downloadkernel_goldelico_gta04-80855f7361eb68205e6bc1981928629d9b02d5c9.zip
kernel_goldelico_gta04-80855f7361eb68205e6bc1981928629d9b02d5c9.tar.gz
kernel_goldelico_gta04-80855f7361eb68205e6bc1981928629d9b02d5c9.tar.bz2
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>
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c5
-rw-r--r--arch/x86/kernel/io_apic.c6
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 d0a0010..28102ad 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)
return -ENOMEM;
}
for_each_possible_cpu(i) {
- if (!alloc_cpumask_var(&per_cpu_ptr(acpi_perf_data, i)
- ->shared_cpu_map, GFP_KERNEL)) {
+ if (!alloc_cpumask_var_node(
+ &per_cpu_ptr(acpi_perf_data, i)->shared_cpu_map,
+ GFP_KERNEL, cpu_to_node(i))) {
/* Freeing a NULL pointer is OK: alloc_percpu zeroes. */
free_acpi_perf_data();
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index 3e070bb..a25c3f7 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)
cfg = kzalloc_node(sizeof(*cfg), GFP_ATOMIC, node);
if (cfg) {
- /* FIXME: needs alloc_cpumask_var_node() */
- if (!alloc_cpumask_var(&cfg->domain, GFP_ATOMIC)) {
+ if (!alloc_cpumask_var_node(&cfg->domain, GFP_ATOMIC, node)) {
kfree(cfg);
cfg = NULL;
- } else if (!alloc_cpumask_var(&cfg->old_domain, GFP_ATOMIC)) {
+ } else if (!alloc_cpumask_var_node(&cfg->old_domain,
+ GFP_ATOMIC, node)) {
free_cpumask_var(cfg->domain);
kfree(cfg);
cfg = NULL;