kernel_samsung_a53x/kernel/trace
Levi Yun c20eee8bbe trace/trace_event_perf: remove duplicate samples on the first tracepoint event
[ Upstream commit afe5960dc208fe069ddaaeb0994d857b24ac19d1 ]

When a tracepoint event is created with attr.freq = 1,
'hwc->period_left' is not initialized correctly. As a result,
in the perf_swevent_overflow() function, when the first time the event occurs,
it calculates the event overflow and the perf_swevent_set_period() returns 3,
this leads to the event are recorded for three duplicate times.

Step to reproduce:
    1. Enable the tracepoint event & starting tracing
         $ echo 1 > /sys/kernel/tracing/events/module/module_free
         $ echo 1 > /sys/kernel/tracing/tracing_on

    2. Record with perf
         $ perf record -a --strict-freq -F 1 -e "module:module_free"

    3. Trigger module_free event.
         $ modprobe -i sunrpc
         $ modprobe -r sunrpc

Result:
     - Trace pipe result:
         $ cat trace_pipe
         modprobe-174509  [003] .....  6504.868896: module_free: sunrpc

     - perf sample:
         modprobe  174509 [003]  6504.868980: module:module_free: sunrpc
         modprobe  174509 [003]  6504.868980: module:module_free: sunrpc
         modprobe  174509 [003]  6504.868980: module:module_free: sunrpc

By setting period_left via perf_swevent_set_period() as other sw_event did,
This problem could be solved.

After patch:
     - Trace pipe result:
         $ cat trace_pipe
         modprobe 1153096 [068] 613468.867774: module:module_free: xfs

     - perf sample
         modprobe 1153096 [068] 613468.867794: module:module_free: xfs

Link: https://lore.kernel.org/20240913021347.595330-1-yeoreum.yun@arm.com
Fixes: bd2b5b12849a ("perf_counter: More aggressive frequency adjustment")
Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-17 13:24:08 +01:00
..
blktrace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bpf_trace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bpf_trace.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
error_report-traces.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fgraph.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ftrace.c ftrace: Fix regression with module command in stack_trace_filter 2024-12-17 13:20:50 +01:00
ftrace_internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ipc_logging.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ipc_logging_debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ipc_logging_private.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig tracing: Build event generation tests only as modules 2024-11-19 14:19:07 +01:00
kprobe_event_gen_test.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
power-traces.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
preemptirq_delay_test.c tracing: Add MODULE_DESCRIPTION() to preemptirq_delay_test 2024-11-19 14:19:29 +01:00
ring_buffer.c ring-buffer: Fix a race between readers and resize checks 2024-11-19 12:26:51 +01:00
ring_buffer_benchmark.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rpm-traces.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
synth_event_gen_test.c tracing / synthetic: Disable events after testing in synth_event_gen_test_init() 2024-11-18 12:12:01 +01:00
trace.c Revert "tracing: Have saved_cmdlines arrays all in one allocation" 2024-11-24 00:22:59 +01:00
trace.h Revert "tracing: Have trace_event_file have ref counters" 2024-11-18 11:57:24 +01:00
trace_benchmark.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_benchmark.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_boot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_branch.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_clock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_dynevent.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_dynevent.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_entries.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_event_perf.c trace/trace_event_perf: remove duplicate samples on the first tracepoint event 2024-12-17 13:24:08 +01:00
trace_events.c Revert "tracing: Have trace_event_file have ref counters" 2024-11-18 11:57:24 +01:00
trace_events_filter.c Revert "tracing: Have trace_event_file have ref counters" 2024-11-18 11:57:24 +01:00
trace_events_filter_test.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_events_hist.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_events_inject.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_events_synth.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_events_trigger.c Revert "tracing/trigger: Fix to return error if failed to alloc snapshot" 2024-11-19 11:32:21 +01:00
trace_export.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_functions.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_functions_graph.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_hwlat.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_irqsoff.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_kdb.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_kprobe.c Revert "tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols" 2024-11-24 00:22:59 +01:00
trace_kprobe_selftest.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_kprobe_selftest.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_mmiotrace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_nop.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_output.c Revert "tracing: Remove precision vsnprintf() check from print event" 2024-11-24 00:22:59 +01:00
trace_output.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_preemptirq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_printk.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_probe.c tracing: Consider the NULL character when validating the event length 2024-11-23 23:22:00 +01:00
trace_probe.h Revert "tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols" 2024-11-24 00:22:59 +01:00
trace_probe_tmpl.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_readwrite.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_sched_switch.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_sched_wakeup.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_selftest.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_selftest_dynamic.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_seq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_stack.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_stat.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_stat.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_synth.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_syscalls.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace_uprobe.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tracing_map.c tracing: Fix overflow in get_free_elt() 2024-11-23 23:20:29 +01:00
tracing_map.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00