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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 24 Mar 2011, Pekka Enberg wrote:

> > I forced the fallback to the _emu function to occur but could not trigger
> > the bug in kvm.
>
> That's not the problem. I'm sure the fallback is just fine. What I'm
> saying is that the fallback is *not patched* to kernel text on Ingo's
> machines because alternative_instructions() happens late in the boot!
> So the problem is that on Ingo's boxes (that presumably have old AMD
> CPUs) we execute cmpxchg16b, not the fallback code.

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




--
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>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]