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.ha...@windriver.com]
> Sent: Thursday, October 29, 2015 2:01 PM
> To: Bystricky, Juro; openembedded-core@lists.openembedded.org;
> jurobystri...@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.bystri...@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.bystri...@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"
> >

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to