From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 1/2] kvm: use modern cpumask primitives, no cpumask_t on stack Date: Sun, 07 Dec 2008 18:14:00 +0200 Message-ID: <493BF648.6060504@redhat.com> References: <200812072125.14416.rusty@rustcorp.com.au> <493BF144.9080106@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm-devel , linux-kernel@vger.kernel.org, Mike Travis To: Rusty Russell Return-path: Received: from mx2.redhat.com ([66.187.237.31]:44668 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753725AbYLGQOH (ORCPT ); Sun, 7 Dec 2008 11:14:07 -0500 In-Reply-To: <493BF144.9080106@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 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