2022-10-12 15:31:25

by James Clark

[permalink] [raw]
Subject: [PATCH] perf: Fix missing raw data on tracepoint events

Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
field not being set. Fix this by setting it for tracepoint events.

This fixes the following test failure:

perf test "sched_switch" -vvv

35: Track with sched_switch
--- start ---
test child forked, pid 1828
...
Using CPUID 0x00000000410fd400
sched_switch: cpu: 2 prev_tid -14687 next_tid 0
sched_switch: cpu: 2 prev_tid -14687 next_tid 0
Missing sched_switch events
4613 events recorded
test child finished with -1
---- end ----
Track with sched_switch: FAILED!

Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra (Intel) <[email protected]>
Signed-off-by: James Clark <[email protected]>
---
kernel/events/core.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index b981b879bcd8..824c23830272 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -9759,6 +9759,7 @@ void perf_tp_event(u16 event_type, u64 count, void *record, int entry_size,

perf_sample_data_init(&data, 0, 0);
data.raw = &raw;
+ data.sample_flags |= PERF_SAMPLE_RAW;

perf_trace_buf_update(record, event_type);

--
2.28.0


2022-10-12 17:24:22

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix missing raw data on tracepoint events

On Wed, Oct 12, 2022 at 7:39 AM James Clark <[email protected]> wrote:
>
> Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
> field not being set. Fix this by setting it for tracepoint events.
>
> This fixes the following test failure:
>
> perf test "sched_switch" -vvv
>
> 35: Track with sched_switch
> --- start ---
> test child forked, pid 1828
> ...
> Using CPUID 0x00000000410fd400
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> Missing sched_switch events
> 4613 events recorded
> test child finished with -1
> ---- end ----
> Track with sched_switch: FAILED!
>
> Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> Cc: Peter Zijlstra (Intel) <[email protected]>
> Signed-off-by: James Clark <[email protected]>

Ouch.. thanks for the fix.

Acked-by: Namhyung Kim <[email protected]>

Thanks,
Namhyung


> ---
> kernel/events/core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index b981b879bcd8..824c23830272 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -9759,6 +9759,7 @@ void perf_tp_event(u16 event_type, u64 count, void *record, int entry_size,
>
> perf_sample_data_init(&data, 0, 0);
> data.raw = &raw;
> + data.sample_flags |= PERF_SAMPLE_RAW;
>
> perf_trace_buf_update(record, event_type);
>
> --
> 2.28.0
>

2022-10-17 23:56:36

by SeongJae Park

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix missing raw data on tracepoint events

On Wed, 12 Oct 2022 15:38:57 +0100 James Clark <[email protected]> wrote:

> Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
> field not being set. Fix this by setting it for tracepoint events.

I was also getting similar issue[1], and confirmed that this fixes it. Thank
you for the fix! Also, thank you for pointing me to this patch, Namhyung!

>
> This fixes the following test failure:
>
> perf test "sched_switch" -vvv
>
> 35: Track with sched_switch
> --- start ---
> test child forked, pid 1828
> ...
> Using CPUID 0x00000000410fd400
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> Missing sched_switch events
> 4613 events recorded
> test child finished with -1
> ---- end ----
> Track with sched_switch: FAILED!
>
> Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> Cc: Namhyung Kim <[email protected]>
> Cc: Peter Zijlstra (Intel) <[email protected]>
> Signed-off-by: James Clark <[email protected]>

Tested-by: SeongJae Park <[email protected]>


[1] https://lore.kernel.org/bpf/[email protected]/

Thanks,
SJ

> ---
> kernel/events/core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index b981b879bcd8..824c23830272 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -9759,6 +9759,7 @@ void perf_tp_event(u16 event_type, u64 count, void *record, int entry_size,
>
> perf_sample_data_init(&data, 0, 0);
> data.raw = &raw;
> + data.sample_flags |= PERF_SAMPLE_RAW;
>
> perf_trace_buf_update(record, event_type);
>
> --
> 2.28.0

2022-10-18 18:46:01

by Athira Rajeev

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix missing raw data on tracepoint events



> On 12-Oct-2022, at 8:08 PM, James Clark <[email protected]> wrote:
>
> Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
> field not being set. Fix this by setting it for tracepoint events.
>
> This fixes the following test failure:
>
> perf test "sched_switch" -vvv
>
> 35: Track with sched_switch
> --- start ---
> test child forked, pid 1828
> ...
> Using CPUID 0x00000000410fd400
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> Missing sched_switch events
> 4613 events recorded
> test child finished with -1
> ---- end ----
> Track with sched_switch: FAILED!
>
> Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> Cc: Namhyung Kim <[email protected]>
> Cc: Peter Zijlstra (Intel) <[email protected]>
> Signed-off-by: James Clark <[email protected]>

Hi James,

Thanks for the fix. I was getting similar issue with “perf trace” and it works with this fix.

Tested-by: Athira Rajeev <[email protected]>


> ---
> kernel/events/core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index b981b879bcd8..824c23830272 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -9759,6 +9759,7 @@ void perf_tp_event(u16 event_type, u64 count, void *record, int entry_size,
>
> perf_sample_data_init(&data, 0, 0);
> data.raw = &raw;
> + data.sample_flags |= PERF_SAMPLE_RAW;
>
> perf_trace_buf_update(record, event_type);
>
> --
> 2.28.0
>

2022-10-18 20:33:12

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix missing raw data on tracepoint events

On Wed, Oct 12, 2022 at 03:38:57PM +0100, James Clark wrote:
> Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
> field not being set. Fix this by setting it for tracepoint events.
>
> This fixes the following test failure:
>
> perf test "sched_switch" -vvv
>
> 35: Track with sched_switch
> --- start ---
> test child forked, pid 1828
> ...
> Using CPUID 0x00000000410fd400
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> sched_switch: cpu: 2 prev_tid -14687 next_tid 0
> Missing sched_switch events
> 4613 events recorded
> test child finished with -1
> ---- end ----
> Track with sched_switch: FAILED!
>
> Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
> Cc: Namhyung Kim <[email protected]>
> Cc: Peter Zijlstra (Intel) <[email protected]>
> Signed-off-by: James Clark <[email protected]>

Thanks!

2022-10-28 06:44:06

by tip-bot2 for Jacob Pan

[permalink] [raw]
Subject: [tip: perf/urgent] perf: Fix missing raw data on tracepoint events

The following commit has been merged into the perf/urgent branch of tip:

Commit-ID: 4b66ff46f2e18b1d32e18c881799ef911606f3be
Gitweb: https://git.kernel.org/tip/4b66ff46f2e18b1d32e18c881799ef911606f3be
Author: James Clark <[email protected]>
AuthorDate: Wed, 12 Oct 2022 15:38:57 +01:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Thu, 27 Oct 2022 10:27:30 +02:00

perf: Fix missing raw data on tracepoint events

Since commit 838d9bb62d13 ("perf: Use sample_flags for raw_data")
raw data is not being output on tracepoints due to the PERF_SAMPLE_RAW
field not being set. Fix this by setting it for tracepoint events.

This fixes the following test failure:

perf test "sched_switch" -vvv

35: Track with sched_switch
--- start ---
test child forked, pid 1828
...
Using CPUID 0x00000000410fd400
sched_switch: cpu: 2 prev_tid -14687 next_tid 0
sched_switch: cpu: 2 prev_tid -14687 next_tid 0
Missing sched_switch events
4613 events recorded
test child finished with -1
---- end ----
Track with sched_switch: FAILED!

Fixes: 838d9bb62d13 ("perf: Use sample_flags for raw_data")
Signed-off-by: James Clark <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Namhyung Kim <[email protected]>
Tested-by: SeongJae Park <[email protected]>
Tested-by: Athira Rajeev <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
kernel/events/core.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 01933db..4ec3717 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -9846,6 +9846,7 @@ void perf_tp_event(u16 event_type, u64 count, void *record, int entry_size,

perf_sample_data_init(&data, 0, 0);
data.raw = &raw;
+ data.sample_flags |= PERF_SAMPLE_RAW;

perf_trace_buf_update(record, event_type);