From 4b193177895abbe4c2add6e9fb9511db70f3065e Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sat, 10 Jan 2009 21:58:09 -0800 Subject: [PATCH] --- yaml --- r: 136369 b: refs/heads/master c: 2f8975fbcf07103afab0bbaea5f5b1a9967ffb86 h: refs/heads/master i: 136367: 7073e3991cfa6d9d73ea3e20bd3295efc7be87ab v: v3 --- [refs] | 2 +- trunk/drivers/net/sfc/efx.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 5bd6c47e0eca..0bd3ccee962c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7df8ed164996cd2c6aca9674388be6ef78d8b37 +refs/heads/master: 2f8975fbcf07103afab0bbaea5f5b1a9967ffb86 diff --git a/trunk/drivers/net/sfc/efx.c b/trunk/drivers/net/sfc/efx.c index f2e56ceee0ea..101c00a7bb73 100644 --- a/trunk/drivers/net/sfc/efx.c +++ b/trunk/drivers/net/sfc/efx.c @@ -854,20 +854,27 @@ static void efx_fini_io(struct efx_nic *efx) * interrupts across them. */ static int efx_wanted_rx_queues(void) { - cpumask_t core_mask; + cpumask_var_t core_mask; int count; int cpu; - cpus_clear(core_mask); + if (!alloc_cpumask_var(&core_mask, GFP_KERNEL)) { + printk(KERN_WARNING + "efx.c: allocation failure, irq balancing hobbled\n"); + return 1; + } + + cpumask_clear(core_mask); count = 0; for_each_online_cpu(cpu) { - if (!cpu_isset(cpu, core_mask)) { + if (!cpumask_test_cpu(cpu, core_mask)) { ++count; - cpumask_or(&core_mask, &core_mask, + cpumask_or(core_mask, core_mask, topology_core_cpumask(cpu)); } } + free_cpumask_var(core_mask); return count; }