]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
perf symbol: Add setters for bitfields sharing a byte to avoid concurrent update...
authorIan Rogers <irogers@google.com>
Tue, 2 Jun 2026 15:25:15 +0000 (08:25 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 3 Jun 2026 19:53:45 +0000 (16:53 -0300)
commit979e87ab1f258036aab9ed874aecede0163586e5
treeb78d6033b7fe986783d953489cffe0bb7556930d
parentb34c7c147bff19722f729d10370f00850d477eac
perf symbol: Add setters for bitfields sharing a byte to avoid concurrent update issues

A problem with putting bitfields into struct symbol is that other bits in
the symbol could be updated concurrently and only one update to the
underlying storage unit happen, leading to lost updates.

To avoid this, use atomics to atomically read or set part of 16-bits
of flags in the symbol. Add accessors to simplify this.

The idle value has 3 values in preparation for a later change that
will lazily update it.

Assisted-by: Gemini:gemini-3.1-pro-preview
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Honglei Wang <jameshongleiwang@126.com>
Cc: Jan Polensky <japo@linux.ibm.com>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
26 files changed:
tools/perf/builtin-inject.c
tools/perf/builtin-kwork.c
tools/perf/builtin-report.c
tools/perf/builtin-sched.c
tools/perf/builtin-top.c
tools/perf/tests/symbols.c
tools/perf/tests/vmlinux-kallsyms.c
tools/perf/ui/browsers/annotate.c
tools/perf/ui/browsers/map.c
tools/perf/util/annotate.c
tools/perf/util/auxtrace.c
tools/perf/util/callchain.c
tools/perf/util/dlfilter.c
tools/perf/util/evsel_fprintf.c
tools/perf/util/intel-pt.c
tools/perf/util/libdw.c
tools/perf/util/machine.c
tools/perf/util/probe-event.c
tools/perf/util/scripting-engines/trace-event-perl.c
tools/perf/util/scripting-engines/trace-event-python.c
tools/perf/util/sort.c
tools/perf/util/srcline.c
tools/perf/util/symbol-elf.c
tools/perf/util/symbol.c
tools/perf/util/symbol.h
tools/perf/util/symbol_fprintf.c