On Thu, 24 Mar 2011, Eric Dumazet wrote: > Le jeudi 24 mars 2011 Ã 13:47 -0500, Christoph Lameter a Ãcrit : > > > Hmmm.. Could be. KVM would not really disable interrupts so this may > > explain that the test case works here. > > > > Simple fix would be to do a load before the cli I guess. > > > > Hmm... > > If we have a preemption and migration right after this load... Cannot be the issue here since init_kmem_cache_cpus already touches the per cpu data. At least if CONFIG_PREEMPT is on. Is it on? void init_kmem_cache_cpus(struct kmem_cache *s) { #if defined(CONFIG_CMPXCHG_LOCAL) && defined(CONFIG_PREEMPT) int cpu; for_each_possible_cpu(cpu) per_cpu_ptr(s->cpu_slab, cpu)->tid = init_tid(cpu); #endif }