Re: [Gc] Fwd: Re: AArch64: Shareability domain for dm b st overly conservative (#11)

Ivan Maidanski <ivmai-JGs/[email protected]> Sat, 01 Nov 2014 22:10:00 +0300
Newsgroups gmane.comp.programming.garbage-collection.boehmgc
Message-ID <[email protected]>
 Hi Yvan and Hans,

dmb st -> dmb ishst done:  https://github.com/ivmai/libatomic_ops/commit/719d90c7f805189f133cf9a140eb79879bf98e92

About GCC builtin primitives:  https://github.com/ivmai/libatomic_ops/blob/master/src/atomic_ops/sysdeps/gcc/generic.h already has AO_nop_write defined as ATOMIC_RELEASE. But we still use assembly-based nop_write definition for AArch64 because ATOMIC_RELEASE does not emitt "dmb ishst" (at least at the moment when the code was written). Today I rechecked which dmb type do builtin primitives generate for Arm (I used NDK r9b gcc 4.8) - ATOMIC_RELEASE is translated to "dmb sy".

Tue, 28 Oct 2014 11:29:33 +0100 from Yvan Roux <[email protected]>:
>Hi, (sorry for my late answer, I'm on vacation with a limited network access)
>
>Yes I think I was too conservative when I implemented it, I took the
>libatomic_ops arm port and GCC as example which both use the system
>domain, but now AArch64 GCC atomic uses already inner shareable domain
>and there is a proposition to change the Arm (32-bit) memory-barrier:
>
>https://gcc.gnu.org/ml/gcc-patches/2014-03/msg00489.html
>
>Thanks,
>Yvan
>
>On 28 October 2014 00:24, Hans Boehm < [email protected] > wrote:
>> I agree that we should be using "dmb ish"/"dmb ishst" everywhere.  The plain
>> variants are theoretically slower, and should not be needed.  That said,
>> with limited experimentation, I have not yet found a processor
>> implementation for which it actually matters, though I have heard that they
>> exist.
>>
>> Note that the "st"/"ishst" barriers are actually quite weak and, as the
>> libatomic_ops documentation states, usually not what you really want.  And
>> at this stage we should really move towards the C11 primitives anyway.
>>
>> This all applies to both Aarch64 and Arm32.
>>
>> Hans
>>
>> On Sat, Oct 25, 2014 at 10:29 AM, Ivan Maidanski < [email protected] > wrote:
>>>
>>> Forwarding to ML..
>>>
>>> From: Ivan Maidanski < [email protected] >
>>> To: Yvan Roux < [email protected] >, Hans Boehm < [email protected] >
>>> CC: ivmai/libatomic_ops < [email protected] >,
>>> ivmai/libatomic_ops
>>> < reply+i-46004519-50324839f75648d459559128d780ac126d37fdde-460469@reply.github.com >,
>>> Boehm GC < [email protected] >
>>> Date: Thu, 23 Oct 2014 12:36:39 +0400
>>> Subject: Re: [libatomic_ops] AArch64: Shareability domain for dmb st
>>> overly conservative (#11)
>>>
>>> Hi Yvan and Hans,
>>>
>>> Is the proposed change correct for ARM64 AO_nop_write? What's about 32-bit
>>> ARM?
>>>
>>> Thank you
>>>
>>> Thu, 16 Oct 2014 09:08:26 -0700 from stevecapperlinaro
>>> < [email protected] >:
>>>
>>> Hello,
>>> In src/atomic_ops/sysdeps/gcc/aarch64.h, we have the following code:
>>> __asm__ __volatile__("dmb st" : : : "memory");
>>>
>>> This will target the system domain and thus be overly conservative as the
>>> CPUs will occupy the inner shareable domain.
>>>
>>> Could this please be changed to:
>>> __asm__ __volatile__("dmb ishst" : : : "memory");
>>>
>>> That way the barriers will occupy the inner shareable domain.
>>>
>>> Thanks,
>>> Steve Capper
>>>
>>> —
>>>
>>>
>>>
>>> ________________________________
>>>
>>> _______________________________________________
>>> bdwgc mailing list
>>>  [email protected]
>>>  https://lists.opendylan.org/mailman/listinfo/bdwgc
>>
>>
>>
>> _______________________________________________
>> bdwgc mailing list
>>  [email protected]
>>  https://lists.opendylan.org/mailman/listinfo/bdwgc
>_______________________________________________
>bdwgc mailing list
>[email protected]
>https://lists.opendylan.org/mailman/listinfo/bdwgc

_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc