On 05/25/2011 03:47 PM, H.J. Lu wrote:
> On Wed, May 25, 2011 at 7:36 AM, Andrew Haley <a...@redhat.com> wrote:
>> On 05/25/2011 01:34 PM, H.J. Lu wrote:
>>> On Wed, May 25, 2011 at 3:26 AM, Andrew Haley <a...@redhat.com> wrote:
>>>> On 05/24/2011 07:28 PM, H.J. Lu wrote:
>>>>
>>>>> This patch implements pause intrinsic suggested by Andi.  OK
>>>>> for trunk?
>>>>
>>>> What does "full memory barrier" here mean?
>>>>
>>>> +@table @code
>>>> +@item void __builtin_ia32_pause (void)
>>>> +Generates the @code{pause} machine instruction with full memory barrier.
>>>> +@end table
>>>>
>>>> There a memory clobber, but no barrier instruction AFAICS.  The
>>>> doc needs to explain it a bit better.
>>>
>>> There are read/load memory barrier, write/store memory barrier and 
>>> full/general
>>> memory barrier.  You can find them at
>>>
>>> http://www.kernel.org/doc/Documentation/memory-barriers.txt
>>>
>>> Should I include a pointer to it?
>>
>> No.  I know perfectly well what memory barriers are.  I'm not asking
>> what "full memory barrier" means.
>>
>> What barrier instruction(s) does __builtin_ia32_pause() generate?
>> All I see in the patch is "rep; nop".  Is that really a full memory
>> barrier?
> 
> It is a full memory barrier in the sense that compiler won't move
> load/store across it.  It is intended for kernel.

Right, so it is, in fact, not a full memory barrier.  I thought not.
I's no more a full memory barrier than a simple asm volatile("") .
The doc needs to explain that a bit better.

Andrew.

Reply via email to