[OE-core] [PATCH 1/1] glibc: Allow 64 bit atomics for x86

Bystricky, Juro juro.bystricky at intel.com
Thu Oct 29 21:31:14 UTC 2015


Thanks for your quick reply.
Yes, the way you propose to apply the patch is cleaner, leaving i386 and i486 unaffected. 
However, they do not work already, so I cannot  do them any more harm.
Quark does support cmpxchg8b, so in theory it should work. But as you pointed out,
there are many errata for Quark atomic ops, so it is not guaranteed.




> -----Original Message-----
> From: Mark Hatle [mailto:mark.hatle at windriver.com]
> Sent: Thursday, October 29, 2015 2:01 PM
> To: Bystricky, Juro; openembedded-core at lists.openembedded.org;
> jurobystricky at hotmail.com
> Subject: Re: [OE-core] [PATCH 1/1] glibc: Allow 64 bit atomics for x86
> 
> On 10/29/15 3:43 PM, Juro Bystricky wrote:
> > This patch fixes [YOCTO#8140].
> >
> > The fix consist of allowing 64bit atomic ops for x86.
> > This should be safe for i586 and newer CPUs.
> > It also makes the synchronization more efficient.
> 
> I'm not sure this is correct.. see below.
> 
> > Signed-off-by: Juro Bystricky <juro.bystricky at intel.com>
> > ---
> >  .../glibc/glibc/use_64bit_atomics.patch            | 24
> ++++++++++++++++++++++
> >  meta/recipes-core/glibc/glibc_2.22.bb              |  1 +
> >  2 files changed, 25 insertions(+)
> >  create mode 100644
> > meta/recipes-core/glibc/glibc/use_64bit_atomics.patch
> >
> > diff --git a/meta/recipes-core/glibc/glibc/use_64bit_atomics.patch
> > b/meta/recipes-core/glibc/glibc/use_64bit_atomics.patch
> > new file mode 100644
> > index 0000000..eb7f2b2
> > --- /dev/null
> > +++ b/meta/recipes-core/glibc/glibc/use_64bit_atomics.patch
> > @@ -0,0 +1,24 @@
> > +This patch alows using 64 bit atomic instructions on a
> > +32 bit platform. This is safe, providing x86 is Pentium or later
> > +(would not work on i386, i486). Using 64 bit atomic instructions
> > +bypasses code containing a bug as documented in
> > +https://bugzilla.yoctoproject.org/show_bug.cgi?id=8140
> > +
> > +Upstream-Status: TBD
> > +
> > +Signed-off-by: Juro Bystricky <juro.bystricky at intel.com>
> > +
> > +
> > +Index: libc/sysdeps/i386/i486/bits/atomic.h
> >
> +=========================================================
> ==========
> > +--- libc.orig/sysdeps/i386/i486/bits/atomic.h
> > ++++ libc/sysdeps/i386/i486/bits/atomic.h
> > +@@ -54,7 +54,7 @@ typedef uintmax_t uatomic_max_t;  # endif  #endif
> > +
> > +-#define __HAVE_64B_ATOMICS 0
> > ++#define __HAVE_64B_ATOMICS 1
> > + #define USE_ATOMIC_COMPILER_BUILTINS 0
> 
> The patch will enable it for i486 and above, but you comment says i486 isn't
> supported.
> 
> Normally you'd resolve this by creating a new
> 
> sysdeps/i386/i586/bits/atomic.h
> 
> (include or copy the original file)
> 
> and adjust the HAVE_64B_ATOMICS value at that point.
> 
> Then the sources will work for older systems and newer.
> 
> While 386/486 is likely not used much these days... I do also have a concern
> about Quark CPUs.  Do you know if they support the 64B ATOMICS?  (I
> suspect they do not.)  If that is the case, we might need to special case this
> patch and make it 'i686' and above?
> 
> --Mark
> 
> > +
> > diff --git a/meta/recipes-core/glibc/glibc_2.22.bb
> > b/meta/recipes-core/glibc/glibc_2.22.bb
> > index 020e417..2494ad7 100644
> > --- a/meta/recipes-core/glibc/glibc_2.22.bb
> > +++ b/meta/recipes-core/glibc/glibc_2.22.bb
> > @@ -50,6 +50,7 @@ SRC_URI_append_class-nativesdk = "\
> >             file://0001-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-
> .patch \
> >             file://0002-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-
> .patch \
> >
> > file://0003-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
> > \
> > +           file://use_64bit_atomics.patch \
> >  "
> >
> >  S = "${WORKDIR}/git"
> >




More information about the Openembedded-core mailing list