Re: [PATCH v2 5/8] perf auxtrace: Change to use SMP memory barriers

From: Adrian Hunter
Date: Mon Jun 07 2021 - 06:02:42 EST


On 2/06/21 1:30 pm, Leo Yan wrote:
> The kernel and the userspace tool can access the AUX ring buffer head
> and tail from different CPUs, thus SMP class of barriers are required
> on SMP system.
>
> This patch changes to use SMP barriers to replace mb() and rmb()
> barriers.
>
> Signed-off-by: Leo Yan <leo.yan@xxxxxxxxxx>

Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>

> ---
> tools/perf/util/auxtrace.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/util/auxtrace.h b/tools/perf/util/auxtrace.h
> index a4fbb33b7245..42b7ef811bde 100644
> --- a/tools/perf/util/auxtrace.h
> +++ b/tools/perf/util/auxtrace.h
> @@ -444,7 +444,7 @@ static inline u64 auxtrace_mmap__read_snapshot_head(struct auxtrace_mmap *mm)
> u64 head = READ_ONCE(pc->aux_head);
>
> /* Ensure all reads are done after we read the head */
> - rmb();
> + smp_rmb();
> return head;
> }
>
> @@ -458,7 +458,7 @@ static inline u64 auxtrace_mmap__read_head(struct auxtrace_mmap *mm)
> #endif
>
> /* Ensure all reads are done after we read the head */
> - rmb();
> + smp_rmb();
> return head;
> }
>
> @@ -470,7 +470,7 @@ static inline void auxtrace_mmap__write_tail(struct auxtrace_mmap *mm, u64 tail)
> #endif
>
> /* Ensure all reads are done before we write the tail out */
> - mb();
> + smp_mb();
> #if BITS_PER_LONG == 64 || !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
> pc->aux_tail = tail;
> #else
>