Messages in this thread | | | Date | Sun, 07 Dec 2008 18:14:00 +0200 | From | Avi Kivity <> | Subject | Re: [PATCH 1/2] kvm: use modern cpumask primitives, no cpumask_t on stack |
| |
Avi Kivity wrote: > Rusty Russell wrote: >> We're getting rid on on-stack cpumasks for large NR_CPUS. >> >> 1) Use cpumask_var_t and alloc_cpumask_var (a noop normally). Fallback >> code is inefficient but never happens in practice. > > Wow, code duplication from Rusty. Things must be bad. > > Since we're in a get_cpu() here, how about a per_cpu static cpumask > instead? I don't mind the inefficient fallback, just the duplication. >
Btw, for the general case, instead of forcing everyone to duplicate, how about:
cpumask_var_t cpus;
with_cpumask(cpus) { ... code to populate cpus smp_call_function_some(...); } end_with_cpumask(cpus);
Where with_cpumask() allocates cpus, and uses a mutex + static fallback on failure.
May need a couple of variants (spinlock + GFP_NOWAIT, mutex with sleeping allocation).
-- error compiling committee.c: too many arguments to function
| |