[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <48B7EEA2.7090300@sgi.com>
Date: Fri, 29 Aug 2008 14:42:10 +0200
From: Jes Sorensen <jes@....com>
To: David Miller <davem@...emloft.net>
CC: travis@....com, mingo@...e.hu, torvalds@...ux-foundation.org,
Alan.Brunelle@...com, tglx@...utronix.de, rjw@...k.pl,
linux-kernel@...r.kernel.org, kernel-testers@...r.kernel.org,
akpm@...ux-foundation.org, arjan@...ux.intel.com,
rusty@...tcorp.com.au
Subject: Re: [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected
David Miller wrote:
>>> Otherwise you have to modify cpumask_t objects and thus pluck
>>> them onto the stack where they take up silly amounts of space.
>> Yes, I had proposed either modifying, or supplementing a new
>> smp_call function to pass the cpumask_t as a pointer (similar
>> to set_cpus_allowed_ptr.) But an ABI change such as this was
>> not well received at the time.
>
> What it seems to come down to is that any cpumask_t not inside of
> a dynamically allocated object should be marked const.
>
> And that is something we can enforce at compile time.
>
> Linus has just suggested dynamically allocating cpumask_t's
> for such cases but I don't see that as the fix either.
>
> Just mark them const and enforce that cpumask_t objects can only
> be modified when they appear in dynamically allocated objects.
Dave and others,
Sorry if I jump into the middle of the thread. Stopped subscribing to
lkml for a while, so this is through the archives.
Ran into some of these issues with KVM too, and noticed just how much
we pass cpumask_t around in the smp_call functions :-( In fact, the
only arch that did pretty well on this front was sparc64.
I totally agree, that marking them const makes a ton of sense, but at
the same time I suggest we convert smp_call_function_mask() to take a
pointer to the cpumask_t. I whipped up the following patch, which cuts
down the amont of memcpy calls emitted quite a fair bit.
I have only tested this on ia64, but it boots, so it's obviously
perfect<tm> :-)
Comments, suggestions welcome.
I have a followup patch that makes virt/kvm/kvm_main.c use the new
interface.
Cheers,
Jes
View attachment "0040-smp-call-cpumask.patch" of type "text/plain" (14274 bytes)
Powered by blists - more mailing lists