* [PATCH] perf: remove PERF_SAMPLE_RAW
@ 2009-08-27 8:17 Peter Zijlstra
2009-08-27 8:43 ` Ingo Molnar
2009-08-27 13:26 ` Frederic Weisbecker
0 siblings, 2 replies; 5+ messages in thread
From: Peter Zijlstra @ 2009-08-27 8:17 UTC (permalink / raw)
To: Ingo Molnar, Frederic Weisbecker, Steven Rostedt,
Arjan van de Ven, Paul Mackerras
Cc: Thomas Gleixner, Andrew Morton, Linus Torvalds, Christoph Hellwig,
LKML
seems I forgot lkml...
---
Apparently people think trace-events became an ABI the moment perf
exported them, regardless what the text surrounding PERF_SAMPLE_RAW said
about the opaqueness of the data provided.
I'm not willing to make anything trace related into an ABI, hence remove
this.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
include/linux/perf_counter.h | 17 +----------------
kernel/perf_counter.c | 36 ------------------------------------
2 files changed, 1 insertions(+), 52 deletions(-)
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h
index 972f90d..1056676 100644
--- a/include/linux/perf_counter.h
+++ b/include/linux/perf_counter.h
@@ -121,9 +121,8 @@ enum perf_counter_sample_format {
PERF_SAMPLE_CPU = 1U << 7,
PERF_SAMPLE_PERIOD = 1U << 8,
PERF_SAMPLE_STREAM_ID = 1U << 9,
- PERF_SAMPLE_RAW = 1U << 10,
- PERF_SAMPLE_MAX = 1U << 11, /* non-ABI */
+ PERF_SAMPLE_MAX = 1U << 10, /* non-ABI */
};
/*
@@ -383,20 +382,6 @@ enum perf_event_type {
*
* { u64 nr,
* u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN
- *
- * #
- * # The RAW record below is opaque data wrt the ABI
- * #
- * # That is, the ABI doesn't make any promises wrt to
- * # the stability of its content, it may vary depending
- * # on event, hardware, kernel version and phase of
- * # the moon.
- * #
- * # In other words, PERF_SAMPLE_RAW contents are not an ABI.
- * #
- *
- * { u32 size;
- * char data[size];}&& PERF_SAMPLE_RAW
* };
*/
PERF_EVENT_SAMPLE = 9,
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c
index 53abcbe..e72ba84 100644
--- a/kernel/perf_counter.c
+++ b/kernel/perf_counter.c
@@ -2935,18 +2935,6 @@ void perf_counter_output(struct perf_counter *counter, int nmi,
header.size += sizeof(u64);
}
- if (sample_type & PERF_SAMPLE_RAW) {
- int size = sizeof(u32);
-
- if (data->raw)
- size += data->raw->size;
- else
- size += sizeof(u32);
-
- WARN_ON_ONCE(size & (sizeof(u64)-1));
- header.size += size;
- }
-
ret = perf_output_begin(&handle, counter, header.size, nmi, 1);
if (ret)
return;
@@ -2992,22 +2980,6 @@ void perf_counter_output(struct perf_counter *counter, int nmi,
}
}
- if (sample_type & PERF_SAMPLE_RAW) {
- if (data->raw) {
- perf_output_put(&handle, data->raw->size);
- perf_output_copy(&handle, data->raw->data, data->raw->size);
- } else {
- struct {
- u32 size;
- u32 data;
- } raw = {
- .size = sizeof(u32),
- .data = 0,
- };
- perf_output_put(&handle, raw);
- }
- }
-
perf_output_end(&handle);
}
@@ -3966,14 +3938,6 @@ static void tp_perf_counter_destroy(struct perf_counter *counter)
static const struct pmu *tp_perf_counter_init(struct perf_counter *counter)
{
- /*
- * Raw tracepoint data is a severe data leak, only allow root to
- * have these.
- */
- if ((counter->attr.sample_type & PERF_SAMPLE_RAW) &&
- !capable(CAP_SYS_ADMIN))
- return ERR_PTR(-EPERM);
-
if (ftrace_profile_enable(counter->attr.config))
return NULL;
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] perf: remove PERF_SAMPLE_RAW
2009-08-27 8:17 [PATCH] perf: remove PERF_SAMPLE_RAW Peter Zijlstra
@ 2009-08-27 8:43 ` Ingo Molnar
2009-08-27 9:04 ` Peter Zijlstra
2009-08-27 13:35 ` Frederic Weisbecker
2009-08-27 13:26 ` Frederic Weisbecker
1 sibling, 2 replies; 5+ messages in thread
From: Ingo Molnar @ 2009-08-27 8:43 UTC (permalink / raw)
To: Peter Zijlstra
Cc: Frederic Weisbecker, Steven Rostedt, Arjan van de Ven,
Paul Mackerras, Thomas Gleixner, Andrew Morton, Linus Torvalds,
Christoph Hellwig, LKML
* Peter Zijlstra <peterz@infradead.org> wrote:
> Apparently people think trace-events became an ABI the moment perf
> exported them, regardless what the text surrounding
> PERF_SAMPLE_RAW said about the opaqueness of the data provided.
Well it's still opaque and the descriptor of what it means is in
debugfs so it's not an ABI as the comment says.
> I'm not willing to make anything trace related into an ABI, hence
> remove this.
This removes quite a bit of nice functionality we already have, so i
think it's (way) too heavy handed.
I think what we want is the golden middle: a per tracepoint
property. I.e. we would provide:
TRACE_EVENT_STABLE()
or TRACE_EVENT_CORE() or TRACE_EVENT_ABI() - which carries a 'will
maintain this as an ABI' promise from the maintainer who adds it.
Also, tracepoints are a unidirectional channel of information - in
practice those are way easier to handle as an ABI than other ABIs
such as behavior, semantics, etc. So i'd expect there to be a
healthy set of 'stable' tracepoints.
Ingo
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] perf: remove PERF_SAMPLE_RAW
2009-08-27 8:43 ` Ingo Molnar
@ 2009-08-27 9:04 ` Peter Zijlstra
2009-08-27 13:35 ` Frederic Weisbecker
1 sibling, 0 replies; 5+ messages in thread
From: Peter Zijlstra @ 2009-08-27 9:04 UTC (permalink / raw)
To: Ingo Molnar
Cc: Frederic Weisbecker, Steven Rostedt, Arjan van de Ven,
Paul Mackerras, Thomas Gleixner, Andrew Morton, Linus Torvalds,
Christoph Hellwig, LKML
On Thu, 2009-08-27 at 10:43 +0200, Ingo Molnar wrote:
> * Peter Zijlstra <peterz@infradead.org> wrote:
>
> > Apparently people think trace-events became an ABI the moment perf
> > exported them, regardless what the text surrounding
> > PERF_SAMPLE_RAW said about the opaqueness of the data provided.
>
> Well it's still opaque and the descriptor of what it means is in
> debugfs so it's not an ABI as the comment says.
Clearly people their expectations didn't match this.
> > I'm not willing to make anything trace related into an ABI, hence
> > remove this.
>
> This removes quite a bit of nice functionality we already have, so i
> think it's (way) too heavy handed.
>
> I think what we want is the golden middle: a per tracepoint
> property. I.e. we would provide:
>
> TRACE_EVENT_STABLE()
>
> or TRACE_EVENT_CORE() or TRACE_EVENT_ABI() - which carries a 'will
> maintain this as an ABI' promise from the maintainer who adds it.
>
> Also, tracepoints are a unidirectional channel of information - in
> practice those are way easier to handle as an ABI than other ABIs
> such as behavior, semantics, etc. So i'd expect there to be a
> healthy set of 'stable' tracepoints.
Whatever works for people really, I just want this discussed. I'm not at
all ready to have everything TRACE_EVENT() declared an ABI as it stands
now.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf: remove PERF_SAMPLE_RAW
2009-08-27 8:43 ` Ingo Molnar
2009-08-27 9:04 ` Peter Zijlstra
@ 2009-08-27 13:35 ` Frederic Weisbecker
1 sibling, 0 replies; 5+ messages in thread
From: Frederic Weisbecker @ 2009-08-27 13:35 UTC (permalink / raw)
To: Ingo Molnar
Cc: Peter Zijlstra, Steven Rostedt, Arjan van de Ven, Paul Mackerras,
Thomas Gleixner, Andrew Morton, Linus Torvalds, Christoph Hellwig,
LKML
On Thu, Aug 27, 2009 at 10:43:21AM +0200, Ingo Molnar wrote:
> * Peter Zijlstra <peterz@infradead.org> wrote:
>
> > Apparently people think trace-events became an ABI the moment perf
> > exported them, regardless what the text surrounding
> > PERF_SAMPLE_RAW said about the opaqueness of the data provided.
>
> Well it's still opaque and the descriptor of what it means is in
> debugfs so it's not an ABI as the comment says.
>
> > I'm not willing to make anything trace related into an ABI, hence
> > remove this.
>
> This removes quite a bit of nice functionality we already have, so i
> think it's (way) too heavy handed.
>
> I think what we want is the golden middle: a per tracepoint
> property. I.e. we would provide:
>
> TRACE_EVENT_STABLE()
>
> or TRACE_EVENT_CORE() or TRACE_EVENT_ABI() - which carries a 'will
> maintain this as an ABI' promise from the maintainer who adds it.
Why? The format files stand to avoid that.
I don't understand this debate.
> Also, tracepoints are a unidirectional channel of information - in
> practice those are way easier to handle as an ABI than other ABIs
> such as behavior, semantics, etc. So i'd expect there to be a
> healthy set of 'stable' tracepoints.
>
> Ingo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf: remove PERF_SAMPLE_RAW
2009-08-27 8:17 [PATCH] perf: remove PERF_SAMPLE_RAW Peter Zijlstra
2009-08-27 8:43 ` Ingo Molnar
@ 2009-08-27 13:26 ` Frederic Weisbecker
1 sibling, 0 replies; 5+ messages in thread
From: Frederic Weisbecker @ 2009-08-27 13:26 UTC (permalink / raw)
To: Peter Zijlstra
Cc: Ingo Molnar, Steven Rostedt, Arjan van de Ven, Paul Mackerras,
Thomas Gleixner, Andrew Morton, Linus Torvalds, Christoph Hellwig,
LKML
On Thu, Aug 27, 2009 at 10:17:53AM +0200, Peter Zijlstra wrote:
> seems I forgot lkml...
>
> ---
> Apparently people think trace-events became an ABI the moment perf
> exported them, regardless what the text surrounding PERF_SAMPLE_RAW said
> about the opaqueness of the data provided.
But people think wrong. This is why Steve has written the format files
of trace events, to have a dynamic ABI specification.
> I'm not willing to make anything trace related into an ABI, hence remove
> this.
Geeze!
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-08-27 13:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-27 8:17 [PATCH] perf: remove PERF_SAMPLE_RAW Peter Zijlstra
2009-08-27 8:43 ` Ingo Molnar
2009-08-27 9:04 ` Peter Zijlstra
2009-08-27 13:35 ` Frederic Weisbecker
2009-08-27 13:26 ` Frederic Weisbecker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox