Messages in this thread Patch in this message |  | | | From | Rusty Russell <> | | Subject | Re: [PATCH 7/8] cpumask: convert misc driver functions | | Date | Mon, 29 Dec 2008 12:58:35 +1030 |
| |
On Sunday 21 December 2008 09:52:39 Ben Hutchings wrote: > I assume you're moving the allocation up to efx_probe_nic() because > efx_wanted_rx_queues() and efx_probe_interrupts() cannot return failure. > It really isn't worth exposing that detail up the call chain though. I > think it's acceptable for efx_wanted_rx_queues() to log an error message > and return 1 in the exceedingly unlikely case that the allocation fails.
OK, fair call. I was trying trying hard not to break anything.
How's this?
cpumask: convert drivers/net/sfc
Remove a cpumask from the stack. Ben Hutchings indicated that printing a warning and returning 1 was acceptable for the corner case where allocation fails.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Cc: Ben Hutchings <bhutchings@solarflare.com>
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c --- a/drivers/net/sfc/efx.c +++ b/drivers/net/sfc/efx.c @@ -854,20 +854,27 @@ static void efx_fini_io(struct efx_nic * * 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; }
|  |