From: Ingo Molnar <mingo@kernel.org>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: "struct perf_sample_data" alignment
Date: Sat, 6 Mar 2021 14:14:42 +0100 [thread overview]
Message-ID: <20210306131442.GA552533@gmail.com> (raw)
In-Reply-To: <CAADnVQLBrdBggyP1kBVrRQ2JDG+-5HzWAiLR7e-bNuLsKu2PkQ@mail.gmail.com>
* Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote:
> > This seems to be it... (completely untested)
> >
> > ---
> > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
> > index 3f7f89ea5e51..918a296d2ca2 100644
> > --- a/include/linux/perf_event.h
> > +++ b/include/linux/perf_event.h
> > @@ -1032,7 +1032,9 @@ struct perf_sample_data {
> > u64 cgroup;
> > u64 data_page_size;
> > u64 code_page_size;
> > -} ____cacheline_aligned;
> > +};
> > +
> > +typedef struct perf_sample_data perf_sample_data_t ____cacheline_aligned;
> >
> > /* default value for data source */
> > #define PERF_MEM_NA (PERF_MEM_S(OP, NA) |\
> > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
> > index b0c45d923f0f..f32c623abef6 100644
> > --- a/kernel/trace/bpf_trace.c
> > +++ b/kernel/trace/bpf_trace.c
> > @@ -923,7 +923,7 @@ __bpf_perf_event_output(struct pt_regs *regs, struct bpf_map *map,
> > * bpf_perf_event_output
> > */
> > struct bpf_trace_sample_data {
> > - struct perf_sample_data sds[3];
> > + perf_sample_data_t sds[3];
>
> bpf side doesn't care about about cacheline aligned.
> No need to add new typedef just for that.
So this structure is not supposed to be exposed to any ABI anywhere.
I did a (non-exhaustive) search of tooling, and there doesn't appear
to be any accidental exposure.
The in-kernel ABI interaction appears to be the following:
- In __perf_event_header_size() we only use fields within
perf_sample_data to size the header. Alignment won't change any of
the output.
- Ditto in perf_event__id_header_size().
I.e. I think we should just zap it per the patch below (untested).
Thanks,
Ingo
============>
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 3f7f89ea5e51..d75e03ff31ea 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1032,7 +1032,7 @@ struct perf_sample_data {
u64 cgroup;
u64 data_page_size;
u64 code_page_size;
-} ____cacheline_aligned;
+};
/* default value for data source */
#define PERF_MEM_NA (PERF_MEM_S(OP, NA) |\
next prev parent reply other threads:[~2021-03-06 13:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-05 3:45 "struct perf_sample_data" alignment Linus Torvalds
2021-03-05 8:36 ` Peter Zijlstra
2021-03-05 14:57 ` Peter Zijlstra
2021-03-05 15:57 ` Alexei Starovoitov
2021-03-06 13:14 ` Ingo Molnar [this message]
2021-03-08 10:01 ` David Laight
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=20210306131442.GA552533@gmail.com \
--to=mingo@kernel.org \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=alexei.starovoitov@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
/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.