[dpdk-dev] [PATCH] eal: fix bug in x86 cmpset

Rao, Nikhil nikhil.rao at intel.com
Thu Sep 29 15:16:15 CEST 2016



On 9/29/2016 6:35 PM, Christian Ehrhardt wrote:
> The patch misses a fixed: line which it should get I think.

The bug has existed from the day the DPDK was open-sourced, i.e, there wasn't a specific
commit that introduced this feature/bug, hence wasn't sure if it needed the fixes tag.

> 
> But in general If applied -> stable for this one?
> 

Yes.
> 
> On Thu, Sep 29, 2016 at 11:24 PM, Nikhil Rao <nikhil.rao at intel.com <mailto:nikhil.rao at intel.com>> wrote:
> 
>     The original code used movl instead of xchgl, this caused
>     rte_atomic64_cmpset to use ebx as the lower dword of the source
>     to cmpxchg8b instead of the lower dword of function argument "src".
> 
>     Reported-by: Job Abraham <job.abraham at intel.com <mailto:job.abraham at intel.com>>
>     Tested-by: Job Abraham <job.abraham at intel.com <mailto:job.abraham at intel.com>>
>     Signed-off-by: Nikhil Rao <nikhil.rao at intel.com <mailto:nikhil.rao at intel.com>>
>     ---
>      lib/librte_eal/common/include/arch/x86/rte_atomic_32.h | 2 +-
>      1 file changed, 1 insertion(+), 1 deletion(-)
> 
>     diff --git a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
>     index 2e04c75..fb3abf1 100644
>     --- a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
>     +++ b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
>     @@ -81,7 +81,7 @@ rte_atomic64_cmpset(volatile uint64_t *dst, uint64_t exp, uint64_t src)
>                             : "memory" );           /* no-clobber list */
>      #else
>             asm volatile (
>     -            "mov %%ebx, %%edi\n"
>     +            "xchgl %%ebx, %%edi;\n"
>                             MPLOCKED
>                             "cmpxchg8b (%[dst]);"
>                             "setz %[res];"
>     --
>     2.7.4
> 
> 
> 
> 
> -- 
> Christian Ehrhardt
> Software Engineer, Ubuntu Server
> Canonical Ltd


More information about the dev mailing list