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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>