Message ID | 20210711104105.505728-5-leo.yan@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | perf: Refine barriers for AUX ring buffer | expand |
On Sun, Jul 11, 2021 at 06:40:58PM +0800, Leo Yan wrote: > Add barrier wmb() to separate the AUX data store and aux_head store. > > Signed-off-by: Leo Yan <leo.yan@linaro.org> > --- > arch/x86/events/intel/bts.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c > index 6320d2cfd9d3..4a015d160bc5 100644 > --- a/arch/x86/events/intel/bts.c > +++ b/arch/x86/events/intel/bts.c > @@ -209,6 +209,9 @@ static void bts_update(struct bts_ctx *bts) > } else { > local_set(&buf->data_size, head); > } > + > + /* The WMB separates data store and aux_head store matches. */ > + wmb(); Alexander, last time you mentioned (on IRC) that BTS is supposed to be coherent, in which case we can probably get away with just a compiler barrier. Can you confirm? That said; this BTS crud is so horrifically slow, an extra MFENCE isn't going to matter one way or another.
diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c index 6320d2cfd9d3..4a015d160bc5 100644 --- a/arch/x86/events/intel/bts.c +++ b/arch/x86/events/intel/bts.c @@ -209,6 +209,9 @@ static void bts_update(struct bts_ctx *bts) } else { local_set(&buf->data_size, head); } + + /* The WMB separates data store and aux_head store matches. */ + wmb(); } static int
Add barrier wmb() to separate the AUX data store and aux_head store. Signed-off-by: Leo Yan <leo.yan@linaro.org> --- arch/x86/events/intel/bts.c | 3 +++ 1 file changed, 3 insertions(+)