[PATCH v2 05/12] ARM: barrier: allow options to be passed to memory barrier instructions

Ming Lei tom.leiming at gmail.com
Fri Jun 21 04:53:14 EDT 2013


On Fri, Jun 21, 2013 at 4:51 PM, Will Deacon <will.deacon at arm.com> wrote:
> Hello,
>
> On Fri, Jun 21, 2013 at 09:37:14AM +0100, Ming Lei wrote:
>> On Thu, Jun 20, 2013 at 10:21 PM, Will Deacon <will.deacon at arm.com> wrote:
>> > On ARMv7, the memory barrier instructions take an optional `option'
>> > field which can be used to constrain the effects of a memory barrier
>> > based on shareability and access type.
>> >
>> > This patch allows the caller to pass these options if required, and
>> > updates the smp_*() barriers to request inner-shareable barriers,
>> > affecting only stores for the _wmb variant. wmb() is also changed to
>> > use the -st version of dsb.
>> >
>> > Reported-by: Albin Tonnerre <albin.tonnerre at arm.com>
>> > Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
>> > Signed-off-by: Will Deacon <will.deacon at arm.com>
>> > ---
>> >  arch/arm/include/asm/assembler.h |  4 ++--
>> >  arch/arm/include/asm/barrier.h   | 32 ++++++++++++++++----------------
>> >  2 files changed, 18 insertions(+), 18 deletions(-)
>
> [...]
>> > @@ -42,7 +42,7 @@
>> >  #elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP)
>> >  #define mb()           do { dsb(); outer_sync(); } while (0)
>> >  #define rmb()          dsb()
>>
>> The above two dsb() are missed?
>
> I don't think so. What would you suggest changing them to? Remember: there's
> no `load' barrier variant in ARMv7, and the non smp_ barriers may be used to
> ensure ordering outside of the inner-shareable domain (for example, in I/O
> accessors).

SY can be omitted, sorry for the noise.

Thanks,
-- 
Ming Lei



More information about the linux-arm-kernel mailing list