All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Will Deacon <will.deacon@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>, David Ahern <dsahern@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Question about barriers for ARM on tools/perf/
Date: Fri, 8 May 2015 11:04:59 -0300	[thread overview]
Message-ID: <20150508140459.GI7862@kernel.org> (raw)

Hi Will,

	I am working on moving the stuff we have for mb/rmb/wmb from
tools/perf/perf-sys.h to tools/include/asm/barrier.h, redirecting
to tools/arch/$ARCH/include/asm/barrier.h, to make it look like the
kernel and who knows, at some point even share the source code.

	For now I am getting just what is needed for work on having
atomic.h done in the same fashion, to implement refcounts for various
perf data structures, starting with struct thread, for which I have
a patch that makes perf survive in high core count machines where it
currently crashes, most nobably 'perf top'.

	While doing that I noticed that arm64 implementation, lastly
fixed in:

  f428ebd184c82a7914b2aa7e9f868918aaf7ea78
  perf tools: Fix AAAAARGH64 memory barriers

By peterz, it implements those barriers as:

#define mb()            asm volatile("dmb ish" ::: "memory")
#define wmb()           asm volatile("dmb ishst" ::: "memory")
#define rmb()           asm volatile("dmb ishld" ::: "memory")

Which are not the same as in the kernel, i.e. in
arch/arm64/include/asm/barrier.h, where the above are really smp_mb,
smp_wmb and smp_rmb.

Would it be enough for us to use the same implementation as the kernel?
I.e. make it be:

#define mb()            asm volatile("dsb sy" ::: "memory")
#define wmb()           asm volatile("dsb st" ::: "memory")
#define rmb()           asm volatile("dsb ld" ::: "memory")

? If so I would then use those dsb/dmb macros, etc, to get tools/ to use
the proper instructions, etc.

I need now, for arm64, smp_mb, that is used by atomic_sub_return(), that
in turn is used by atomic_dec_and_test(), that I need for refcounts.

Can you clarify?

- Arnaldo

             reply	other threads:[~2015-05-08 14:05 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-08 14:04 Arnaldo Carvalho de Melo [this message]
2015-05-08 14:16 ` Question about barriers for ARM on tools/perf/ Peter Zijlstra
2015-05-08 14:21   ` Will Deacon
2015-05-08 14:23     ` Peter Zijlstra
2015-05-08 14:21 ` Will Deacon
2015-05-08 14:25   ` Peter Zijlstra
2015-05-08 14:27     ` Will Deacon
2015-05-08 14:36       ` David Ahern
2015-05-08 14:37     ` Arnaldo Carvalho de Melo
2015-05-08 14:48       ` Will Deacon
2015-05-08 14:57         ` Arnaldo Carvalho de Melo
2015-05-08 15:27           ` Peter Zijlstra
2015-05-08 16:45             ` Will Deacon
2015-05-08 18:18               ` Arnaldo Carvalho de Melo
2015-05-08 14:52       ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150508140459.GI7862@kernel.org \
    --to=acme@kernel.org \
    --cc=dsahern@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@gmail.com \
    --cc=peterz@infradead.org \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.