Re: [GIT PULL] SLAB changes for v2.6.39-rc1

From: Eric Dumazet
Date: Thu Mar 24 2011 - 14:22:21 EST


Le jeudi 24 mars 2011 Ã 13:15 -0500, Christoph Lameter a Ãcrit :

> But then we would get the bug in kmem_cache_alloc() and not in the
> *_emu() function. So the _emu is executing but failing on Ingo's system
> but not on mine. Question is why.
>
> For some reason the first reference to %gs:(%rsi) wont work right on his
> system:
>
> From arch/x86/lib/cmpxchg16b_emu
>
> #
> # Emulate 'cmpxchg16b %gs:(%rsi)' except we return the result in %al not
> # via the ZF. Caller will access %al to get result.
> #
> # Note that this is only useful for a cpuops operation. Meaning that we
> # do *not* have a fully atomic operation but just an operation that is
> # *atomic* on a single cpu (as provided by the this_cpu_xx class of
> # macros).
> #
> this_cpu_cmpxchg16b_emu:
> pushf
> cli
>
> cmpq %gs:(%rsi), %rax
> jne not_same
> cmpq %gs:8(%rsi), %rdx
> jne not_same
>
> movq %rbx, %gs:(%rsi)
> movq %rcx, %gs:8(%rsi)
>
> popf
> mov $1, %al
> ret
>
> not_same:
> popf
> xor %al,%al
> ret
>
> CFI_ENDPROC

Random guess

Masking interrupts, and accessing vmalloc() based memory for the first
time ?




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/