Messages in this thread | | | Date | Sun, 27 Mar 2011 11:59:33 +0200 | From | Avi Kivity <> | Subject | Re: [GIT PULL] SLAB changes for v2.6.39-rc1 |
| |
On 03/24/2011 09:51 PM, Christoph Lameter wrote: > On Thu, 24 Mar 2011, Pekka Enberg wrote: > > > Thanks, Ingo! Christoph, may I have your sign-off for the patch and > > I'll send it to Linus? > > > Subject: SLUB: Write to per cpu data when allocating it > > It turns out that the cmpxchg16b emulation has to access vmalloced > percpu memory with interrupts disabled. If the memory has never > been touched before then the fault necessary to establish the > mapping will not to occur and the kernel will fail on boot. >
I don't get it. Disabling interrupts doesn't disable faults.
> Fix that by reusing the CONFIG_PREEMPT code that writes the > cpu number into a field on every cpu. Writing to the per cpu > area before causes the mapping to be established before we get > to a cmpxchg16b emulation. > > Tested-by: Ingo Molnar<mingo@elte.hu> > Signed-off-by: Christoph Lameter<cl@linux.com> > > --- > mm/slub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: linux-2.6/mm/slub.c > =================================================================== > --- linux-2.6.orig/mm/slub.c 2011-03-24 14:03:10.000000000 -0500 > +++ linux-2.6/mm/slub.c 2011-03-24 14:04:08.000000000 -0500 > @@ -1604,7 +1604,7 @@ static inline void note_cmpxchg_failure( > > void init_kmem_cache_cpus(struct kmem_cache *s) > { > -#if defined(CONFIG_CMPXCHG_LOCAL)&& defined(CONFIG_PREEMPT) > +#ifdef CONFIG_CMPXCHG_LOCAL > int cpu; > > for_each_possible_cpu(cpu) > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- error compiling committee.c: too many arguments to function
| |