[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <4F03361C020000780006A3A5@nat28.tlf.novell.com>
Date: Tue, 03 Jan 2012 16:08:44 +0000
From: "Jan Beulich" <JBeulich@...e.com>
To: "Eric Dumazet" <eric.dumazet@...il.com>
Cc: <mingo@...e.hu>, <tglx@...utronix.de>,
"Christoph Lameter" <cl@...ux.com>, <linux-kernel@...r.kernel.org>,
"netdev" <netdev@...r.kernel.org>, <hpa@...or.com>
Subject: Re: [PATCH] x86: fix and improve cmpxchg_double{,_local}()
>>> On 03.01.12 at 16:41, Eric Dumazet <eric.dumazet@...il.com> wrote:
> Le mardi 03 janvier 2012 à 16:15 +0100, Eric Dumazet a écrit :
>
>> Very old it seems...
>>
>> arch/x86/lib/atomic64_cx8_32.S
>>
>> all "jxx 1b" are wrong if a LOCK_PREFIX is included after the 1: label
>>
>> 1:
>> inst1
>> LOCK_PREFIX
>> cmpxchg8b (%ebp)
>> jne 1b / jumps to beginning of LOCK_PREFIX, inst1 is not replayed
>>
>>
>>
>>
>
> A possible fix would be to not use "1" label in LOCK_PREFIX macro,
> but 672 magic value.
>
> Not sure if we can use a local label in a macro ?
"1" and "672" are both local labels, so both are okay. As long as there's
no other (colliding) use of 672 anywhere, that would seem to be the
preferred fix (feel free to put my ack on the patch when you formally
submit it).
Jan
> arch/x86/include/asm/alternative-asm.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/include/asm/alternative-asm.h
> b/arch/x86/include/asm/alternative-asm.h
> index 091508b..952bd01 100644
> --- a/arch/x86/include/asm/alternative-asm.h
> +++ b/arch/x86/include/asm/alternative-asm.h
> @@ -4,10 +4,10 @@
>
> #ifdef CONFIG_SMP
> .macro LOCK_PREFIX
> -1: lock
> +672: lock
> .section .smp_locks,"a"
> .balign 4
> - .long 1b - .
> + .long 672b - .
> .previous
> .endm
> #else
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists