From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Alice Rogers <alice.mei.rogers@gmail.com>,
Dapeng Mi <dapeng1.mi@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
James Clark <james.clark@linaro.org>, Leo Yan <leo.yan@linux.dev>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Richter <tmricht@linux.ibm.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 7.2 0130/1815] perf evlist: Add reference count checking
Date: Sat, 12 Sep 2026 08:31:20 +0200 [thread overview]
Message-ID: <20260912065652.069942258@linuxfoundation.org> (raw)
In-Reply-To: <20260912065648.999753832@linuxfoundation.org>
7.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
[ Upstream commit ab24487aaa42e7ca18580f6b4336615156d49452 ]
Now the evlist is reference counted, add reference count checking so
that gets and puts are paired and easy to debug. Reference count
checking is documented here:
https://perfwiki.github.io/main/reference-count-checking/
This large patch is adding accessors to evlist functions and switching
to their use. There was some minor renaming as evlist__mmap is now an
accessor to the mmap variable, and the original evlist__mmap is
renamed to evlist__do_mmap.
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alice Rogers <alice.mei.rogers@gmail.com>
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Stable-dep-of: e6ad1fb3458f ("perf parse-events: Restrict core PMU bypass to --cputype option")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/perf/arch/arm/util/cs-etm.c | 10 +-
tools/perf/arch/arm64/util/arm-spe.c | 8 +-
tools/perf/arch/arm64/util/hisi-ptt.c | 2 +-
tools/perf/arch/x86/tests/hybrid.c | 20 +-
tools/perf/arch/x86/util/auxtrace.c | 2 +-
tools/perf/arch/x86/util/intel-bts.c | 6 +-
tools/perf/arch/x86/util/intel-pt.c | 9 +-
tools/perf/arch/x86/util/iostat.c | 12 +-
tools/perf/bench/evlist-open-close.c | 11 +-
tools/perf/builtin-annotate.c | 7 +-
tools/perf/builtin-ftrace.c | 6 +-
tools/perf/builtin-inject.c | 4 +-
tools/perf/builtin-kvm.c | 10 +-
tools/perf/builtin-kwork.c | 8 +-
tools/perf/builtin-lock.c | 2 +-
tools/perf/builtin-record.c | 91 ++---
tools/perf/builtin-report.c | 6 +-
tools/perf/builtin-sched.c | 24 +-
tools/perf/builtin-script.c | 13 +-
tools/perf/builtin-stat.c | 73 ++--
tools/perf/builtin-top.c | 52 +--
tools/perf/builtin-trace.c | 22 +-
tools/perf/tests/backward-ring-buffer.c | 8 +-
tools/perf/tests/code-reading.c | 10 +-
tools/perf/tests/event-times.c | 2 +-
tools/perf/tests/event_update.c | 2 +-
tools/perf/tests/expand-cgroup.c | 4 +-
tools/perf/tests/hwmon_pmu.c | 5 +-
tools/perf/tests/keep-tracking.c | 8 +-
tools/perf/tests/mmap-basic.c | 6 +-
tools/perf/tests/openat-syscall-tp-fields.c | 8 +-
tools/perf/tests/parse-events.c | 135 +++----
tools/perf/tests/parse-metric.c | 4 +-
tools/perf/tests/perf-record.c | 22 +-
tools/perf/tests/perf-time-to-tsc.c | 10 +-
tools/perf/tests/pfm.c | 8 +-
tools/perf/tests/pmu-events.c | 5 +-
tools/perf/tests/sample-parsing.c | 45 +--
tools/perf/tests/sw-clock.c | 6 +-
tools/perf/tests/switch-tracking.c | 9 +-
tools/perf/tests/task-exit.c | 6 +-
tools/perf/tests/time-utils-test.c | 14 +-
tools/perf/tests/tool_pmu.c | 5 +-
tools/perf/tests/topology.c | 2 +-
tools/perf/tests/uncore-event-sorting.c | 4 +-
tools/perf/ui/browsers/annotate.c | 2 +-
tools/perf/ui/browsers/hists.c | 22 +-
tools/perf/util/amd-sample-raw.c | 2 +-
tools/perf/util/annotate-data.c | 2 +-
tools/perf/util/annotate.c | 10 +-
tools/perf/util/auxtrace.c | 14 +-
tools/perf/util/block-info.c | 4 +-
tools/perf/util/bpf_counter.c | 2 +-
tools/perf/util/bpf_counter_cgroup.c | 12 +-
tools/perf/util/bpf_ftrace.c | 9 +-
tools/perf/util/bpf_lock_contention.c | 12 +-
tools/perf/util/bpf_off_cpu.c | 14 +-
tools/perf/util/cgroup.c | 20 +-
tools/perf/util/cs-etm.c | 5 +-
tools/perf/util/evlist.c | 395 ++++++++++++--------
tools/perf/util/evlist.h | 251 ++++++++++++-
tools/perf/util/evsel.c | 6 +-
tools/perf/util/evsel.h | 4 +-
| 47 +--
| 2 +-
tools/perf/util/intel-tpebs.c | 7 +-
tools/perf/util/iostat.c | 2 +-
tools/perf/util/iostat.h | 2 +-
tools/perf/util/metricgroup.c | 6 +-
tools/perf/util/parse-events.c | 6 +-
tools/perf/util/pfm.c | 2 +-
tools/perf/util/python.c | 90 +++--
tools/perf/util/record.c | 9 +-
tools/perf/util/sample-raw.c | 4 +-
tools/perf/util/session.c | 43 ++-
tools/perf/util/sideband_evlist.c | 24 +-
tools/perf/util/sort.c | 2 +-
tools/perf/util/stat-display.c | 6 +-
tools/perf/util/stat-shadow.c | 4 +-
tools/perf/util/stat.c | 4 +-
tools/perf/util/stream.c | 4 +-
tools/perf/util/synthetic-events.c | 11 +-
tools/perf/util/time-utils.c | 12 +-
tools/perf/util/top.c | 4 +-
84 files changed, 1085 insertions(+), 718 deletions(-)
diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index cdf8e3e606067..d2861d66a6612 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -201,7 +201,7 @@ static int cs_etm_validate_config(struct perf_pmu *cs_etm_pmu,
{
unsigned int idx;
int err = 0;
- struct perf_cpu_map *event_cpus = evsel->evlist->core.user_requested_cpus;
+ struct perf_cpu_map *event_cpus = evlist__core(evsel->evlist)->user_requested_cpus;
struct perf_cpu_map *intersect_cpus;
struct perf_cpu cpu;
@@ -325,7 +325,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
container_of(itr, struct cs_etm_recording, itr);
struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
struct evsel *evsel, *cs_etm_evsel = NULL;
- struct perf_cpu_map *cpus = evlist->core.user_requested_cpus;
+ struct perf_cpu_map *cpus = evlist__core(evlist)->user_requested_cpus;
bool privileged = perf_event_paranoid_check(-1);
int err = 0;
@@ -551,7 +551,7 @@ cs_etm_info_priv_size(struct auxtrace_record *itr,
{
unsigned int idx;
int etmv3 = 0, etmv4 = 0, ete = 0;
- struct perf_cpu_map *event_cpus = evlist->core.user_requested_cpus;
+ struct perf_cpu_map *event_cpus = evlist__core(evlist)->user_requested_cpus;
struct perf_cpu_map *intersect_cpus;
struct perf_cpu cpu;
struct perf_pmu *cs_etm_pmu = cs_etm_get_pmu(itr);
@@ -790,7 +790,7 @@ static int cs_etm_info_fill(struct auxtrace_record *itr,
u32 offset;
u64 nr_cpu, type;
struct perf_cpu_map *cpu_map;
- struct perf_cpu_map *event_cpus = session->evlist->core.user_requested_cpus;
+ struct perf_cpu_map *event_cpus = evlist__core(session->evlist)->user_requested_cpus;
struct perf_cpu_map *online_cpus = perf_cpu_map__new_online_cpus();
struct cs_etm_recording *ptr =
container_of(itr, struct cs_etm_recording, itr);
@@ -800,7 +800,7 @@ static int cs_etm_info_fill(struct auxtrace_record *itr,
if (priv_size != cs_etm_info_priv_size(itr, session->evlist))
return -EINVAL;
- if (!session->evlist->core.nr_mmaps)
+ if (!evlist__core(session->evlist)->nr_mmaps)
return -EINVAL;
/* If the cpu_map has the "any" CPU all online CPUs are involved */
diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/util/arm-spe.c
index 91bb28cad79a5..1ba803a8d9b45 100644
--- a/tools/perf/arch/arm64/util/arm-spe.c
+++ b/tools/perf/arch/arm64/util/arm-spe.c
@@ -60,7 +60,7 @@ static bool arm_spe_is_set_freq(struct evsel *evsel)
*/
static struct perf_cpu_map *arm_spe_find_cpus(struct evlist *evlist)
{
- struct perf_cpu_map *event_cpus = evlist->core.user_requested_cpus;
+ struct perf_cpu_map *event_cpus = evlist__core(evlist)->user_requested_cpus;
struct perf_cpu_map *online_cpus = perf_cpu_map__new_online_cpus();
struct perf_cpu_map *intersect_cpus;
@@ -157,7 +157,7 @@ static int arm_spe_info_fill(struct auxtrace_record *itr,
if (priv_size != arm_spe_info_priv_size(itr, session->evlist))
return -EINVAL;
- if (!session->evlist->core.nr_mmaps)
+ if (!evlist__core(session->evlist)->nr_mmaps)
return -EINVAL;
cpu_map = arm_spe_find_cpus(session->evlist);
@@ -363,7 +363,7 @@ static int arm_spe_setup_tracking_event(struct evlist *evlist,
{
int err;
struct evsel *tracking_evsel;
- struct perf_cpu_map *cpus = evlist->core.user_requested_cpus;
+ struct perf_cpu_map *cpus = evlist__core(evlist)->user_requested_cpus;
/* Add dummy event to keep tracking */
err = parse_event(evlist, "dummy:u");
@@ -396,7 +396,7 @@ static int arm_spe_recording_options(struct auxtrace_record *itr,
struct arm_spe_recording *sper =
container_of(itr, struct arm_spe_recording, itr);
struct evsel *evsel, *tmp;
- struct perf_cpu_map *cpus = evlist->core.user_requested_cpus;
+ struct perf_cpu_map *cpus = evlist__core(evlist)->user_requested_cpus;
bool discard = false;
int err;
u64 discard_bit;
diff --git a/tools/perf/arch/arm64/util/hisi-ptt.c b/tools/perf/arch/arm64/util/hisi-ptt.c
index fe457fd58c9e8..52257715d2b74 100644
--- a/tools/perf/arch/arm64/util/hisi-ptt.c
+++ b/tools/perf/arch/arm64/util/hisi-ptt.c
@@ -53,7 +53,7 @@ static int hisi_ptt_info_fill(struct auxtrace_record *itr,
if (priv_size != HISI_PTT_AUXTRACE_PRIV_SIZE)
return -EINVAL;
- if (!session->evlist->core.nr_mmaps)
+ if (!evlist__core(session->evlist)->nr_mmaps)
return -EINVAL;
auxtrace_info->type = PERF_AUXTRACE_HISI_PTT;
diff --git a/tools/perf/arch/x86/tests/hybrid.c b/tools/perf/arch/x86/tests/hybrid.c
index dfb0ffc0d030b..0477e17b8e53d 100644
--- a/tools/perf/arch/x86/tests/hybrid.c
+++ b/tools/perf/arch/x86/tests/hybrid.c
@@ -26,7 +26,7 @@ static int test__hybrid_hw_event_with_pmu(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 1 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong hybrid type", test_hybrid_type(evsel, PERF_TYPE_RAW));
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
@@ -38,7 +38,7 @@ static int test__hybrid_hw_group_event(struct evlist *evlist)
struct evsel *evsel, *leader;
evsel = leader = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 2 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong hybrid type", test_hybrid_type(evsel, PERF_TYPE_RAW));
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
@@ -57,7 +57,7 @@ static int test__hybrid_sw_hw_group_event(struct evlist *evlist)
struct evsel *evsel, *leader;
evsel = leader = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 2 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
@@ -74,7 +74,7 @@ static int test__hybrid_hw_sw_group_event(struct evlist *evlist)
struct evsel *evsel, *leader;
evsel = leader = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 2 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong hybrid type", test_hybrid_type(evsel, PERF_TYPE_RAW));
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
@@ -91,7 +91,7 @@ static int test__hybrid_group_modifier1(struct evlist *evlist)
struct evsel *evsel, *leader;
evsel = leader = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 2 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong hybrid type", test_hybrid_type(evsel, PERF_TYPE_RAW));
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
@@ -113,7 +113,7 @@ static int test__hybrid_raw1(struct evlist *evlist)
{
struct perf_evsel *evsel;
- perf_evlist__for_each_evsel(&evlist->core, evsel) {
+ perf_evlist__for_each_evsel(evlist__core(evlist), evsel) {
struct perf_pmu *pmu = perf_pmus__find_by_type(evsel->attr.type);
TEST_ASSERT_VAL("missing pmu", pmu);
@@ -127,7 +127,7 @@ static int test__hybrid_raw2(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 1 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong config", test_config(evsel, 0x1a));
return TEST_OK;
@@ -137,7 +137,7 @@ static int test__hybrid_cache_event(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 1 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HW_CACHE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong config", 0x2 == (evsel->core.attr.config & 0xffffffff));
return TEST_OK;
@@ -148,7 +148,7 @@ static int test__checkevent_pmu(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 1 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong config", 10 == evsel->core.attr.config);
TEST_ASSERT_VAL("wrong config1", 1 == evsel->core.attr.config1);
@@ -168,7 +168,7 @@ static int test__hybrid_hw_group_event_2(struct evlist *evlist)
struct evsel *evsel, *leader;
evsel = leader = evlist__first(evlist);
- TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries", 2 == evlist__nr_entries(evlist));
TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type);
TEST_ASSERT_VAL("wrong hybrid type", test_hybrid_type(evsel, PERF_TYPE_RAW));
TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));
diff --git a/tools/perf/arch/x86/util/auxtrace.c b/tools/perf/arch/x86/util/auxtrace.c
index ecbf61a7eb3a3..84fce0b51ccf7 100644
--- a/tools/perf/arch/x86/util/auxtrace.c
+++ b/tools/perf/arch/x86/util/auxtrace.c
@@ -55,7 +55,7 @@ struct auxtrace_record *auxtrace_record__init(struct evlist *evlist,
int *err)
{
char buffer[64];
- struct perf_cpu cpu = perf_cpu_map__min(evlist->core.all_cpus);
+ struct perf_cpu cpu = perf_cpu_map__min(evlist__core(evlist)->all_cpus);
int ret;
*err = 0;
diff --git a/tools/perf/arch/x86/util/intel-bts.c b/tools/perf/arch/x86/util/intel-bts.c
index 100a23d27998f..d44d568a6d210 100644
--- a/tools/perf/arch/x86/util/intel-bts.c
+++ b/tools/perf/arch/x86/util/intel-bts.c
@@ -79,10 +79,10 @@ static int intel_bts_info_fill(struct auxtrace_record *itr,
if (priv_size != INTEL_BTS_AUXTRACE_PRIV_SIZE)
return -EINVAL;
- if (!session->evlist->core.nr_mmaps)
+ if (!evlist__core(session->evlist)->nr_mmaps)
return -EINVAL;
- pc = session->evlist->mmap[0].core.base;
+ pc = evlist__mmap(session->evlist)[0].core.base;
if (pc) {
err = perf_read_tsc_conversion(pc, &tc);
if (err) {
@@ -114,7 +114,7 @@ static int intel_bts_recording_options(struct auxtrace_record *itr,
container_of(itr, struct intel_bts_recording, itr);
struct perf_pmu *intel_bts_pmu = btsr->intel_bts_pmu;
struct evsel *evsel, *intel_bts_evsel = NULL;
- const struct perf_cpu_map *cpus = evlist->core.user_requested_cpus;
+ const struct perf_cpu_map *cpus = evlist__core(evlist)->user_requested_cpus;
bool privileged = perf_event_paranoid_check(-1);
if (opts->auxtrace_sample_mode) {
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
index 0307ff15d9fc9..a533114c0048c 100644
--- a/tools/perf/arch/x86/util/intel-pt.c
+++ b/tools/perf/arch/x86/util/intel-pt.c
@@ -360,10 +360,10 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
filter = intel_pt_find_filter(session->evlist, ptr->intel_pt_pmu);
filter_str_len = filter ? strlen(filter) : 0;
- if (!session->evlist->core.nr_mmaps)
+ if (!evlist__core(session->evlist)->nr_mmaps)
return -EINVAL;
- pc = session->evlist->mmap[0].core.base;
+ pc = evlist__mmap(session->evlist)[0].core.base;
if (pc) {
err = perf_read_tsc_conversion(pc, &tc);
if (err) {
@@ -376,7 +376,8 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
ui__warning("Intel Processor Trace: TSC not available\n");
}
- per_cpu_mmaps = !perf_cpu_map__is_any_cpu_or_is_empty(session->evlist->core.user_requested_cpus);
+ per_cpu_mmaps = !perf_cpu_map__is_any_cpu_or_is_empty(
+ evlist__core(session->evlist)->user_requested_cpus);
auxtrace_info->type = PERF_AUXTRACE_INTEL_PT;
auxtrace_info->priv[INTEL_PT_PMU_TYPE] = intel_pt_pmu->type;
@@ -621,7 +622,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr,
struct perf_pmu *intel_pt_pmu = ptr->intel_pt_pmu;
bool have_timing_info, need_immediate = false;
struct evsel *evsel, *intel_pt_evsel = NULL;
- const struct perf_cpu_map *cpus = evlist->core.user_requested_cpus;
+ const struct perf_cpu_map *cpus = evlist__core(evlist)->user_requested_cpus;
bool privileged = perf_event_paranoid_check(-1);
u64 tsc_bit;
int err;
diff --git a/tools/perf/arch/x86/util/iostat.c b/tools/perf/arch/x86/util/iostat.c
index e0417552b0cbd..b13abea3a6f48 100644
--- a/tools/perf/arch/x86/util/iostat.c
+++ b/tools/perf/arch/x86/util/iostat.c
@@ -332,13 +332,15 @@ static int iostat_event_group(struct evlist *evl,
return ret;
}
-int iostat_prepare(struct evlist *evlist, struct perf_stat_config *config)
+int iostat_prepare(struct evlist **evlist_ptr, struct perf_stat_config *config)
{
- if (evlist->core.nr_entries > 0) {
+ struct evlist *evlist = *evlist_ptr;
+
+ if (evlist__nr_entries(evlist) > 0) {
pr_warning("The -e and -M options are not supported."
"All chosen events/metrics will be dropped\n");
evlist__put(evlist);
- evlist = evlist__new();
+ *evlist_ptr = evlist = evlist__new();
if (!evlist)
return -ENOMEM;
}
@@ -400,7 +402,7 @@ void iostat_prefix(struct evlist *evlist,
struct perf_stat_config *config,
char *prefix, struct timespec *ts)
{
- struct iio_root_port *rp = evlist->selected->priv;
+ struct iio_root_port *rp = evlist__selected(evlist)->priv;
if (rp) {
/*
@@ -463,7 +465,7 @@ void iostat_print_counters(struct evlist *evlist,
iostat_prefix(evlist, config, prefix, ts);
fprintf(config->output, "%s", prefix);
evlist__for_each_entry(evlist, counter) {
- perf_device = evlist->selected->priv;
+ perf_device = evlist__selected(evlist)->priv;
if (perf_device && perf_device != counter->priv) {
evlist__set_selected(evlist, counter);
iostat_prefix(evlist, config, prefix, ts);
diff --git a/tools/perf/bench/evlist-open-close.c b/tools/perf/bench/evlist-open-close.c
index 304929d1f67f9..748ebbe458f49 100644
--- a/tools/perf/bench/evlist-open-close.c
+++ b/tools/perf/bench/evlist-open-close.c
@@ -116,7 +116,7 @@ static int bench__do_evlist_open_close(struct evlist *evlist)
return err;
}
- err = evlist__mmap(evlist, opts.mmap_pages);
+ err = evlist__do_mmap(evlist, opts.mmap_pages);
if (err < 0) {
pr_err("evlist__mmap: %s\n", str_error_r(errno, sbuf, sizeof(sbuf)));
return err;
@@ -124,7 +124,7 @@ static int bench__do_evlist_open_close(struct evlist *evlist)
evlist__enable(evlist);
evlist__disable(evlist);
- evlist__munmap(evlist);
+ evlist__do_munmap(evlist);
evlist__close(evlist);
return 0;
@@ -145,10 +145,11 @@ static int bench_evlist_open_close__run(char *evstr, const char *uid_str)
init_stats(&time_stats);
- printf(" Number of cpus:\t%d\n", perf_cpu_map__nr(evlist->core.user_requested_cpus));
- printf(" Number of threads:\t%d\n", evlist->core.threads->nr);
+ printf(" Number of cpus:\t%d\n",
+ perf_cpu_map__nr(evlist__core(evlist)->user_requested_cpus));
+ printf(" Number of threads:\t%d\n", evlist__core(evlist)->threads->nr);
printf(" Number of events:\t%d (%d fds)\n",
- evlist->core.nr_entries, evlist__count_evsel_fds(evlist));
+ evlist__nr_entries(evlist), evlist__count_evsel_fds(evlist));
printf(" Number of iterations:\t%d\n", iterations);
evlist__put(evlist);
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 8a0eb30eac24f..69cb72b2082a6 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -562,7 +562,7 @@ static int __cmd_annotate(struct perf_annotate *ann)
goto out;
if ((use_browser == 1 || ann->use_stdio2) && ann->has_br_stack)
- if (session->evlist->nr_br_cntr > 0)
+ if (evlist__nr_br_cntr(session->evlist) > 0)
annotate_opts.show_br_cntr = true;
if (dump_trace) {
@@ -928,8 +928,11 @@ int cmd_annotate(int argc, const char **argv)
* branch counters, if the corresponding branch info is available
* in the perf data in the TUI mode.
*/
- if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack)
+ if ((use_browser == 1 || annotate.use_stdio2) && annotate.has_br_stack) {
sort__mode = SORT_MODE__BRANCH;
+ if (evlist__nr_br_cntr(annotate.session->evlist) > 0)
+ annotate_opts.show_br_cntr = true;
+ }
if (setup_sorting(/*evlist=*/NULL, perf_session__env(annotate.session)) < 0)
usage_with_options(annotate_usage, options);
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 676239148b871..9e4c5220d43c2 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -377,9 +377,9 @@ static int set_tracing_pid(struct perf_ftrace *ftrace)
if (target__has_cpu(&ftrace->target))
return 0;
- for (i = 0; i < perf_thread_map__nr(ftrace->evlist->core.threads); i++) {
+ for (i = 0; i < perf_thread_map__nr(evlist__core(ftrace->evlist)->threads); i++) {
scnprintf(buf, sizeof(buf), "%d",
- perf_thread_map__pid(ftrace->evlist->core.threads, i));
+ perf_thread_map__pid(evlist__core(ftrace->evlist)->threads, i));
if (append_tracing_file("set_ftrace_pid", buf) < 0)
return -1;
}
@@ -413,7 +413,7 @@ static int set_tracing_cpumask(struct perf_cpu_map *cpumap)
static int set_tracing_cpu(struct perf_ftrace *ftrace)
{
- struct perf_cpu_map *cpumap = ftrace->evlist->core.user_requested_cpus;
+ struct perf_cpu_map *cpumap = evlist__core(ftrace->evlist)->user_requested_cpus;
if (!target__has_cpu(&ftrace->target))
return 0;
diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 6d6cce4765a7f..b13ce4caf8098 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -1520,7 +1520,7 @@ static int synthesize_id_index(struct perf_inject *inject, size_t new_cnt)
struct perf_session *session = inject->session;
struct evlist *evlist = session->evlist;
struct machine *machine = &session->machines.host;
- size_t from = evlist->core.nr_entries - new_cnt;
+ size_t from = evlist__nr_entries(evlist) - new_cnt;
return __perf_event__synthesize_id_index(&inject->tool, perf_event__repipe,
evlist, machine, from);
@@ -2055,7 +2055,7 @@ static int host__finished_init(const struct perf_tool *tool, struct perf_session
if (ret)
return ret;
- ret = synthesize_id_index(inject, gs->session->evlist->core.nr_entries);
+ ret = synthesize_id_index(inject, evlist__nr_entries(gs->session->evlist));
if (ret) {
pr_err("Failed to synthesize id_index\n");
return ret;
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 993dabff2a72e..2c6aef1e13a04 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -1221,7 +1221,7 @@ static s64 perf_kvm__mmap_read_idx(struct perf_kvm_stat *kvm, int idx,
int err;
*mmap_time = ULLONG_MAX;
- md = &evlist->mmap[idx];
+ md = &evlist__mmap(evlist)[idx];
err = perf_mmap__read_init(&md->core);
if (err < 0)
return (err == -EAGAIN) ? 0 : -1;
@@ -1266,7 +1266,7 @@ static int perf_kvm__mmap_read(struct perf_kvm_stat *kvm)
s64 n, ntotal = 0;
u64 flush_time = ULLONG_MAX, mmap_time;
- for (i = 0; i < kvm->evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(kvm->evlist)->nr_mmaps; i++) {
n = perf_kvm__mmap_read_idx(kvm, i, &mmap_time);
if (n < 0)
return -1;
@@ -1449,7 +1449,7 @@ static int kvm_events_live_report(struct perf_kvm_stat *kvm)
evlist__enable(kvm->evlist);
while (!done) {
- struct fdarray *fda = &kvm->evlist->core.pollfd;
+ struct fdarray *fda = &evlist__core(kvm->evlist)->pollfd;
int rc;
rc = perf_kvm__mmap_read(kvm);
@@ -1531,7 +1531,7 @@ static int kvm_live_open_events(struct perf_kvm_stat *kvm)
goto out;
}
- if (evlist__mmap(evlist, kvm->opts.mmap_pages) < 0) {
+ if (evlist__do_mmap(evlist, kvm->opts.mmap_pages) < 0) {
ui__error("Failed to mmap the events: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
evlist__close(evlist);
@@ -1931,7 +1931,7 @@ static int kvm_events_live(struct perf_kvm_stat *kvm,
perf_session__set_id_hdr_size(kvm->session);
ordered_events__set_copy_on_queue(&kvm->session->ordered_events, true);
machine__synthesize_threads(&kvm->session->machines.host, &kvm->opts.target,
- kvm->evlist->core.threads, true, false, 1);
+ evlist__core(kvm->evlist)->threads, true, false, 1);
err = kvm_live_open_events(kvm);
if (err)
goto out;
diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c
index 7b61168e01e9d..fce588441e499 100644
--- a/tools/perf/builtin-kwork.c
+++ b/tools/perf/builtin-kwork.c
@@ -1814,7 +1814,7 @@ static int perf_kwork__check_config(struct perf_kwork *kwork,
}
}
- list_for_each_entry(evsel, &session->evlist->core.entries, core.node) {
+ list_for_each_entry(evsel, &evlist__core(session->evlist)->entries, core.node) {
if (kwork->show_callchain && !evsel__has_callchain(evsel)) {
pr_debug("Samples do not have callchains\n");
kwork->show_callchain = 0;
@@ -1864,9 +1864,9 @@ static int perf_kwork__read_events(struct perf_kwork *kwork)
goto out_delete;
}
- kwork->nr_events = session->evlist->stats.nr_events[0];
- kwork->nr_lost_events = session->evlist->stats.total_lost;
- kwork->nr_lost_chunks = session->evlist->stats.nr_events[PERF_RECORD_LOST];
+ kwork->nr_events = evlist__stats(session->evlist)->nr_events[0];
+ kwork->nr_lost_events = evlist__stats(session->evlist)->total_lost;
+ kwork->nr_lost_chunks = evlist__stats(session->evlist)->nr_events[PERF_RECORD_LOST];
out_delete:
perf_session__delete(session);
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index d925543a68c07..d5c0d55cb82d9 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -2129,7 +2129,7 @@ static int __cmd_contention(int argc, const char **argv)
evlist__start_workload(con.evlist);
while (!done) {
- if (argc && waitpid(con.evlist->workload.pid, NULL, WNOHANG) > 0)
+ if (argc && waitpid(evlist__workload_pid(con.evlist), NULL, WNOHANG) > 0)
break;
sleep(1);
}
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index e4fa77a40dacb..ebd3ed0c9b3e8 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -502,12 +502,12 @@ static void record__aio_mmap_read_sync(struct record *rec)
{
int i;
struct evlist *evlist = rec->evlist;
- struct mmap *maps = evlist->mmap;
+ struct mmap *maps = evlist__mmap(evlist);
if (!record__aio_enabled(rec))
return;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
struct mmap *map = &maps[i];
if (map->core.base)
@@ -811,8 +811,8 @@ static int record__auxtrace_read_snapshot_all(struct record *rec)
int i;
int rc = 0;
- for (i = 0; i < rec->evlist->core.nr_mmaps; i++) {
- struct mmap *map = &rec->evlist->mmap[i];
+ for (i = 0; i < evlist__core(rec->evlist)->nr_mmaps; i++) {
+ struct mmap *map = &evlist__mmap(rec->evlist)[i];
if (!map->auxtrace_mmap.base)
continue;
@@ -1055,15 +1055,15 @@ static void record__thread_data_close_pipes(struct record_thread *thread_data)
static bool evlist__per_thread(struct evlist *evlist)
{
- return cpu_map__is_dummy(evlist->core.user_requested_cpus);
+ return cpu_map__is_dummy(evlist__core(evlist)->user_requested_cpus);
}
static int record__thread_data_init_maps(struct record_thread *thread_data, struct evlist *evlist)
{
- int m, tm, nr_mmaps = evlist->core.nr_mmaps;
- struct mmap *mmap = evlist->mmap;
- struct mmap *overwrite_mmap = evlist->overwrite_mmap;
- struct perf_cpu_map *cpus = evlist->core.all_cpus;
+ int m, tm, nr_mmaps = evlist__core(evlist)->nr_mmaps;
+ struct mmap *mmap = evlist__mmap(evlist);
+ struct mmap *overwrite_mmap = evlist__overwrite_mmap(evlist);
+ struct perf_cpu_map *cpus = evlist__core(evlist)->all_cpus;
bool per_thread = evlist__per_thread(evlist);
if (per_thread)
@@ -1118,16 +1118,17 @@ static int record__thread_data_init_pollfd(struct record_thread *thread_data, st
overwrite_map = thread_data->overwrite_maps ?
thread_data->overwrite_maps[tm] : NULL;
- for (f = 0; f < evlist->core.pollfd.nr; f++) {
- void *ptr = evlist->core.pollfd.priv[f].ptr;
+ for (f = 0; f < evlist__core(evlist)->pollfd.nr; f++) {
+ void *ptr = evlist__core(evlist)->pollfd.priv[f].ptr;
if ((map && ptr == map) || (overwrite_map && ptr == overwrite_map)) {
pos = fdarray__dup_entry_from(&thread_data->pollfd, f,
- &evlist->core.pollfd);
+ &evlist__core(evlist)->pollfd);
if (pos < 0)
return pos;
pr_debug2("thread_data[%p]: pollfd[%d] <- event_fd=%d\n",
- thread_data, pos, evlist->core.pollfd.entries[f].fd);
+ thread_data, pos,
+ evlist__core(evlist)->pollfd.entries[f].fd);
}
}
}
@@ -1171,7 +1172,7 @@ static int record__update_evlist_pollfd_from_thread(struct record *rec,
struct evlist *evlist,
struct record_thread *thread_data)
{
- struct pollfd *e_entries = evlist->core.pollfd.entries;
+ struct pollfd *e_entries = evlist__core(evlist)->pollfd.entries;
struct pollfd *t_entries = thread_data->pollfd.entries;
int err = 0;
size_t i;
@@ -1195,7 +1196,7 @@ static int record__dup_non_perf_events(struct record *rec,
struct evlist *evlist,
struct record_thread *thread_data)
{
- struct fdarray *fda = &evlist->core.pollfd;
+ struct fdarray *fda = &evlist__core(evlist)->pollfd;
int i, ret;
for (i = 0; i < fda->nr; i++) {
@@ -1322,17 +1323,17 @@ static int record__mmap_evlist(struct record *rec,
return ret;
if (record__threads_enabled(rec)) {
- ret = perf_data__create_dir(&rec->data, evlist->core.nr_mmaps);
+ ret = perf_data__create_dir(&rec->data, evlist__core(evlist)->nr_mmaps);
if (ret) {
errno = -ret;
pr_err("Failed to create data directory: %m\n");
return ret;
}
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- if (evlist->mmap)
- evlist->mmap[i].file = &rec->data.dir.files[i];
- if (evlist->overwrite_mmap)
- evlist->overwrite_mmap[i].file = &rec->data.dir.files[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ if (evlist__mmap(evlist))
+ evlist__mmap(evlist)[i].file = &rec->data.dir.files[i];
+ if (evlist__overwrite_mmap(evlist))
+ evlist__overwrite_mmap(evlist)[i].file = &rec->data.dir.files[i];
}
}
@@ -1481,11 +1482,11 @@ static int record__open(struct record *rec)
static void set_timestamp_boundary(struct record *rec, u64 sample_time)
{
- if (rec->evlist->first_sample_time == 0)
- rec->evlist->first_sample_time = sample_time;
+ if (evlist__first_sample_time(rec->evlist) == 0)
+ evlist__set_first_sample_time(rec->evlist, sample_time);
if (sample_time)
- rec->evlist->last_sample_time = sample_time;
+ evlist__set_last_sample_time(rec->evlist, sample_time);
}
static int process_sample_event(const struct perf_tool *tool,
@@ -1653,7 +1654,7 @@ static int record__mmap_read_evlist(struct record *rec, struct evlist *evlist,
if (!maps)
return 0;
- if (overwrite && evlist->bkw_mmap_state != BKW_MMAP_DATA_PENDING)
+ if (overwrite && evlist__bkw_mmap_state(evlist) != BKW_MMAP_DATA_PENDING)
return 0;
if (record__aio_enabled(rec))
@@ -1808,7 +1809,7 @@ static void record__init_features(struct record *rec)
if (rec->no_buildid)
perf_header__clear_feat(&session->header, HEADER_BUILD_ID);
- if (!have_tracepoints(&rec->evlist->core.entries))
+ if (!have_tracepoints(&evlist__core(rec->evlist)->entries))
perf_header__clear_feat(&session->header, HEADER_TRACING_DATA);
if (!rec->opts.branch_stack)
@@ -1874,7 +1875,7 @@ static int record__synthesize_workload(struct record *rec, bool tail)
if (rec->opts.tail_synthesize != tail)
return 0;
- thread_map = thread_map__new_by_tid(rec->evlist->workload.pid);
+ thread_map = thread_map__new_by_tid(evlist__workload_pid(rec->evlist));
if (thread_map == NULL)
return -1;
@@ -2067,10 +2068,10 @@ static void alarm_sig_handler(int sig);
static const struct perf_event_mmap_page *evlist__pick_pc(struct evlist *evlist)
{
if (evlist) {
- if (evlist->mmap && evlist->mmap[0].core.base)
- return evlist->mmap[0].core.base;
- if (evlist->overwrite_mmap && evlist->overwrite_mmap[0].core.base)
- return evlist->overwrite_mmap[0].core.base;
+ if (evlist__mmap(evlist) && evlist__mmap(evlist)[0].core.base)
+ return evlist__mmap(evlist)[0].core.base;
+ if (evlist__overwrite_mmap(evlist) && evlist__overwrite_mmap(evlist)[0].core.base)
+ return evlist__overwrite_mmap(evlist)[0].core.base;
}
return NULL;
}
@@ -2150,7 +2151,7 @@ static int record__synthesize(struct record *rec, bool tail)
if (err)
goto out;
- err = perf_event__synthesize_thread_map2(&rec->tool, rec->evlist->core.threads,
+ err = perf_event__synthesize_thread_map2(&rec->tool, evlist__core(rec->evlist)->threads,
process_synthesized_event,
NULL);
if (err < 0) {
@@ -2158,7 +2159,7 @@ static int record__synthesize(struct record *rec, bool tail)
return err;
}
- err = perf_event__synthesize_cpu_map(&rec->tool, rec->evlist->core.all_cpus,
+ err = perf_event__synthesize_cpu_map(&rec->tool, evlist__core(rec->evlist)->all_cpus,
process_synthesized_event, NULL);
if (err < 0) {
pr_err("Couldn't synthesize cpu map.\n");
@@ -2191,7 +2192,7 @@ static int record__synthesize(struct record *rec, bool tail)
bool needs_mmap = rec->opts.synth & PERF_SYNTH_MMAP;
err = __machine__synthesize_threads(machine, tool, &opts->target,
- rec->evlist->core.threads,
+ evlist__core(rec->evlist)->threads,
f, needs_mmap, opts->record_data_mmap,
rec->opts.nr_threads_synthesize);
}
@@ -2544,7 +2545,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
* because we synthesize event name through the pipe
* and need the id for that.
*/
- if (data->is_pipe && rec->evlist->core.nr_entries == 1)
+ if (data->is_pipe && evlist__nr_entries(rec->evlist) == 1)
rec->opts.sample_id = true;
if (rec->timestamp_filename && perf_data__is_pipe(data)) {
@@ -2568,7 +2569,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
}
/* Debug message used by test scripts */
pr_debug3("perf record done opening and mmapping events\n");
- env->comp_mmap_len = session->evlist->core.mmap_len;
+ env->comp_mmap_len = evlist__core(session->evlist)->mmap_len;
if (rec->opts.kcore) {
err = record__kcore_copy(&session->machines.host, data);
@@ -2669,7 +2670,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
* Synthesize COMM event to prevent it.
*/
tgid = perf_event__synthesize_comm(tool, event,
- rec->evlist->workload.pid,
+ evlist__workload_pid(rec->evlist),
process_synthesized_event,
machine);
free(event);
@@ -2689,7 +2690,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
* Synthesize NAMESPACES event for the command specified.
*/
perf_event__synthesize_namespaces(tool, event,
- rec->evlist->workload.pid,
+ evlist__workload_pid(rec->evlist),
tgid, process_synthesized_event,
machine);
free(event);
@@ -2706,7 +2707,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
}
}
- err = event_enable_timer__start(rec->evlist->eet);
+ err = event_enable_timer__start(evlist__event_enable_timer(rec->evlist));
if (err)
goto out_child;
@@ -2768,7 +2769,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
* record__mmap_read_all() didn't collect data from
* overwritable ring buffer. Read again.
*/
- if (rec->evlist->bkw_mmap_state == BKW_MMAP_RUNNING)
+ if (evlist__bkw_mmap_state(rec->evlist) == BKW_MMAP_RUNNING)
continue;
trigger_ready(&switch_output_trigger);
@@ -2837,7 +2838,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
}
}
- err = event_enable_timer__process(rec->evlist->eet);
+ err = event_enable_timer__process(evlist__event_enable_timer(rec->evlist));
if (err < 0)
goto out_child;
if (err) {
@@ -2909,7 +2910,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
int exit_status;
if (!child_finished)
- kill(rec->evlist->workload.pid, SIGTERM);
+ kill(evlist__workload_pid(rec->evlist), SIGTERM);
wait(&exit_status);
@@ -4032,7 +4033,7 @@ static int record__init_thread_default_masks(struct record *rec, struct perf_cpu
static int record__init_thread_masks(struct record *rec)
{
int ret = 0;
- struct perf_cpu_map *cpus = rec->evlist->core.all_cpus;
+ struct perf_cpu_map *cpus = evlist__core(rec->evlist)->all_cpus;
if (!record__threads_enabled(rec))
return record__init_thread_default_masks(rec, cpus);
@@ -4283,14 +4284,14 @@ int cmd_record(int argc, const char **argv)
if (record.opts.overwrite)
record.opts.tail_synthesize = true;
- if (rec->evlist->core.nr_entries == 0) {
+ if (evlist__nr_entries(rec->evlist) == 0) {
struct evlist *def_evlist = evlist__new_default(&rec->opts.target,
callchain_param.enabled);
if (!def_evlist)
goto out;
- evlist__splice_list_tail(rec->evlist, &def_evlist->core.entries);
+ evlist__splice_list_tail(rec->evlist, &evlist__core(def_evlist)->entries);
evlist__put(def_evlist);
}
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index dd1309c320943..10db1e5f1e6c4 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -561,7 +561,7 @@ static int evlist__tty_browse_hists(struct evlist *evlist, struct report *rep, c
if (!quiet) {
fprintf(stdout, "#\n# Total Lost Samples: %" PRIu64 "\n#\n",
- evlist->stats.total_lost_samples);
+ evlist__stats(evlist)->total_lost_samples);
}
evlist__for_each_entry(evlist, pos) {
@@ -1156,7 +1156,7 @@ static int __cmd_report(struct report *rep)
PERF_HPP_REPORT__BLOCK_AVG_CYCLES,
};
- if (session->evlist->nr_br_cntr > 0)
+ if (evlist__nr_br_cntr(session->evlist) > 0)
block_hpps[nr_hpps++] = PERF_HPP_REPORT__BLOCK_BRANCH_COUNTER;
block_hpps[nr_hpps++] = PERF_HPP_REPORT__BLOCK_RANGE;
@@ -1291,7 +1291,7 @@ static int process_attr(const struct perf_tool *tool __maybe_unused,
* on events sample_type.
*/
sample_type = evlist__combined_sample_type(*pevlist);
- session = (*pevlist)->session;
+ session = evlist__session(*pevlist);
callchain_param_setup(sample_type, perf_session__e_machine(session, /*e_flags=*/NULL));
return 0;
}
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 54ce9933ef092..ae033ffd1079a 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -2025,9 +2025,9 @@ static int perf_sched__read_events(struct perf_sched *sched)
goto out_delete;
}
- sched->nr_events = session->evlist->stats.nr_events[0];
- sched->nr_lost_events = session->evlist->stats.total_lost;
- sched->nr_lost_chunks = session->evlist->stats.nr_events[PERF_RECORD_LOST];
+ sched->nr_events = evlist__stats(session->evlist)->nr_events[0];
+ sched->nr_lost_events = evlist__stats(session->evlist)->total_lost;
+ sched->nr_lost_chunks = evlist__stats(session->evlist)->nr_events[PERF_RECORD_LOST];
}
rc = 0;
@@ -3303,7 +3303,7 @@ static int timehist_check_attr(struct perf_sched *sched,
struct evsel *evsel;
struct evsel_runtime *er;
- list_for_each_entry(evsel, &evlist->core.entries, core.node) {
+ list_for_each_entry(evsel, &evlist__core(evlist)->entries, core.node) {
er = evsel__get_runtime(evsel);
if (er == NULL) {
pr_err("Failed to allocate memory for evsel runtime data\n");
@@ -3475,9 +3475,9 @@ static int perf_sched__timehist(struct perf_sched *sched)
goto out;
}
- sched->nr_events = evlist->stats.nr_events[0];
- sched->nr_lost_events = evlist->stats.total_lost;
- sched->nr_lost_chunks = evlist->stats.nr_events[PERF_RECORD_LOST];
+ sched->nr_events = evlist__stats(evlist)->nr_events[0];
+ sched->nr_lost_events = evlist__stats(evlist)->total_lost;
+ sched->nr_lost_chunks = evlist__stats(evlist)->nr_events[PERF_RECORD_LOST];
if (sched->summary)
timehist_print_summary(sched, session);
@@ -3982,7 +3982,7 @@ static int perf_sched__schedstat_record(struct perf_sched *sched,
if (err < 0)
goto out;
- user_requested_cpus = evlist->core.user_requested_cpus;
+ user_requested_cpus = evlist__core(evlist)->user_requested_cpus;
err = perf_event__synthesize_schedstat(&(sched->tool),
process_synthesized_schedstat_event,
@@ -3998,7 +3998,7 @@ static int perf_sched__schedstat_record(struct perf_sched *sched,
evlist__start_workload(evlist);
while (!done) {
- if (argc && waitpid(evlist->workload.pid, NULL, WNOHANG) > 0)
+ if (argc && waitpid(evlist__workload_pid(evlist), NULL, WNOHANG) > 0)
break;
sleep(1);
}
@@ -4699,7 +4699,7 @@ static int perf_sched__schedstat_report(struct perf_sched *sched)
if (err < 0)
goto out;
- user_requested_cpus = session->evlist->core.user_requested_cpus;
+ user_requested_cpus = evlist__core(session->evlist)->user_requested_cpus;
err = perf_session__process_events(session);
@@ -4875,7 +4875,7 @@ static int perf_sched__schedstat_live(struct perf_sched *sched,
if (err < 0)
goto out;
- user_requested_cpus = evlist->core.user_requested_cpus;
+ user_requested_cpus = evlist__core(evlist)->user_requested_cpus;
err = perf_event__synthesize_schedstat(&(sched->tool),
process_synthesized_event_live,
@@ -4891,7 +4891,7 @@ static int perf_sched__schedstat_live(struct perf_sched *sched,
evlist__start_workload(evlist);
while (!done) {
- if (argc && waitpid(evlist->workload.pid, NULL, WNOHANG) > 0)
+ if (argc && waitpid(evlist__workload_pid(evlist), NULL, WNOHANG) > 0)
break;
sleep(1);
}
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 0df13927001b0..47afd8cdc2b77 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -2229,9 +2229,10 @@ static int script_find_metrics(const struct pmu_metric *pm,
evlist__for_each_entry(metric_evlist, metric_evsel) {
struct evsel *script_evsel =
map_metric_evsel_to_script_evsel(script_evlist, metric_evsel);
- struct metric_event *metric_me = metricgroup__lookup(&metric_evlist->metric_events,
- metric_evsel,
- /*create=*/false);
+ struct metric_event *metric_me =
+ metricgroup__lookup(evlist__metric_events(metric_evlist),
+ metric_evsel,
+ /*create=*/false);
if (script_evsel->metric_id == NULL) {
script_evsel->metric_id = metric_evsel->metric_id;
@@ -2251,7 +2252,7 @@ static int script_find_metrics(const struct pmu_metric *pm,
if (metric_me) {
struct metric_expr *expr;
struct metric_event *script_me =
- metricgroup__lookup(&script_evlist->metric_events,
+ metricgroup__lookup(evlist__metric_events(script_evlist),
script_evsel,
/*create=*/true);
@@ -2321,7 +2322,7 @@ static void perf_sample__fprint_metric(struct thread *thread,
assert(stat_config.aggr_mode == AGGR_GLOBAL);
stat_config.aggr_get_id = script_aggr_cpu_id_get;
stat_config.aggr_map =
- cpu_aggr_map__new(evsel->evlist->core.user_requested_cpus,
+ cpu_aggr_map__new(evlist__core(evsel->evlist)->user_requested_cpus,
aggr_cpu_id__global, /*data=*/NULL,
/*needs_sort=*/false);
}
@@ -3909,7 +3910,7 @@ static int set_maps(struct perf_script *script)
if (WARN_ONCE(script->allocated, "stats double allocation\n"))
return -EINVAL;
- perf_evlist__set_maps(&evlist->core, script->cpus, script->threads);
+ perf_evlist__set_maps(evlist__core(evlist), script->cpus, script->threads);
if (evlist__alloc_stats(&stat_config, evlist, /*alloc_raw=*/true))
return -ENOMEM;
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index bf621202da697..3f897b2e86386 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -321,7 +321,7 @@ static int read_single_counter(struct evsel *counter, int cpu_map_idx, int threa
*/
static int read_counter_cpu(struct evsel *counter, int cpu_map_idx)
{
- int nthreads = perf_thread_map__nr(evsel_list->core.threads);
+ int nthreads = perf_thread_map__nr(evlist__core(evsel_list)->threads);
int thread;
if (!counter->supported)
@@ -628,11 +628,12 @@ static int dispatch_events(bool forks, int timeout, int interval, int *times)
time_to_sleep = sleep_time;
while (!done) {
- if (forks)
+ if (forks) {
child_exited = waitpid(child_pid, &status, WNOHANG);
- else
- child_exited = !is_target_alive(&target, evsel_list->core.threads) ? 1 : 0;
-
+ } else {
+ child_exited = !is_target_alive(&target,
+ evlist__core(evsel_list)->threads) ? 1 : 0;
+ }
if (child_exited)
break;
@@ -681,14 +682,15 @@ static enum counter_recovery stat_handle_error(struct evsel *counter, int err)
return COUNTER_RETRY;
}
if (target__has_per_thread(&target) && err != EOPNOTSUPP &&
- evsel_list->core.threads && evsel_list->core.threads->err_thread != -1) {
+ evlist__core(evsel_list)->threads &&
+ evlist__core(evsel_list)->threads->err_thread != -1) {
/*
* For global --per-thread case, skip current
* error thread.
*/
- if (!thread_map__remove(evsel_list->core.threads,
- evsel_list->core.threads->err_thread)) {
- evsel_list->core.threads->err_thread = -1;
+ if (!thread_map__remove(evlist__core(evsel_list)->threads,
+ evlist__core(evsel_list)->threads->err_thread)) {
+ evlist__core(evsel_list)->threads->err_thread = -1;
counter->supported = true;
return COUNTER_RETRY;
}
@@ -787,11 +789,12 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
bool second_pass = false, has_supported_counters;
if (forks) {
- if (evlist__prepare_workload(evsel_list, &target, argv, is_pipe, workload_exec_failed_signal) < 0) {
+ if (evlist__prepare_workload(evsel_list, &target, argv, is_pipe,
+ workload_exec_failed_signal) < 0) {
perror("failed to prepare workload");
return -1;
}
- child_pid = evsel_list->workload.pid;
+ child_pid = evlist__workload_pid(evsel_list);
}
evlist__for_each_entry(evsel_list, counter) {
@@ -1199,7 +1202,7 @@ static int parse_cputype(const struct option *opt,
const struct perf_pmu *pmu;
struct evlist *evlist = *(struct evlist **)opt->value;
- if (!list_empty(&evlist->core.entries)) {
+ if (!list_empty(&evlist__core(evlist)->entries)) {
fprintf(stderr, "Must define cputype before events/metrics\n");
return -1;
}
@@ -1220,7 +1223,7 @@ static int parse_pmu_filter(const struct option *opt,
{
struct evlist *evlist = *(struct evlist **)opt->value;
- if (!list_empty(&evlist->core.entries)) {
+ if (!list_empty(&evlist__core(evlist)->entries)) {
fprintf(stderr, "Must define pmu-filter before events/metrics\n");
return -1;
}
@@ -1586,8 +1589,9 @@ static int perf_stat_init_aggr_mode(void)
if (get_id) {
bool needs_sort = stat_config.aggr_mode != AGGR_NONE;
- stat_config.aggr_map = cpu_aggr_map__new(evsel_list->core.user_requested_cpus,
- get_id, /*data=*/NULL, needs_sort);
+ stat_config.aggr_map = cpu_aggr_map__new(
+ evlist__core(evsel_list)->user_requested_cpus,
+ get_id, /*data=*/NULL, needs_sort);
if (!stat_config.aggr_map) {
pr_err("cannot build %s map\n", aggr_mode__string[stat_config.aggr_mode]);
return -1;
@@ -1596,7 +1600,7 @@ static int perf_stat_init_aggr_mode(void)
}
if (stat_config.aggr_mode == AGGR_THREAD) {
- nr = perf_thread_map__nr(evsel_list->core.threads);
+ nr = perf_thread_map__nr(evlist__core(evsel_list)->threads);
stat_config.aggr_map = cpu_aggr_map__empty_new(nr);
if (stat_config.aggr_map == NULL)
return -ENOMEM;
@@ -1615,7 +1619,7 @@ static int perf_stat_init_aggr_mode(void)
* taking the highest cpu number to be the size of
* the aggregation translate cpumap.
*/
- nr = perf_cpu_map__max(evsel_list->core.all_cpus).cpu + 1;
+ nr = perf_cpu_map__max(evlist__core(evsel_list)->all_cpus).cpu + 1;
stat_config.cpus_aggr_map = cpu_aggr_map__empty_new(nr);
return stat_config.cpus_aggr_map ? 0 : -ENOMEM;
}
@@ -1902,7 +1906,7 @@ static int perf_stat_init_aggr_mode_file(struct perf_stat *st)
bool needs_sort = stat_config.aggr_mode != AGGR_NONE;
if (stat_config.aggr_mode == AGGR_THREAD) {
- int nr = perf_thread_map__nr(evsel_list->core.threads);
+ int nr = perf_thread_map__nr(evlist__core(evsel_list)->threads);
stat_config.aggr_map = cpu_aggr_map__empty_new(nr);
if (stat_config.aggr_map == NULL)
@@ -1920,7 +1924,7 @@ static int perf_stat_init_aggr_mode_file(struct perf_stat *st)
if (!get_id)
return 0;
- stat_config.aggr_map = cpu_aggr_map__new(evsel_list->core.user_requested_cpus,
+ stat_config.aggr_map = cpu_aggr_map__new(evlist__core(evsel_list)->user_requested_cpus,
get_id, env, needs_sort);
if (!stat_config.aggr_map) {
pr_err("cannot build %s map\n", aggr_mode__string[stat_config.aggr_mode]);
@@ -2088,7 +2092,7 @@ static int add_default_events(void)
if (!stat_config.topdown_level)
stat_config.topdown_level = 1;
- if (!evlist->core.nr_entries && !evsel_list->core.nr_entries) {
+ if (!evlist__nr_entries(evlist) && !evlist__nr_entries(evsel_list)) {
/*
* Add Default metrics. To minimize multiplexing, don't request
* threshold computation, but it will be computed if the events
@@ -2127,13 +2131,13 @@ static int add_default_events(void)
evlist__for_each_entry(metric_evlist, evsel)
evsel->default_metricgroup = true;
- evlist__splice_list_tail(evlist, &metric_evlist->core.entries);
+ evlist__splice_list_tail(evlist, &evlist__core(metric_evlist)->entries);
metricgroup__copy_metric_events(evlist, /*cgrp=*/NULL,
- &evlist->metric_events,
- &metric_evlist->metric_events);
+ evlist__metric_events(evlist),
+ evlist__metric_events(metric_evlist));
evlist__put(metric_evlist);
}
- list_sort(/*priv=*/NULL, &evlist->core.entries, default_evlist_evsel_cmp);
+ list_sort(/*priv=*/NULL, &evlist__core(evlist)->entries, default_evlist_evsel_cmp);
}
out:
@@ -2148,10 +2152,10 @@ static int add_default_events(void)
}
}
parse_events_error__exit(&err);
- evlist__splice_list_tail(evsel_list, &evlist->core.entries);
+ evlist__splice_list_tail(evsel_list, &evlist__core(evlist)->entries);
metricgroup__copy_metric_events(evsel_list, /*cgrp=*/NULL,
- &evsel_list->metric_events,
- &evlist->metric_events);
+ evlist__metric_events(evsel_list),
+ evlist__metric_events(evlist));
evlist__put(evlist);
return ret;
}
@@ -2272,7 +2276,7 @@ static int set_maps(struct perf_stat *st)
if (WARN_ONCE(st->maps_allocated, "stats double allocation\n"))
return -EINVAL;
- perf_evlist__set_maps(&evsel_list->core, st->cpus, st->threads);
+ perf_evlist__set_maps(evlist__core(evsel_list), st->cpus, st->threads);
if (evlist__alloc_stats(&stat_config, evsel_list, /*alloc_raw=*/true))
return -ENOMEM;
@@ -2424,7 +2428,7 @@ static void setup_system_wide(int forks)
}
}
- if (evsel_list->core.nr_entries)
+ if (evlist__nr_entries(evsel_list))
target.system_wide = true;
}
}
@@ -2651,7 +2655,7 @@ int cmd_stat(int argc, const char **argv)
stat_config.csv_sep = DEFAULT_SEPARATOR;
if (affinity_set)
- evsel_list->no_affinity = !affinity;
+ evlist__set_no_affinity(evsel_list, !affinity);
if (argc && strlen(argv[0]) > 2 && strstarts("record", argv[0])) {
argc = __cmd_record(stat_options, &opt_mode, argc, argv);
@@ -2818,7 +2822,7 @@ int cmd_stat(int argc, const char **argv)
}
if (stat_config.iostat_run) {
- status = iostat_prepare(evsel_list, &stat_config);
+ status = iostat_prepare(&evsel_list, &stat_config);
if (status)
goto out;
if (iostat_mode == IOSTAT_LIST) {
@@ -2882,9 +2886,10 @@ int cmd_stat(int argc, const char **argv)
}
#ifdef HAVE_BPF_SKEL
if (target.use_bpf && nr_cgroups &&
- (evsel_list->core.nr_entries / nr_cgroups) > BPERF_CGROUP__MAX_EVENTS) {
+ (evlist__nr_entries(evsel_list) / nr_cgroups) > BPERF_CGROUP__MAX_EVENTS) {
pr_warning("Disabling BPF counters due to more events (%d) than the max (%d)\n",
- evsel_list->core.nr_entries / nr_cgroups, BPERF_CGROUP__MAX_EVENTS);
+ evlist__nr_entries(evsel_list) / nr_cgroups,
+ BPERF_CGROUP__MAX_EVENTS);
target.use_bpf = false;
}
#endif // HAVE_BPF_SKEL
@@ -2922,7 +2927,7 @@ int cmd_stat(int argc, const char **argv)
* so we could print it out on output.
*/
if (stat_config.aggr_mode == AGGR_THREAD) {
- thread_map__read_comms(evsel_list->core.threads);
+ thread_map__read_comms(evlist__core(evsel_list)->threads);
}
if (stat_config.aggr_mode == AGGR_NODE)
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index ff24ae35c67fc..5933c46ee137e 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -141,7 +141,7 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
notes = symbol__annotation(sym);
annotation__lock(notes);
- if (!symbol__hists(sym, top->evlist->core.nr_entries)) {
+ if (!symbol__hists(sym, evlist__nr_entries(top->evlist))) {
annotation__unlock(notes);
pr_err("Not enough memory for annotating '%s' symbol!\n",
sym->name);
@@ -267,7 +267,7 @@ static void perf_top__show_details(struct perf_top *top)
more = hist_entry__annotate_printf(he, top->sym_evsel);
- if (top->evlist->enabled) {
+ if (evlist__enabled(top->evlist)) {
if (top->zero)
symbol__annotate_zero_histogram(symbol, top->sym_evsel);
else
@@ -293,7 +293,7 @@ static void perf_top__resort_hists(struct perf_top *t)
*/
hists__unlink(hists);
- if (evlist->enabled) {
+ if (evlist__enabled(evlist)) {
if (t->zero) {
hists__delete_entries(hists);
} else {
@@ -334,13 +334,13 @@ static void perf_top__print_sym_table(struct perf_top *top)
printf("%-*.*s\n", win_width, win_width, graph_dotted_line);
if (!top->record_opts.overwrite &&
- (top->evlist->stats.nr_lost_warned !=
- top->evlist->stats.nr_events[PERF_RECORD_LOST])) {
- top->evlist->stats.nr_lost_warned =
- top->evlist->stats.nr_events[PERF_RECORD_LOST];
+ (evlist__stats(top->evlist)->nr_lost_warned !=
+ evlist__stats(top->evlist)->nr_events[PERF_RECORD_LOST])) {
+ evlist__stats(top->evlist)->nr_lost_warned =
+ evlist__stats(top->evlist)->nr_events[PERF_RECORD_LOST];
color_fprintf(stdout, PERF_COLOR_RED,
"WARNING: LOST %d chunks, Check IO/CPU overload",
- top->evlist->stats.nr_lost_warned);
+ evlist__stats(top->evlist)->nr_lost_warned);
++printed;
}
@@ -447,7 +447,7 @@ static void perf_top__print_mapped_keys(struct perf_top *top)
fprintf(stdout, "\t[d] display refresh delay. \t(%d)\n", top->delay_secs);
fprintf(stdout, "\t[e] display entries (lines). \t(%d)\n", top->print_entries);
- if (top->evlist->core.nr_entries > 1)
+ if (evlist__nr_entries(top->evlist) > 1)
fprintf(stdout, "\t[E] active event counter. \t(%s)\n", evsel__name(top->sym_evsel));
fprintf(stdout, "\t[f] profile display filter (count). \t(%d)\n", top->count_filter);
@@ -482,7 +482,7 @@ static int perf_top__key_mapped(struct perf_top *top, int c)
case 'S':
return 1;
case 'E':
- return top->evlist->core.nr_entries > 1 ? 1 : 0;
+ return evlist__nr_entries(top->evlist) > 1 ? 1 : 0;
default:
break;
}
@@ -528,7 +528,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
}
break;
case 'E':
- if (top->evlist->core.nr_entries > 1) {
+ if (evlist__nr_entries(top->evlist) > 1) {
/* Select 0 as the default event: */
int counter = 0;
@@ -539,7 +539,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
prompt_integer(&counter, "Enter details event counter");
- if (counter >= top->evlist->core.nr_entries) {
+ if (counter >= evlist__nr_entries(top->evlist)) {
top->sym_evsel = evlist__first(top->evlist);
fprintf(stderr, "Sorry, no such event, using %s.\n", evsel__name(top->sym_evsel));
sleep(1);
@@ -598,8 +598,8 @@ static void perf_top__sort_new_samples(void *arg)
{
struct perf_top *t = arg;
- if (t->evlist->selected != NULL)
- t->sym_evsel = t->evlist->selected;
+ if (evlist__selected(t->evlist) != NULL)
+ t->sym_evsel = evlist__selected(t->evlist);
perf_top__resort_hists(t);
@@ -766,7 +766,7 @@ static void perf_event__process_sample(const struct perf_tool *tool,
if (!machine) {
pr_err("%u unprocessable samples recorded.\r",
- top->session->evlist->stats.nr_unprocessable_samples++);
+ evlist__stats(top->session->evlist)->nr_unprocessable_samples++);
return;
}
@@ -859,7 +859,7 @@ perf_top__process_lost(struct perf_top *top, union perf_event *event,
{
top->lost += event->lost.lost;
top->lost_total += event->lost.lost;
- evsel->evlist->stats.total_lost += event->lost.lost;
+ evlist__stats(evsel->evlist)->total_lost += event->lost.lost;
}
static void
@@ -869,7 +869,7 @@ perf_top__process_lost_samples(struct perf_top *top,
{
top->lost += event->lost_samples.lost;
top->lost_total += event->lost_samples.lost;
- evsel->evlist->stats.total_lost_samples += event->lost_samples.lost;
+ evlist__stats(evsel->evlist)->total_lost_samples += event->lost_samples.lost;
}
static u64 last_timestamp;
@@ -881,7 +881,7 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
struct mmap *md;
union perf_event *event;
- md = opts->overwrite ? &evlist->overwrite_mmap[idx] : &evlist->mmap[idx];
+ md = opts->overwrite ? &evlist__overwrite_mmap(evlist)[idx] : &evlist__mmap(evlist)[idx];
if (perf_mmap__read_init(&md->core) < 0)
return;
@@ -918,7 +918,7 @@ static void perf_top__mmap_read(struct perf_top *top)
if (overwrite)
evlist__toggle_bkw_mmap(evlist, BKW_MMAP_DATA_PENDING);
- for (i = 0; i < top->evlist->core.nr_mmaps; i++)
+ for (i = 0; i < evlist__core(top->evlist)->nr_mmaps; i++)
perf_top__mmap_read_idx(top, i);
if (overwrite) {
@@ -1063,7 +1063,7 @@ static int perf_top__start_counters(struct perf_top *top)
goto out_err;
}
- if (evlist__mmap(evlist, opts->mmap_pages) < 0) {
+ if (evlist__do_mmap(evlist, opts->mmap_pages) < 0) {
ui__error("Failed to mmap with %d (%s)\n",
errno, str_error_r(errno, msg, sizeof(msg)));
goto out_err;
@@ -1218,10 +1218,10 @@ static int deliver_event(struct ordered_events *qe,
} else if (event->header.type == PERF_RECORD_LOST_SAMPLES) {
perf_top__process_lost_samples(top, event, evsel);
} else if (event->header.type < PERF_RECORD_MAX) {
- events_stats__inc(&session->evlist->stats, event->header.type);
+ events_stats__inc(evlist__stats(session->evlist), event->header.type);
machine__process_event(machine, event, &sample);
} else
- ++session->evlist->stats.nr_unknown_events;
+ ++evlist__stats(session->evlist)->nr_unknown_events;
ret = 0;
next_event:
@@ -1296,7 +1296,7 @@ static int __cmd_top(struct perf_top *top)
pr_debug("Couldn't synthesize cgroup events.\n");
machine__synthesize_threads(&top->session->machines.host, &opts->target,
- top->evlist->core.threads, true, false,
+ evlist__core(top->evlist)->threads, true, false,
top->nr_threads_synthesize);
perf_set_multithreaded();
@@ -1714,13 +1714,13 @@ int cmd_top(int argc, const char **argv)
if (target__none(target))
target->system_wide = true;
- if (!top.evlist->core.nr_entries) {
+ if (!evlist__nr_entries(top.evlist)) {
struct evlist *def_evlist = evlist__new_default(target, callchain_param.enabled);
if (!def_evlist)
goto out_put_evlist;
- evlist__splice_list_tail(top.evlist, &def_evlist->core.entries);
+ evlist__splice_list_tail(top.evlist, &evlist__core(def_evlist)->entries);
evlist__put(def_evlist);
}
@@ -1797,7 +1797,7 @@ int cmd_top(int argc, const char **argv)
top.session = NULL;
goto out_put_evlist;
}
- top.evlist->session = top.session;
+ evlist__set_session(top.evlist, top.session);
if (setup_sorting(top.evlist, perf_session__env(top.session)) < 0) {
if (sort_order)
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 496863e825023..b605bd7e519e1 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -2023,7 +2023,7 @@ static int trace__symbols_init(struct trace *trace, int argc, const char **argv,
goto out;
err = __machine__synthesize_threads(trace->host, &trace->tool, &trace->opts.target,
- evlist->core.threads, trace__tool_process,
+ evlist__core(evlist)->threads, trace__tool_process,
/*needs_mmap=*/callchain_param.enabled &&
!trace->summary_only,
/*mmap_data=*/false,
@@ -4216,7 +4216,7 @@ static int trace__set_filter_pids(struct trace *trace)
err = augmented_syscalls__set_filter_pids(trace->filter_pids.nr,
trace->filter_pids.entries);
}
- } else if (perf_thread_map__pid(trace->evlist->core.threads, 0) == -1) {
+ } else if (perf_thread_map__pid(evlist__core(trace->evlist)->threads, 0) == -1) {
err = trace__set_filter_loop_pids(trace);
}
@@ -4530,7 +4530,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
fprintf(trace->output, "Couldn't run the workload!\n");
goto out_put_evlist;
}
- workload_pid = evlist->workload.pid;
+ workload_pid = evlist__workload_pid(evlist);
}
err = evlist__open(evlist);
@@ -4582,7 +4582,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
goto out_error_apply_filters;
if (!trace->summary_only || !trace->summary_bpf) {
- err = evlist__mmap(evlist, trace->opts.mmap_pages);
+ err = evlist__do_mmap(evlist, trace->opts.mmap_pages);
if (err < 0)
goto out_error_mmap;
}
@@ -4601,8 +4601,8 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
if (trace->summary_bpf)
trace_start_bpf_summary();
- trace->multiple_threads = perf_thread_map__pid(evlist->core.threads, 0) == -1 ||
- perf_thread_map__nr(evlist->core.threads) > 1 ||
+ trace->multiple_threads = perf_thread_map__pid(evlist__core(evlist)->threads, 0) == -1 ||
+ perf_thread_map__nr(evlist__core(evlist)->threads) > 1 ||
evlist__first(evlist)->core.attr.inherit;
/*
@@ -4619,11 +4619,11 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
again:
before = trace->nr_events;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
union perf_event *event;
struct mmap *md;
- md = &evlist->mmap[i];
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
@@ -5325,7 +5325,7 @@ static int trace__parse_cgroups(const struct option *opt, const char *str, int u
{
struct trace *trace = opt->value;
- if (!list_empty(&trace->evlist->core.entries)) {
+ if (!list_empty(&evlist__core(trace->evlist)->entries)) {
struct option o = {
.value = &trace->evlist,
};
@@ -5599,7 +5599,7 @@ int cmd_trace(int argc, const char **argv)
* .perfconfig trace.add_events, and filter those out.
*/
if (!trace.trace_syscalls && !trace.trace_pgfaults &&
- trace.evlist->core.nr_entries == 0 /* Was --events used? */) {
+ evlist__nr_entries(trace.evlist) == 0 /* Was --events used? */) {
trace.trace_syscalls = true;
}
/*
@@ -5685,7 +5685,7 @@ int cmd_trace(int argc, const char **argv)
symbol_conf.use_callchain = true;
}
- if (trace.evlist->core.nr_entries > 0) {
+ if (evlist__nr_entries(trace.evlist) > 0) {
bool use_btf = false;
evlist__set_default_evsel_handler(trace.evlist, trace__event_handler);
diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
index 2b49b002d749e..2735cc26d7eec 100644
--- a/tools/perf/tests/backward-ring-buffer.c
+++ b/tools/perf/tests/backward-ring-buffer.c
@@ -34,8 +34,8 @@ static int count_samples(struct evlist *evlist, int *sample_count,
{
int i;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- struct mmap *map = &evlist->overwrite_mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ struct mmap *map = &evlist__overwrite_mmap(evlist)[i];
union perf_event *event;
perf_mmap__read_init(&map->core);
@@ -65,7 +65,7 @@ static int do_test(struct evlist *evlist, int mmap_pages,
int err;
char sbuf[STRERR_BUFSIZE];
- err = evlist__mmap(evlist, mmap_pages);
+ err = evlist__do_mmap(evlist, mmap_pages);
if (err < 0) {
pr_debug("evlist__mmap: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
@@ -77,7 +77,7 @@ static int do_test(struct evlist *evlist, int mmap_pages,
evlist__disable(evlist);
err = count_samples(evlist, sample_count, comm_count);
- evlist__munmap(evlist);
+ evlist__do_munmap(evlist);
return err;
}
diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c
index 3c88b7e8387a5..f0e8ea8754ef5 100644
--- a/tools/perf/tests/code-reading.c
+++ b/tools/perf/tests/code-reading.c
@@ -592,8 +592,8 @@ static int process_events(struct machine *machine, struct evlist *evlist,
struct mmap *md;
int i, ret;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- md = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
@@ -781,7 +781,7 @@ static int do_test_code_reading(bool try_kcore)
goto out_put;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
str = events[evidx];
pr_debug("Parsing event '%s'\n", str);
@@ -809,7 +809,7 @@ static int do_test_code_reading(bool try_kcore)
pr_debug("perf_evlist__open() failed!\n%s\n", errbuf);
}
- perf_evlist__set_maps(&evlist->core, NULL, NULL);
+ perf_evlist__set_maps(evlist__core(evlist), NULL, NULL);
evlist__put(evlist);
evlist = NULL;
continue;
@@ -820,7 +820,7 @@ static int do_test_code_reading(bool try_kcore)
if (events[evidx] == NULL)
goto out_put;
- ret = evlist__mmap(evlist, UINT_MAX);
+ ret = evlist__do_mmap(evlist, UINT_MAX);
if (ret < 0) {
pr_debug("evlist__mmap failed\n");
goto out_put;
diff --git a/tools/perf/tests/event-times.c b/tools/perf/tests/event-times.c
index 94ab54ecd3f92..56dd37ca760ec 100644
--- a/tools/perf/tests/event-times.c
+++ b/tools/perf/tests/event-times.c
@@ -50,7 +50,7 @@ static int attach__enable_on_exec(struct evlist *evlist)
static int detach__enable_on_exec(struct evlist *evlist)
{
- waitpid(evlist->workload.pid, NULL, 0);
+ waitpid(evlist__workload_pid(evlist), NULL, 0);
return 0;
}
diff --git a/tools/perf/tests/event_update.c b/tools/perf/tests/event_update.c
index 73141b122d2fc..220cc0347747d 100644
--- a/tools/perf/tests/event_update.c
+++ b/tools/perf/tests/event_update.c
@@ -92,7 +92,7 @@ static int test__event_update(struct test_suite *test __maybe_unused, int subtes
TEST_ASSERT_VAL("failed to allocate ids",
!perf_evsel__alloc_id(&evsel->core, 1, 1));
- perf_evlist__id_add(&evlist->core, &evsel->core, 0, 0, 123);
+ perf_evlist__id_add(evlist__core(evlist), &evsel->core, 0, 0, 123);
free((char *)evsel->unit);
evsel->unit = strdup("KRAVA");
diff --git a/tools/perf/tests/expand-cgroup.c b/tools/perf/tests/expand-cgroup.c
index a7a445f126935..549fbd473ab74 100644
--- a/tools/perf/tests/expand-cgroup.c
+++ b/tools/perf/tests/expand-cgroup.c
@@ -28,7 +28,7 @@ static int test_expand_events(struct evlist *evlist)
TEST_ASSERT_VAL("evlist is empty", !evlist__empty(evlist));
- nr_events = evlist->core.nr_entries;
+ nr_events = evlist__nr_entries(evlist);
ev_name = calloc(nr_events, sizeof(*ev_name));
if (ev_name == NULL) {
pr_debug("memory allocation failure\n");
@@ -54,7 +54,7 @@ static int test_expand_events(struct evlist *evlist)
}
ret = TEST_FAIL;
- if (evlist->core.nr_entries != nr_events * nr_cgrps) {
+ if (evlist__nr_entries(evlist) != nr_events * nr_cgrps) {
pr_debug("event count doesn't match\n");
goto out;
}
diff --git a/tools/perf/tests/hwmon_pmu.c b/tools/perf/tests/hwmon_pmu.c
index 9e89051e7fdc4..e26b3fe3fab15 100644
--- a/tools/perf/tests/hwmon_pmu.c
+++ b/tools/perf/tests/hwmon_pmu.c
@@ -184,9 +184,10 @@ static int do_test(size_t i, bool with_pmu, bool with_alias)
}
ret = TEST_OK;
- if (with_pmu ? (evlist->core.nr_entries != 1) : (evlist->core.nr_entries < 1)) {
+ if (with_pmu ? (evlist__nr_entries(evlist) != 1)
+ : (evlist__nr_entries(evlist) < 1)) {
pr_debug("FAILED %s:%d Unexpected number of events for '%s' of %d\n",
- __FILE__, __LINE__, str, evlist->core.nr_entries);
+ __FILE__, __LINE__, str, evlist__nr_entries(evlist));
ret = TEST_FAIL;
goto out;
}
diff --git a/tools/perf/tests/keep-tracking.c b/tools/perf/tests/keep-tracking.c
index 51cfd65228676..b760041bed307 100644
--- a/tools/perf/tests/keep-tracking.c
+++ b/tools/perf/tests/keep-tracking.c
@@ -37,8 +37,8 @@ static int find_comm(struct evlist *evlist, const char *comm)
int i, found;
found = 0;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- md = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
while ((event = perf_mmap__read_event(&md->core)) != NULL) {
@@ -87,7 +87,7 @@ static int test__keep_tracking(struct test_suite *test __maybe_unused, int subte
evlist = evlist__new();
CHECK_NOT_NULL__(evlist);
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
CHECK__(parse_event(evlist, "dummy:u"));
CHECK__(parse_event(evlist, "cpu-cycles:u"));
@@ -106,7 +106,7 @@ static int test__keep_tracking(struct test_suite *test __maybe_unused, int subte
goto out_err;
}
- CHECK__(evlist__mmap(evlist, UINT_MAX));
+ CHECK__(evlist__do_mmap(evlist, UINT_MAX));
/*
* First, test that a 'comm' event can be found when the event is
diff --git a/tools/perf/tests/mmap-basic.c b/tools/perf/tests/mmap-basic.c
index 5ff58eb2af8de..5cec7644952c7 100644
--- a/tools/perf/tests/mmap-basic.c
+++ b/tools/perf/tests/mmap-basic.c
@@ -81,7 +81,7 @@ static int test__basic_mmap(struct test_suite *test __maybe_unused, int subtest
goto out_free_cpus;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
for (i = 0; i < nsyscalls; ++i) {
char name[64];
@@ -113,7 +113,7 @@ static int test__basic_mmap(struct test_suite *test __maybe_unused, int subtest
expected_nr_events[i] = 1 + rand() % 127;
}
- if (evlist__mmap(evlist, 128) < 0) {
+ if (evlist__do_mmap(evlist, 128) < 0) {
pr_debug("failed to mmap events: %d (%s)\n", errno,
str_error_r(errno, sbuf, sizeof(sbuf)));
goto out_put_evlist;
@@ -124,7 +124,7 @@ static int test__basic_mmap(struct test_suite *test __maybe_unused, int subtest
syscalls[i]();
}
- md = &evlist->mmap[0];
+ md = &evlist__mmap(evlist)[0];
if (perf_mmap__read_init(&md->core) < 0)
goto out_init;
diff --git a/tools/perf/tests/openat-syscall-tp-fields.c b/tools/perf/tests/openat-syscall-tp-fields.c
index b30f286fb421c..5365889d326f8 100644
--- a/tools/perf/tests/openat-syscall-tp-fields.c
+++ b/tools/perf/tests/openat-syscall-tp-fields.c
@@ -64,7 +64,7 @@ static int test__syscall_openat_tp_fields(struct test_suite *test __maybe_unused
evsel__config(evsel, &opts, NULL);
- perf_thread_map__set_pid(evlist->core.threads, 0, getpid());
+ perf_thread_map__set_pid(evlist__core(evlist)->threads, 0, getpid());
err = evlist__open(evlist);
if (err < 0) {
@@ -73,7 +73,7 @@ static int test__syscall_openat_tp_fields(struct test_suite *test __maybe_unused
goto out_put_evlist;
}
- err = evlist__mmap(evlist, UINT_MAX);
+ err = evlist__do_mmap(evlist, UINT_MAX);
if (err < 0) {
pr_debug("evlist__mmap: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
@@ -90,11 +90,11 @@ static int test__syscall_openat_tp_fields(struct test_suite *test __maybe_unused
while (1) {
int before = nr_events;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
union perf_event *event;
struct mmap *md;
- md = &evlist->mmap[i];
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 19dc7b7475d2d..0ad0273da923a 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -109,7 +109,7 @@ static int test__checkevent_tracepoint(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVLIST("wrong number of groups", 0 == evlist__nr_groups(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_TRACEPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong sample_type",
@@ -122,7 +122,7 @@ static int test__checkevent_tracepoint_multi(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", evlist->core.nr_entries > 1, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", evlist__nr_entries(evlist) > 1, evlist);
TEST_ASSERT_EVLIST("wrong number of groups", 0 == evlist__nr_groups(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -144,7 +144,7 @@ static int test__checkevent_raw(struct evlist *evlist)
struct evsel *evsel;
bool raw_type_match = false;
- TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
struct perf_pmu *pmu __maybe_unused = NULL;
@@ -182,7 +182,7 @@ static int test__checkevent_numeric(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", 1 == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 1 == evsel->core.attr.config, evsel);
return TEST_OK;
@@ -193,7 +193,7 @@ static int test__checkevent_symbolic_name(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("unexpected event",
@@ -207,7 +207,7 @@ static int test__checkevent_symbolic_name_config(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("unexpected event",
@@ -228,7 +228,7 @@ static int test__checkevent_symbolic_alias(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type/config", evsel__match(evsel, SOFTWARE, SW_PAGE_FAULTS),
evsel);
return TEST_OK;
@@ -238,7 +238,7 @@ static int test__checkevent_genhw(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 0 != evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_HW_CACHE == evsel->core.attr.type, evsel);
@@ -251,7 +251,7 @@ static int test__checkevent_breakpoint(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type",
@@ -265,7 +265,7 @@ static int test__checkevent_breakpoint_x(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type", HW_BREAKPOINT_X == evsel->core.attr.bp_type, evsel);
@@ -278,7 +278,7 @@ static int test__checkevent_breakpoint_r(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type", HW_BREAKPOINT_R == evsel->core.attr.bp_type, evsel);
@@ -290,7 +290,7 @@ static int test__checkevent_breakpoint_w(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type", HW_BREAKPOINT_W == evsel->core.attr.bp_type, evsel);
@@ -302,7 +302,7 @@ static int test__checkevent_breakpoint_rw(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type",
@@ -316,7 +316,7 @@ static int test__checkevent_tracepoint_modifier(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong exclude_user", evsel->core.attr.exclude_user, evsel);
TEST_ASSERT_EVSEL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel, evsel);
TEST_ASSERT_EVSEL("wrong exclude_hv", evsel->core.attr.exclude_hv, evsel);
@@ -330,7 +330,7 @@ test__checkevent_tracepoint_multi_modifier(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", evlist->core.nr_entries > 1, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", evlist__nr_entries(evlist) > 1, evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, evsel);
@@ -346,7 +346,7 @@ static int test__checkevent_raw_modifier(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("wrong exclude_user", evsel->core.attr.exclude_user, evsel);
@@ -361,7 +361,7 @@ static int test__checkevent_numeric_modifier(struct evlist *evlist)
{
struct evsel *evsel;
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("wrong exclude_user", evsel->core.attr.exclude_user, evsel);
@@ -377,7 +377,7 @@ static int test__checkevent_symbolic_name_modifier(struct evlist *evlist)
struct evsel *evsel;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -394,7 +394,7 @@ static int test__checkevent_exclude_host_modifier(struct evlist *evlist)
struct evsel *evsel;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -409,7 +409,7 @@ static int test__checkevent_exclude_guest_modifier(struct evlist *evlist)
struct evsel *evsel;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -423,7 +423,8 @@ static int test__checkevent_symbolic_alias_modifier(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries",
+ 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, evsel);
TEST_ASSERT_EVSEL("wrong exclude_kernel", evsel->core.attr.exclude_kernel, evsel);
TEST_ASSERT_EVSEL("wrong exclude_hv", evsel->core.attr.exclude_hv, evsel);
@@ -437,7 +438,7 @@ static int test__checkevent_genhw_modifier(struct evlist *evlist)
struct evsel *evsel;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -454,7 +455,7 @@ static int test__checkevent_exclude_idle_modifier(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong exclude idle", evsel->core.attr.exclude_idle, evsel);
@@ -473,7 +474,7 @@ static int test__checkevent_exclude_idle_modifier_1(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong exclude idle", evsel->core.attr.exclude_idle, evsel);
@@ -622,7 +623,7 @@ static int test__checkevent_breakpoint_2_events(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVSEL("wrong number of entries", 2 == evlist->core.nr_entries, evsel);
+ TEST_ASSERT_EVSEL("wrong number of entries", 2 == evlist__nr_entries(evlist), evsel);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong name", evsel__name_is(evsel, "breakpoint1"), evsel);
@@ -641,7 +642,7 @@ static int test__checkevent_pmu(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
struct perf_pmu *core_pmu = perf_pmus__find_core_pmu();
- TEST_ASSERT_EVSEL("wrong number of entries", 1 == evlist->core.nr_entries, evsel);
+ TEST_ASSERT_EVSEL("wrong number of entries", 1 == evlist__nr_entries(evlist), evsel);
TEST_ASSERT_EVSEL("wrong type", core_pmu->type == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", test_hw_config(evsel, 10), evsel);
TEST_ASSERT_EVSEL("wrong config1", 1 == evsel->core.attr.config1, evsel);
@@ -661,7 +662,7 @@ static int test__checkevent_list(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVSEL("wrong number of entries", 3 <= evlist->core.nr_entries, evsel);
+ TEST_ASSERT_EVSEL("wrong number of entries", 3 <= evlist__nr_entries(evlist), evsel);
/* r1 */
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_TRACEPOINT != evsel->core.attr.type, evsel);
@@ -707,14 +708,15 @@ static int test__checkevent_pmu_name(struct evlist *evlist)
char buf[256];
/* default_core/config=1,name=krava/u */
- TEST_ASSERT_EVLIST("wrong number of entries", 2 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries",
+ 2 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", core_pmu->type == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 1 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong name", evsel__name_is(evsel, "krava"), evsel);
/* default_core/config=2/u" */
evsel = evsel__next(evsel);
- TEST_ASSERT_EVSEL("wrong number of entries", 2 == evlist->core.nr_entries, evsel);
+ TEST_ASSERT_EVSEL("wrong number of entries", 2 == evlist__nr_entries(evlist), evsel);
TEST_ASSERT_EVSEL("wrong type", core_pmu->type == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 2 == evsel->core.attr.config, evsel);
snprintf(buf, sizeof(buf), "%s/config=2/u", core_pmu->name);
@@ -729,7 +731,8 @@ static int test__checkevent_pmu_partial_time_callgraph(struct evlist *evlist)
struct perf_pmu *core_pmu = perf_pmus__find_core_pmu();
/* default_core/config=1,call-graph=fp,time,period=100000/ */
- TEST_ASSERT_EVLIST("wrong number of entries", 2 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries",
+ 2 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", core_pmu->type == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 1 == evsel->core.attr.config, evsel);
/*
@@ -760,7 +763,7 @@ static int test__checkevent_pmu_events(struct evlist *evlist)
struct evsel *evsel;
struct perf_pmu *core_pmu = perf_pmus__find_core_pmu();
- TEST_ASSERT_EVLIST("wrong number of entries", 1 <= evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 <= evlist__nr_entries(evlist), evlist);
evlist__for_each_entry(evlist, evsel) {
TEST_ASSERT_EVSEL("wrong type",
@@ -787,8 +790,9 @@ static int test__checkevent_pmu_events_mix(struct evlist *evlist)
* The wild card event will be opened at least once, but it may be
* opened on each core PMU.
*/
- TEST_ASSERT_EVLIST("wrong number of entries", evlist->core.nr_entries >= 2, evlist);
- for (int i = 0; i < evlist->core.nr_entries - 1; i++) {
+ TEST_ASSERT_EVLIST("wrong number of entries",
+ evlist__nr_entries(evlist) >= 2, evlist);
+ for (int i = 0; i < evlist__nr_entries(evlist) - 1; i++) {
evsel = (i == 0 ? evlist__first(evlist) : evsel__next(evsel));
/* pmu-event:u */
TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, evsel);
@@ -905,7 +909,7 @@ static int test__group1(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (num_core_entries(evlist) * 2),
+ evlist__nr_entries(evlist) == (num_core_entries(evlist) * 2),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == num_core_entries(evlist),
@@ -950,7 +954,7 @@ static int test__group2(struct evlist *evlist)
struct evsel *evsel, *leader = NULL;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist) + 1),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist) + 1),
evlist);
/*
* TODO: Currently the software event won't be grouped with the hardware
@@ -1018,7 +1022,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
struct evsel *evsel, *group1_leader = NULL, *group2_leader = NULL;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (3 * perf_pmus__num_core_pmus() + 2),
+ evlist__nr_entries(evlist) == (3 * perf_pmus__num_core_pmus() + 2),
evlist);
/*
* Currently the software event won't be grouped with the hardware event
@@ -1144,7 +1148,7 @@ static int test__group4(struct evlist *evlist __maybe_unused)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (num_core_entries(evlist) * 2),
+ evlist__nr_entries(evlist) == (num_core_entries(evlist) * 2),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
num_core_entries(evlist) == evlist__nr_groups(evlist),
@@ -1191,7 +1195,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (5 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (5 * num_core_entries(evlist)),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == (2 * num_core_entries(evlist)),
@@ -1284,7 +1288,7 @@ static int test__group_gh1(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist)),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == num_core_entries(evlist),
@@ -1329,7 +1333,7 @@ static int test__group_gh2(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist)),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == num_core_entries(evlist),
@@ -1374,7 +1378,7 @@ static int test__group_gh3(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist)),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == num_core_entries(evlist),
@@ -1419,7 +1423,7 @@ static int test__group_gh4(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist)),
evlist);
TEST_ASSERT_EVLIST("wrong number of groups",
evlist__nr_groups(evlist) == num_core_entries(evlist),
@@ -1464,7 +1468,7 @@ static int test__leader_sample1(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (3 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (3 * num_core_entries(evlist)),
evlist);
for (int i = 0; i < num_core_entries(evlist); i++) {
@@ -1520,7 +1524,7 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (2 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (2 * num_core_entries(evlist)),
evlist);
for (int i = 0; i < num_core_entries(evlist); i++) {
@@ -1562,7 +1566,7 @@ static int test__checkevent_pinned_modifier(struct evlist *evlist)
struct evsel *evsel = NULL;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
for (int i = 0; i < num_core_entries(evlist); i++) {
@@ -1581,7 +1585,7 @@ static int test__pinned_group(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == (3 * num_core_entries(evlist)),
+ evlist__nr_entries(evlist) == (3 * num_core_entries(evlist)),
evlist);
for (int i = 0; i < num_core_entries(evlist); i++) {
@@ -1618,7 +1622,7 @@ static int test__checkevent_exclusive_modifier(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, evsel);
TEST_ASSERT_EVSEL("wrong exclude_kernel", evsel->core.attr.exclude_kernel, evsel);
@@ -1634,7 +1638,7 @@ static int test__exclusive_group(struct evlist *evlist)
struct evsel *evsel = NULL, *leader;
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == 3 * num_core_entries(evlist),
+ evlist__nr_entries(evlist) == 3 * num_core_entries(evlist),
evlist);
for (int i = 0; i < num_core_entries(evlist); i++) {
@@ -1669,7 +1673,7 @@ static int test__checkevent_breakpoint_len(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type",
@@ -1684,7 +1688,7 @@ static int test__checkevent_breakpoint_len_w(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_BREAKPOINT == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0 == evsel->core.attr.config, evsel);
TEST_ASSERT_EVSEL("wrong bp_type", HW_BREAKPOINT_W == evsel->core.attr.bp_type, evsel);
@@ -1698,7 +1702,7 @@ test__checkevent_breakpoint_len_rw_modifier(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, evsel);
TEST_ASSERT_EVSEL("wrong exclude_kernel", evsel->core.attr.exclude_kernel, evsel);
TEST_ASSERT_EVSEL("wrong exclude_hv", evsel->core.attr.exclude_hv, evsel);
@@ -1712,7 +1716,7 @@ static int test__checkevent_precise_max_modifier(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == 1 + num_core_entries(evlist),
+ evlist__nr_entries(evlist) == 1 + num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong type/config", evsel__match(evsel, SOFTWARE, SW_TASK_CLOCK), evsel);
return TEST_OK;
@@ -1723,7 +1727,7 @@ static int test__checkevent_config_symbol(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong name setting", evsel__name_is(evsel, "insn"), evsel);
return TEST_OK;
@@ -1733,7 +1737,7 @@ static int test__checkevent_config_raw(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong name setting", evsel__name_is(evsel, "rawpmu"), evsel);
return TEST_OK;
}
@@ -1742,7 +1746,7 @@ static int test__checkevent_config_num(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong name setting", evsel__name_is(evsel, "numpmu"), evsel);
return TEST_OK;
}
@@ -1752,7 +1756,7 @@ static int test__checkevent_config_cache(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong name setting", evsel__name_is(evsel, "cachepmu"), evsel);
return test__checkevent_genhw(evlist);
@@ -1777,7 +1781,7 @@ static int test__intel_pt(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong name setting", evsel__name_is(evsel, "intel_pt//u"), evsel);
return TEST_OK;
}
@@ -1798,7 +1802,8 @@ static int test__ratio_to_prev(struct evlist *evlist)
{
struct evsel *evsel, *leader;
- TEST_ASSERT_VAL("wrong number of entries", 2 * perf_pmus__num_core_pmus() == evlist->core.nr_entries);
+ TEST_ASSERT_VAL("wrong number of entries",
+ 2 * perf_pmus__num_core_pmus() == evlist__nr_entries(evlist));
evlist__for_each_entry(evlist, evsel) {
if (evsel != evsel__leader(evsel) ||
@@ -1842,7 +1847,7 @@ static int test__checkevent_complex_name(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("wrong complex name parsing",
evsel__name_is(evsel,
@@ -1855,7 +1860,7 @@ static int test__checkevent_raw_pmu(struct evlist *evlist)
{
struct evsel *evsel = evlist__first(evlist);
- TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist->core.nr_entries, evlist);
+ TEST_ASSERT_EVLIST("wrong number of entries", 1 == evlist__nr_entries(evlist), evlist);
TEST_ASSERT_EVSEL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type, evsel);
TEST_ASSERT_EVSEL("wrong config", 0x1a == evsel->core.attr.config, evsel);
return TEST_OK;
@@ -1866,7 +1871,7 @@ static int test__sym_event_slash(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("unexpected event", evsel__match(evsel, HARDWARE, HW_CPU_CYCLES), evsel);
TEST_ASSERT_EVSEL("wrong exclude_kernel", evsel->core.attr.exclude_kernel, evsel);
@@ -1878,7 +1883,7 @@ static int test__sym_event_dc(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("unexpected event", evsel__match(evsel, HARDWARE, HW_CPU_CYCLES), evsel);
TEST_ASSERT_EVSEL("wrong exclude_user", evsel->core.attr.exclude_user, evsel);
@@ -1890,7 +1895,7 @@ static int test__term_equal_term(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("unexpected event", evsel__match(evsel, HARDWARE, HW_CPU_CYCLES), evsel);
TEST_ASSERT_EVSEL("wrong name setting", strcmp(evsel->name, "name") == 0, evsel);
@@ -1902,7 +1907,7 @@ static int test__term_equal_legacy(struct evlist *evlist)
struct evsel *evsel = evlist__first(evlist);
TEST_ASSERT_EVLIST("wrong number of entries",
- evlist->core.nr_entries == num_core_entries(evlist),
+ evlist__nr_entries(evlist) == num_core_entries(evlist),
evlist);
TEST_ASSERT_EVSEL("unexpected event", evsel__match(evsel, HARDWARE, HW_CPU_CYCLES), evsel);
TEST_ASSERT_EVSEL("wrong name setting", strcmp(evsel->name, "l1d") == 0, evsel);
@@ -1958,7 +1963,7 @@ static int count_tracepoints(void)
static int test__all_tracepoints(struct evlist *evlist)
{
TEST_ASSERT_VAL("wrong events count",
- count_tracepoints() == evlist->core.nr_entries);
+ count_tracepoints() == evlist__nr_entries(evlist));
return test__checkevent_tracepoint_multi(evlist);
}
diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c
index 3f0ec839c056a..8f9211eaf341e 100644
--- a/tools/perf/tests/parse-metric.c
+++ b/tools/perf/tests/parse-metric.c
@@ -53,7 +53,7 @@ static double compute_single(struct evlist *evlist, const char *name)
struct evsel *evsel;
evlist__for_each_entry(evlist, evsel) {
- me = metricgroup__lookup(&evlist->metric_events, evsel, false);
+ me = metricgroup__lookup(evlist__metric_events(evlist), evsel, false);
if (me != NULL) {
list_for_each_entry (mexp, &me->head, nd) {
if (strcmp(mexp->metric_name, name))
@@ -88,7 +88,7 @@ static int __compute_metric(const char *name, struct value *vals,
return -ENOMEM;
}
- perf_evlist__set_maps(&evlist->core, cpus, NULL);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, NULL);
/* Parse the metric into metric_events list. */
pme_test = find_core_metrics_table("testarch", "testcpu");
diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c
index f95752b2ed1c0..0cac6ae1a1fc0 100644
--- a/tools/perf/tests/perf-record.c
+++ b/tools/perf/tests/perf-record.c
@@ -129,7 +129,7 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
evsel__set_sample_bit(evsel, TIME);
evlist__config(evlist, &opts, NULL);
- err = sched__get_first_possible_cpu(evlist->workload.pid, cpu_mask);
+ err = sched__get_first_possible_cpu(evlist__workload_pid(evlist), cpu_mask);
if (err < 0) {
pr_debug("sched__get_first_possible_cpu: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
@@ -142,7 +142,7 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
/*
* So that we can check perf_sample.cpu on all the samples.
*/
- if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, cpu_mask) < 0) {
+ if (sched_setaffinity(evlist__workload_pid(evlist), cpu_mask_size, cpu_mask) < 0) {
pr_debug("sched_setaffinity: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
evlist__cancel_workload(evlist);
@@ -166,7 +166,7 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
* fds in the same CPU to be injected in the same mmap ring buffer
* (using ioctl(PERF_EVENT_IOC_SET_OUTPUT)).
*/
- err = evlist__mmap(evlist, opts.mmap_pages);
+ err = evlist__do_mmap(evlist, opts.mmap_pages);
if (err < 0) {
pr_debug("evlist__mmap: %s\n",
str_error_r(errno, sbuf, sizeof(sbuf)));
@@ -188,11 +188,11 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
while (1) {
int before = total_events;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
union perf_event *event;
struct mmap *md;
- md = &evlist->mmap[i];
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
@@ -231,15 +231,15 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
++errs;
}
- if ((pid_t)sample.pid != evlist->workload.pid) {
+ if ((pid_t)sample.pid != evlist__workload_pid(evlist)) {
pr_debug("%s with unexpected pid, expected %d, got %d\n",
- name, evlist->workload.pid, sample.pid);
+ name, evlist__workload_pid(evlist), sample.pid);
++errs;
}
- if ((pid_t)sample.tid != evlist->workload.pid) {
+ if ((pid_t)sample.tid != evlist__workload_pid(evlist)) {
pr_debug("%s with unexpected tid, expected %d, got %d\n",
- name, evlist->workload.pid, sample.tid);
+ name, evlist__workload_pid(evlist), sample.tid);
++errs;
}
@@ -248,7 +248,7 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
type == PERF_RECORD_MMAP2 ||
type == PERF_RECORD_FORK ||
type == PERF_RECORD_EXIT) &&
- (pid_t)event->comm.pid != evlist->workload.pid) {
+ (pid_t)event->comm.pid != evlist__workload_pid(evlist)) {
pr_debug("%s with unexpected pid/tid\n", name);
++errs;
}
@@ -352,9 +352,9 @@ static int test__PERF_RECORD(struct test_suite *test __maybe_unused, int subtest
}
out_put_evlist:
CPU_FREE(cpu_mask);
- evlist__put(evlist);
out:
perf_sample__exit(&sample);
+ evlist__put(evlist);
if (err == -EACCES)
return TEST_SKIP;
if (err < 0 || errs != 0)
diff --git a/tools/perf/tests/perf-time-to-tsc.c b/tools/perf/tests/perf-time-to-tsc.c
index d3538fa20af30..f8f71fdd32b1b 100644
--- a/tools/perf/tests/perf-time-to-tsc.c
+++ b/tools/perf/tests/perf-time-to-tsc.c
@@ -99,7 +99,7 @@ static int test__perf_time_to_tsc(struct test_suite *test __maybe_unused, int su
evlist = evlist__new();
CHECK_NOT_NULL__(evlist);
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
CHECK__(parse_event(evlist, "cpu-cycles:u"));
@@ -121,9 +121,9 @@ static int test__perf_time_to_tsc(struct test_suite *test __maybe_unused, int su
goto out_err;
}
- CHECK__(evlist__mmap(evlist, UINT_MAX));
+ CHECK__(evlist__do_mmap(evlist, UINT_MAX));
- pc = evlist->mmap[0].core.base;
+ pc = evlist__mmap(evlist)[0].core.base;
ret = perf_read_tsc_conversion(pc, &tc);
if (ret) {
if (ret == -EOPNOTSUPP) {
@@ -145,8 +145,8 @@ static int test__perf_time_to_tsc(struct test_suite *test __maybe_unused, int su
evlist__disable(evlist);
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- md = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
diff --git a/tools/perf/tests/pfm.c b/tools/perf/tests/pfm.c
index 8d19b1bfecbca..f7bf55be5e6ee 100644
--- a/tools/perf/tests/pfm.c
+++ b/tools/perf/tests/pfm.c
@@ -69,12 +69,12 @@ static int test__pfm_events(struct test_suite *test __maybe_unused,
if (evlist == NULL)
return -ENOMEM;
- opt.value = evlist;
+ opt.value = &evlist;
parse_libpfm_events_option(&opt,
table[i].events,
0);
TEST_ASSERT_EQUAL(table[i].events,
- count_pfm_events(&evlist->core),
+ count_pfm_events(evlist__core(evlist)),
table[i].nr_events);
TEST_ASSERT_EQUAL(table[i].events,
evlist__nr_groups(evlist),
@@ -154,12 +154,12 @@ static int test__pfm_group(struct test_suite *test __maybe_unused,
if (evlist == NULL)
return -ENOMEM;
- opt.value = evlist;
+ opt.value = &evlist;
parse_libpfm_events_option(&opt,
table[i].events,
0);
TEST_ASSERT_EQUAL(table[i].events,
- count_pfm_events(&evlist->core),
+ count_pfm_events(evlist__core(evlist)),
table[i].nr_events);
TEST_ASSERT_EQUAL(table[i].events,
evlist__nr_groups(evlist),
diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
index 4ea6d392085b2..4c6fc1207b6de 100644
--- a/tools/perf/tests/pmu-events.c
+++ b/tools/perf/tests/pmu-events.c
@@ -869,7 +869,7 @@ static int test__parsing_callback(const struct pmu_metric *pm,
return -ENOMEM;
}
- perf_evlist__set_maps(&evlist->core, cpus, NULL);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, NULL);
err = metricgroup__parse_groups_test(evlist, table, pm->metric_name);
if (err) {
@@ -895,7 +895,8 @@ static int test__parsing_callback(const struct pmu_metric *pm,
k++;
}
evlist__for_each_entry(evlist, evsel) {
- struct metric_event *me = metricgroup__lookup(&evlist->metric_events, evsel, false);
+ struct metric_event *me = metricgroup__lookup(evlist__metric_events(evlist),
+ evsel, false);
if (me != NULL) {
struct metric_expr *mexp;
diff --git a/tools/perf/tests/sample-parsing.c b/tools/perf/tests/sample-parsing.c
index 55f0b73ca20e0..20cab91ceaeb2 100644
--- a/tools/perf/tests/sample-parsing.c
+++ b/tools/perf/tests/sample-parsing.c
@@ -205,15 +205,11 @@ static bool samples_same(struct perf_sample *s1,
static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
{
- struct evsel evsel = {
- .needs_swap = false,
- .core = {
- . attr = {
- .sample_type = sample_type,
- .read_format = read_format,
- },
- },
+ struct perf_event_attr attr = {
+ .sample_type = sample_type,
+ .read_format = read_format,
};
+ struct evsel *evsel;
union perf_event *event;
union {
struct ip_callchain callchain;
@@ -287,16 +283,21 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
size_t i, sz, bufsz;
int err, ret = -1;
+ evsel = evsel__new(&attr);
+ if (!evsel) {
+ pr_debug("evsel__new failed\n");
+ return -1;
+ }
perf_sample__init(&sample_out, /*all=*/false);
perf_sample__init(&sample_out_endian, /*all=*/false);
if (sample_type & PERF_SAMPLE_REGS_USER)
- evsel.core.attr.sample_regs_user = sample_regs;
+ evsel->core.attr.sample_regs_user = sample_regs;
if (sample_type & PERF_SAMPLE_REGS_INTR)
- evsel.core.attr.sample_regs_intr = sample_regs;
+ evsel->core.attr.sample_regs_intr = sample_regs;
if (sample_type & PERF_SAMPLE_BRANCH_STACK)
- evsel.core.attr.branch_sample_type |= PERF_SAMPLE_BRANCH_HW_INDEX;
+ evsel->core.attr.branch_sample_type |= PERF_SAMPLE_BRANCH_HW_INDEX;
for (i = 0; i < sizeof(regs); i++)
*(i + (u8 *)regs) = i & 0xfe;
@@ -311,12 +312,12 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
}
sz = perf_event__sample_event_size(&sample, sample_type, read_format,
- evsel.core.attr.branch_sample_type);
+ evsel->core.attr.branch_sample_type);
bufsz = sz + 4096; /* Add a bit for overrun checking */
event = malloc(bufsz);
if (!event) {
pr_debug("malloc failed\n");
- return -1;
+ goto out_free;
}
memset(event, 0xff, bufsz);
@@ -325,7 +326,7 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
event->header.size = sz;
err = perf_event__synthesize_sample(event, sample_type, read_format,
- evsel.core.attr.branch_sample_type, &sample);
+ evsel->core.attr.branch_sample_type, &sample);
if (err) {
pr_debug("%s failed for sample_type %#"PRIx64", error %d\n",
"perf_event__synthesize_sample", sample_type, err);
@@ -343,32 +344,33 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
goto out_free;
}
- evsel.sample_size = __evsel__sample_size(sample_type);
+ evsel->sample_size = __evsel__sample_size(sample_type);
- err = evsel__parse_sample(&evsel, event, &sample_out);
+ err = evsel__parse_sample(evsel, event, &sample_out);
if (err) {
pr_debug("%s failed for sample_type %#"PRIx64", error %d\n",
"evsel__parse_sample", sample_type, err);
goto out_free;
}
- if (!samples_same(&sample, &sample_out, sample_type, read_format, evsel.needs_swap)) {
+ if (!samples_same(&sample, &sample_out, sample_type, read_format, evsel->needs_swap)) {
pr_debug("parsing failed for sample_type %#"PRIx64"\n",
sample_type);
goto out_free;
}
if (sample_type == PERF_SAMPLE_BRANCH_STACK) {
- evsel.needs_swap = true;
- evsel.sample_size = __evsel__sample_size(sample_type);
- err = evsel__parse_sample(&evsel, event, &sample_out_endian);
+ evsel->needs_swap = true;
+ evsel->sample_size = __evsel__sample_size(sample_type);
+ err = evsel__parse_sample(evsel, event, &sample_out_endian);
if (err) {
pr_debug("%s failed for sample_type %#"PRIx64", error %d\n",
"evsel__parse_sample", sample_type, err);
goto out_free;
}
- if (!samples_same(&sample, &sample_out_endian, sample_type, read_format, evsel.needs_swap)) {
+ if (!samples_same(&sample, &sample_out_endian, sample_type,
+ read_format, evsel->needs_swap)) {
pr_debug("parsing failed for sample_type %#"PRIx64"\n",
sample_type);
goto out_free;
@@ -380,6 +382,7 @@ static int do_test(u64 sample_type, u64 sample_regs, u64 read_format)
free(event);
perf_sample__exit(&sample_out_endian);
perf_sample__exit(&sample_out);
+ evsel__put(evsel);
if (ret && read_format)
pr_debug("read_format %#"PRIx64"\n", read_format);
return ret;
diff --git a/tools/perf/tests/sw-clock.c b/tools/perf/tests/sw-clock.c
index bb6b62cf51d17..d181858816352 100644
--- a/tools/perf/tests/sw-clock.c
+++ b/tools/perf/tests/sw-clock.c
@@ -71,7 +71,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
goto out_put_evlist;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
if (evlist__open(evlist)) {
const char *knob = "/proc/sys/kernel/perf_event_max_sample_rate";
@@ -83,7 +83,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
goto out_put_evlist;
}
- err = evlist__mmap(evlist, 128);
+ err = evlist__do_mmap(evlist, 128);
if (err < 0) {
pr_debug("failed to mmap event: %d (%s)\n", errno,
str_error_r(errno, sbuf, sizeof(sbuf)));
@@ -98,7 +98,7 @@ static int __test__sw_clock_freq(enum perf_sw_ids clock_id)
evlist__disable(evlist);
- md = &evlist->mmap[0];
+ md = &evlist__mmap(evlist)[0];
if (perf_mmap__read_init(&md->core) < 0)
goto out_init;
diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-tracking.c
index abd08d60179c5..73568c782d72b 100644
--- a/tools/perf/tests/switch-tracking.c
+++ b/tools/perf/tests/switch-tracking.c
@@ -237,6 +237,7 @@ static int add_event(struct evlist *evlist, struct list_head *events,
if (evlist__parse_sample(evlist, event, &sample)) {
pr_debug("evlist__parse_sample failed\n");
+ perf_sample__exit(&sample);
return -1;
}
@@ -282,8 +283,8 @@ static int process_events(struct evlist *evlist,
struct mmap *md;
int i, ret;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- md = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ md = &evlist__mmap(evlist)[i];
if (perf_mmap__read_init(&md->core) < 0)
continue;
@@ -374,7 +375,7 @@ static int test__switch_tracking(struct test_suite *test __maybe_unused, int sub
goto out_err;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
/* First event */
err = parse_event(evlist, "cpu-clock:u");
@@ -471,7 +472,7 @@ static int test__switch_tracking(struct test_suite *test __maybe_unused, int sub
goto out;
}
- err = evlist__mmap(evlist, UINT_MAX);
+ err = evlist__do_mmap(evlist, UINT_MAX);
if (err) {
pr_debug("evlist__mmap failed!\n");
goto out_err;
diff --git a/tools/perf/tests/task-exit.c b/tools/perf/tests/task-exit.c
index a46650b10689e..95393edbfe363 100644
--- a/tools/perf/tests/task-exit.c
+++ b/tools/perf/tests/task-exit.c
@@ -77,7 +77,7 @@ static int test__task_exit(struct test_suite *test __maybe_unused, int subtest _
goto out_put_evlist;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
err = evlist__prepare_workload(evlist, &target, argv, false, workload_exec_failed_signal);
if (err < 0) {
@@ -104,7 +104,7 @@ static int test__task_exit(struct test_suite *test __maybe_unused, int subtest _
goto out_put_evlist;
}
- if (evlist__mmap(evlist, 128) < 0) {
+ if (evlist__do_mmap(evlist, 128) < 0) {
pr_debug("failed to mmap events: %d (%s)\n", errno,
str_error_r(errno, sbuf, sizeof(sbuf)));
err = -1;
@@ -114,7 +114,7 @@ static int test__task_exit(struct test_suite *test __maybe_unused, int subtest _
evlist__start_workload(evlist);
retry:
- md = &evlist->mmap[0];
+ md = &evlist__mmap(evlist)[0];
if (perf_mmap__read_init(&md->core) < 0)
goto out_init;
diff --git a/tools/perf/tests/time-utils-test.c b/tools/perf/tests/time-utils-test.c
index 38df10373c1e1..90a9a4b4f1789 100644
--- a/tools/perf/tests/time-utils-test.c
+++ b/tools/perf/tests/time-utils-test.c
@@ -69,16 +69,19 @@ struct test_data {
static bool test__perf_time__parse_for_ranges(struct test_data *d)
{
- struct evlist evlist = {
- .first_sample_time = d->first,
- .last_sample_time = d->last,
- };
- struct perf_session session = { .evlist = &evlist };
+ struct evlist *evlist = evlist__new();
+ struct perf_session session = { .evlist = evlist };
struct perf_time_interval *ptime = NULL;
int range_size, range_num;
bool pass = false;
int i, err;
+ if (!evlist) {
+ pr_debug("Missing evlist\n");
+ return false;
+ }
+ evlist__set_first_sample_time(evlist, d->first);
+ evlist__set_last_sample_time(evlist, d->last);
pr_debug("\nperf_time__parse_for_ranges(\"%s\")\n", d->str);
if (strchr(d->str, '%'))
@@ -127,6 +130,7 @@ static bool test__perf_time__parse_for_ranges(struct test_data *d)
pass = true;
out:
+ evlist__put(evlist);
free(ptime);
return pass;
}
diff --git a/tools/perf/tests/tool_pmu.c b/tools/perf/tests/tool_pmu.c
index e78ff9dcea97f..c6c5ebf0e935f 100644
--- a/tools/perf/tests/tool_pmu.c
+++ b/tools/perf/tests/tool_pmu.c
@@ -40,9 +40,10 @@ static int do_test(enum tool_pmu_event ev, bool with_pmu)
}
ret = TEST_OK;
- if (with_pmu ? (evlist->core.nr_entries != 1) : (evlist->core.nr_entries < 1)) {
+ if (with_pmu ? (evlist__nr_entries(evlist) != 1)
+ : (evlist__nr_entries(evlist) < 1)) {
pr_debug("FAILED %s:%d Unexpected number of events for '%s' of %d\n",
- __FILE__, __LINE__, str, evlist->core.nr_entries);
+ __FILE__, __LINE__, str, evlist__nr_entries(evlist));
ret = TEST_FAIL;
goto out;
}
diff --git a/tools/perf/tests/topology.c b/tools/perf/tests/topology.c
index 15741abec8c6d..77cb8318c0b18 100644
--- a/tools/perf/tests/topology.c
+++ b/tools/perf/tests/topology.c
@@ -46,7 +46,7 @@ static int session_write_header(char *path)
session->evlist = evlist__new_default(&target, /*sample_callchains=*/false);
TEST_ASSERT_VAL("can't get evlist", session->evlist);
- session->evlist->session = session;
+ evlist__set_session(session->evlist, session);
perf_header__set_feat(&session->header, HEADER_CPU_TOPOLOGY);
perf_header__set_feat(&session->header, HEADER_NRCPUS);
diff --git a/tools/perf/tests/uncore-event-sorting.c b/tools/perf/tests/uncore-event-sorting.c
index 2e741aef4a59d..7756777c54c2e 100644
--- a/tools/perf/tests/uncore-event-sorting.c
+++ b/tools/perf/tests/uncore-event-sorting.c
@@ -147,8 +147,8 @@ static int test__uncore_event_sorting(struct test_suite *test __maybe_unused,
goto out_err;
}
- CHECK_COND(evlist->core.nr_entries >= 4, "Number of events is >= 4");
- CHECK_EQUAL(evlist->core.nr_entries % 2, 0, "Number of events is a multiple of 2");
+ CHECK_COND(evlist__nr_entries(evlist) >= 4, "Number of events is >= 4");
+ CHECK_EQUAL(evlist__nr_entries(evlist) % 2, 0, "Number of events is a multiple of 2");
evlist__for_each_entry(evlist, evsel) {
struct evsel *next;
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 97ae4c86bebbe..d25761a8d25eb 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -597,7 +597,7 @@ static bool annotate_browser__callq(struct annotate_browser *browser,
notes = symbol__annotation(dl->ops.target.sym);
annotation__lock(notes);
- if (!symbol__hists(dl->ops.target.sym, evsel->evlist->core.nr_entries)) {
+ if (!symbol__hists(dl->ops.target.sym, evlist__nr_entries(evsel->evlist))) {
annotation__unlock(notes);
ui__warning("Not enough memory for annotating '%s' symbol!\n",
dl->ops.target.sym->name);
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index cfa6386e6e1da..da7cc195b9f41 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -688,10 +688,10 @@ static int hist_browser__handle_hotkey(struct hist_browser *browser, bool warn_l
ui_browser__update_nr_entries(&browser->b, nr_entries);
if (warn_lost_event &&
- (evsel->evlist->stats.nr_lost_warned !=
- evsel->evlist->stats.nr_events[PERF_RECORD_LOST])) {
- evsel->evlist->stats.nr_lost_warned =
- evsel->evlist->stats.nr_events[PERF_RECORD_LOST];
+ (evlist__stats(evsel->evlist)->nr_lost_warned !=
+ evlist__stats(evsel->evlist)->nr_events[PERF_RECORD_LOST])) {
+ evlist__stats(evsel->evlist)->nr_lost_warned =
+ evlist__stats(evsel->evlist)->nr_events[PERF_RECORD_LOST];
ui_browser__warn_lost_events(&browser->b);
}
@@ -3321,7 +3321,7 @@ static int evsel__hists_browse(struct evsel *evsel, int nr_events, const char *h
* No need to refresh, resort/decay histogram
* entries if we are not collecting samples:
*/
- if (top->evlist->enabled) {
+ if (evlist__enabled(top->evlist)) {
helpline = "Press 'f' to disable the events or 'h' to see other hotkeys";
hbt->refresh = delay_secs;
} else {
@@ -3493,7 +3493,7 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
unit, unit == ' ' ? "" : " ", ev_name);
ui_browser__printf(browser, "%s", bf);
- nr_events = evsel->evlist->stats.nr_events[PERF_RECORD_LOST];
+ nr_events = evlist__stats(evsel->evlist)->nr_events[PERF_RECORD_LOST];
if (nr_events != 0) {
menu->lost_events = true;
if (!current_entry)
@@ -3559,13 +3559,13 @@ static int perf_evsel_menu__run(struct evsel_menu *menu,
ui_browser__show_title(&menu->b, title);
switch (key) {
case K_TAB:
- if (pos->core.node.next == &evlist->core.entries)
+ if (pos->core.node.next == &evlist__core(evlist)->entries)
pos = evlist__first(evlist);
else
pos = evsel__next(pos);
goto browse_hists;
case K_UNTAB:
- if (pos->core.node.prev == &evlist->core.entries)
+ if (pos->core.node.prev == &evlist__core(evlist)->entries)
pos = evlist__last(evlist);
else
pos = evsel__prev(pos);
@@ -3618,7 +3618,7 @@ static int __evlist__tui_browse_hists(struct evlist *evlist, int nr_entries, con
struct evsel *pos;
struct evsel_menu menu = {
.b = {
- .entries = &evlist->core.entries,
+ .entries = &evlist__core(evlist)->entries,
.refresh = ui_browser__list_head_refresh,
.seek = ui_browser__list_head_seek,
.write = perf_evsel_menu__write,
@@ -3646,7 +3646,7 @@ static int __evlist__tui_browse_hists(struct evlist *evlist, int nr_entries, con
static bool evlist__single_entry(struct evlist *evlist)
{
- int nr_entries = evlist->core.nr_entries;
+ int nr_entries = evlist__nr_entries(evlist);
if (nr_entries == 1)
return true;
@@ -3664,7 +3664,7 @@ static bool evlist__single_entry(struct evlist *evlist)
int evlist__tui_browse_hists(struct evlist *evlist, const char *help, struct hist_browser_timer *hbt,
float min_pcnt, struct perf_env *env, bool warn_lost_event)
{
- int nr_entries = evlist->core.nr_entries;
+ int nr_entries = evlist__nr_entries(evlist);
if (evlist__single_entry(evlist)) {
single_entry: {
diff --git a/tools/perf/util/amd-sample-raw.c b/tools/perf/util/amd-sample-raw.c
index 394c061fbeb38..cda3836329c3a 100644
--- a/tools/perf/util/amd-sample-raw.c
+++ b/tools/perf/util/amd-sample-raw.c
@@ -421,7 +421,7 @@ static void parse_cpuid(struct perf_env *env)
*/
bool evlist__has_amd_ibs(struct evlist *evlist)
{
- struct perf_env *env = perf_session__env(evlist->session);
+ struct perf_env *env = perf_session__env(evlist__session(evlist));
int ret, nr_pmu_mappings = perf_env__nr_pmu_mappings(env);
const char *pmu_mapping = perf_env__pmu_mappings(env);
char name[sizeof("ibs_fetch")];
diff --git a/tools/perf/util/annotate-data.c b/tools/perf/util/annotate-data.c
index 63e3c54fab421..4e4c587640823 100644
--- a/tools/perf/util/annotate-data.c
+++ b/tools/perf/util/annotate-data.c
@@ -1829,7 +1829,7 @@ int annotated_data_type__update_samples(struct annotated_data_type *adt,
return 0;
if (adt->histograms == NULL) {
- int nr = evsel->evlist->core.nr_entries;
+ int nr = evlist__nr_entries(evsel->evlist);
if (alloc_data_type_histograms(adt, nr) < 0)
return -1;
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 02505222d8c2d..53b2a224b21df 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -328,7 +328,7 @@ static int symbol__inc_addr_samples(struct map_symbol *ms,
if (sym == NULL)
return 0;
- src = symbol__hists(sym, sample->evsel->evlist->core.nr_entries);
+ src = symbol__hists(sym, evlist__nr_entries(sample->evsel->evlist));
return src ? __symbol__inc_addr_samples(ms, src, addr, sample) : 0;
}
@@ -339,7 +339,7 @@ static int symbol__account_br_cntr(struct annotated_branch *branch,
{
unsigned int br_cntr_nr = evsel__leader(evsel)->br_cntr_nr;
unsigned int base = evsel__leader(evsel)->br_cntr_idx;
- unsigned int off = offset * evsel->evlist->nr_br_cntr;
+ unsigned int off = offset * evlist__nr_br_cntr(evsel->evlist);
u64 *branch_br_cntr = branch->br_cntr;
unsigned int i, mask, width;
@@ -369,7 +369,7 @@ static int symbol__account_cycles(u64 addr, u64 start, struct symbol *sym,
if (sym == NULL)
return 0;
- branch = symbol__find_branch_hist(sym, evsel->evlist->nr_br_cntr);
+ branch = symbol__find_branch_hist(sym, evlist__nr_br_cntr(evsel->evlist));
if (!branch)
return -ENOMEM;
if (addr < sym->start || addr >= sym->end)
@@ -511,7 +511,7 @@ static void annotation__count_and_fill(struct annotation *notes, u64 start, u64
static int annotation__compute_ipc(struct annotation *notes, size_t size,
struct evsel *evsel)
{
- unsigned int br_cntr_nr = evsel->evlist->nr_br_cntr;
+ unsigned int br_cntr_nr = evlist__nr_br_cntr(evsel->evlist);
int err = 0;
s64 offset;
@@ -1813,7 +1813,7 @@ int annotation_br_cntr_abbr_list(char **str, struct evsel *evsel, bool header)
struct evsel *pos;
struct strbuf sb;
- if (evsel->evlist->nr_br_cntr <= 0)
+ if (evlist__nr_br_cntr(evsel->evlist) <= 0)
return -ENOTSUP;
strbuf_init(&sb, /*hint=*/ 0);
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
index 4cd2caf540152..0b851f32e98c8 100644
--- a/tools/perf/util/auxtrace.c
+++ b/tools/perf/util/auxtrace.c
@@ -191,7 +191,7 @@ void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp,
struct evlist *evlist,
struct evsel *evsel, int idx)
{
- bool per_cpu = !perf_cpu_map__has_any_cpu(evlist->core.user_requested_cpus);
+ bool per_cpu = !perf_cpu_map__has_any_cpu(evlist__core(evlist)->user_requested_cpus);
mp->mmap_needed = evsel->needs_auxtrace_mmap;
@@ -201,11 +201,11 @@ void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp,
mp->idx = idx;
if (per_cpu) {
- mp->cpu = perf_cpu_map__cpu(evlist->core.all_cpus, idx);
- mp->tid = perf_thread_map__pid(evlist->core.threads, 0);
+ mp->cpu = perf_cpu_map__cpu(evlist__core(evlist)->all_cpus, idx);
+ mp->tid = perf_thread_map__pid(evlist__core(evlist)->threads, 0);
} else {
mp->cpu.cpu = -1;
- mp->tid = perf_thread_map__pid(evlist->core.threads, idx);
+ mp->tid = perf_thread_map__pid(evlist__core(evlist)->threads, idx);
}
}
@@ -668,10 +668,10 @@ int auxtrace_parse_snapshot_options(struct auxtrace_record *itr,
static int evlist__enable_event_idx(struct evlist *evlist, struct evsel *evsel, int idx)
{
- bool per_cpu_mmaps = !perf_cpu_map__has_any_cpu(evlist->core.user_requested_cpus);
+ bool per_cpu_mmaps = !perf_cpu_map__has_any_cpu(evlist__core(evlist)->user_requested_cpus);
if (per_cpu_mmaps) {
- struct perf_cpu evlist_cpu = perf_cpu_map__cpu(evlist->core.all_cpus, idx);
+ struct perf_cpu evlist_cpu = perf_cpu_map__cpu(evlist__core(evlist)->all_cpus, idx);
int cpu_map_idx = perf_cpu_map__idx(evsel->core.cpus, evlist_cpu);
if (cpu_map_idx == -1)
@@ -1838,7 +1838,7 @@ void perf_session__auxtrace_error_inc(struct perf_session *session,
struct perf_record_auxtrace_error *e = &event->auxtrace_error;
if (e->type < PERF_AUXTRACE_ERROR_MAX)
- session->evlist->stats.nr_auxtrace_errors[e->type] += 1;
+ evlist__stats(session->evlist)->nr_auxtrace_errors[e->type] += 1;
}
void events_stats__auxtrace_error_warn(const struct events_stats *stats)
diff --git a/tools/perf/util/block-info.c b/tools/perf/util/block-info.c
index 8d3a9a661f267..1135e54f4c7fc 100644
--- a/tools/perf/util/block-info.c
+++ b/tools/perf/util/block-info.c
@@ -472,7 +472,7 @@ struct block_report *block_info__create_report(struct evlist *evlist,
int *nr_reps)
{
struct block_report *block_reports;
- int nr_hists = evlist->core.nr_entries, i = 0;
+ int nr_hists = evlist__nr_entries(evlist), i = 0;
struct evsel *pos;
block_reports = calloc(nr_hists, sizeof(struct block_report));
@@ -483,7 +483,7 @@ struct block_report *block_info__create_report(struct evlist *evlist,
struct hists *hists = evsel__hists(pos);
process_block_report(hists, &block_reports[i], total_cycles,
- block_hpps, nr_hpps, evlist->nr_br_cntr);
+ block_hpps, nr_hpps, evlist__nr_br_cntr(evlist));
i++;
}
diff --git a/tools/perf/util/bpf_counter.c b/tools/perf/util/bpf_counter.c
index 34b6b0da18b73..9362e45e17ceb 100644
--- a/tools/perf/util/bpf_counter.c
+++ b/tools/perf/util/bpf_counter.c
@@ -443,7 +443,7 @@ static int bperf_check_target(struct evsel *evsel,
} else if (target->tid) {
*filter_type = BPERF_FILTER_PID;
*filter_entry_cnt = perf_thread_map__nr(evsel->core.threads);
- } else if (target->pid || evsel->evlist->workload.pid != -1) {
+ } else if (target->pid || evlist__workload_pid(evsel->evlist) != -1) {
*filter_type = BPERF_FILTER_TGID;
*filter_entry_cnt = perf_thread_map__nr(evsel->core.threads);
} else {
diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c
index 6842c9f6d71e3..4e5f4b9dd4428 100644
--- a/tools/perf/util/bpf_counter_cgroup.c
+++ b/tools/perf/util/bpf_counter_cgroup.c
@@ -104,7 +104,7 @@ static int bperf_load_program(struct evlist *evlist)
set_max_rlimit();
- if (nr_cgroups == 0 || evlist->core.nr_entries % nr_cgroups != 0) {
+ if (nr_cgroups == 0 || evlist__nr_entries(evlist) % nr_cgroups != 0) {
pr_err("Invalid cgroup or event count\n");
return -EINVAL;
}
@@ -116,7 +116,7 @@ static int bperf_load_program(struct evlist *evlist)
pr_err("Failed to open cgroup skeleton\n");
return -1;
}
- setup_rodata(skel, evlist->core.nr_entries);
+ setup_rodata(skel, evlist__nr_entries(evlist));
err = bperf_cgroup_bpf__load(skel);
if (err) {
@@ -127,12 +127,12 @@ static int bperf_load_program(struct evlist *evlist)
err = -1;
cgrp_switch = evsel__new(&cgrp_switch_attr);
- if (evsel__open_per_cpu(cgrp_switch, evlist->core.all_cpus, -1) < 0) {
+ if (evsel__open_per_cpu(cgrp_switch, evlist__core(evlist)->all_cpus, -1) < 0) {
pr_err("Failed to open cgroup switches event\n");
goto out;
}
- perf_cpu_map__for_each_cpu(cpu, i, evlist->core.all_cpus) {
+ perf_cpu_map__for_each_cpu(cpu, i, evlist__core(evlist)->all_cpus) {
link = bpf_program__attach_perf_event(skel->progs.on_cgrp_switch,
FD(cgrp_switch, i));
if (IS_ERR(link)) {
@@ -197,7 +197,7 @@ static int bperf_load_program(struct evlist *evlist)
*/
{
struct evsel *leader;
- int num_events = evlist->core.nr_entries / nr_cgroups;
+ int num_events = evlist__nr_entries(evlist) / nr_cgroups;
evlist__for_each_entry(evlist, evsel) {
leader = evlist__find_evsel(evlist, evsel->core.idx % num_events);
@@ -258,7 +258,7 @@ static int bperf_cgrp__sync_counters(struct evlist *evlist)
unsigned int idx;
int prog_fd = bpf_program__fd(skel->progs.trigger_read);
- perf_cpu_map__for_each_cpu(cpu, idx, evlist->core.all_cpus)
+ perf_cpu_map__for_each_cpu(cpu, idx, evlist__core(evlist)->all_cpus)
bperf_trigger_reading(prog_fd, cpu.cpu);
return 0;
diff --git a/tools/perf/util/bpf_ftrace.c b/tools/perf/util/bpf_ftrace.c
index c456d24efa308..abeafd406e8e0 100644
--- a/tools/perf/util/bpf_ftrace.c
+++ b/tools/perf/util/bpf_ftrace.c
@@ -59,13 +59,13 @@ int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace)
/* don't need to set cpu filter for system-wide mode */
if (ftrace->target.cpu_list) {
- ncpus = perf_cpu_map__nr(ftrace->evlist->core.user_requested_cpus);
+ ncpus = perf_cpu_map__nr(evlist__core(ftrace->evlist)->user_requested_cpus);
bpf_map__set_max_entries(skel->maps.cpu_filter, ncpus);
skel->rodata->has_cpu = 1;
}
if (target__has_task(&ftrace->target) || target__none(&ftrace->target)) {
- ntasks = perf_thread_map__nr(ftrace->evlist->core.threads);
+ ntasks = perf_thread_map__nr(evlist__core(ftrace->evlist)->threads);
bpf_map__set_max_entries(skel->maps.task_filter, ntasks);
skel->rodata->has_task = 1;
}
@@ -87,7 +87,8 @@ int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace)
fd = bpf_map__fd(skel->maps.cpu_filter);
for (i = 0; i < ncpus; i++) {
- cpu = perf_cpu_map__cpu(ftrace->evlist->core.user_requested_cpus, i).cpu;
+ cpu = perf_cpu_map__cpu(
+ evlist__core(ftrace->evlist)->user_requested_cpus, i).cpu;
bpf_map_update_elem(fd, &cpu, &val, BPF_ANY);
}
}
@@ -99,7 +100,7 @@ int perf_ftrace__latency_prepare_bpf(struct perf_ftrace *ftrace)
fd = bpf_map__fd(skel->maps.task_filter);
for (i = 0; i < ntasks; i++) {
- pid = perf_thread_map__pid(ftrace->evlist->core.threads, i);
+ pid = perf_thread_map__pid(evlist__core(ftrace->evlist)->threads, i);
bpf_map_update_elem(fd, &pid, &val, BPF_ANY);
}
}
diff --git a/tools/perf/util/bpf_lock_contention.c b/tools/perf/util/bpf_lock_contention.c
index b1cfa63a488fa..c20bd075664e1 100644
--- a/tools/perf/util/bpf_lock_contention.c
+++ b/tools/perf/util/bpf_lock_contention.c
@@ -223,11 +223,11 @@ int lock_contention_prepare(struct lock_contention *con)
if (target__has_cpu(target)) {
skel->rodata->has_cpu = 1;
- ncpus = perf_cpu_map__nr(evlist->core.user_requested_cpus);
+ ncpus = perf_cpu_map__nr(evlist__core(evlist)->user_requested_cpus);
}
if (target__has_task(target)) {
skel->rodata->has_task = 1;
- ntasks = perf_thread_map__nr(evlist->core.threads);
+ ntasks = perf_thread_map__nr(evlist__core(evlist)->threads);
}
if (con->filters->nr_types) {
skel->rodata->has_type = 1;
@@ -334,7 +334,7 @@ int lock_contention_prepare(struct lock_contention *con)
fd = bpf_map__fd(skel->maps.cpu_filter);
for (i = 0; i < ncpus; i++) {
- cpu = perf_cpu_map__cpu(evlist->core.user_requested_cpus, i).cpu;
+ cpu = perf_cpu_map__cpu(evlist__core(evlist)->user_requested_cpus, i).cpu;
bpf_map_update_elem(fd, &cpu, &val, BPF_ANY);
}
}
@@ -346,13 +346,13 @@ int lock_contention_prepare(struct lock_contention *con)
fd = bpf_map__fd(skel->maps.task_filter);
for (i = 0; i < ntasks; i++) {
- pid = perf_thread_map__pid(evlist->core.threads, i);
+ pid = perf_thread_map__pid(evlist__core(evlist)->threads, i);
bpf_map_update_elem(fd, &pid, &val, BPF_ANY);
}
}
- if (target__none(target) && evlist->workload.pid > 0) {
- u32 pid = evlist->workload.pid;
+ if (target__none(target) && evlist__workload_pid(evlist) > 0) {
+ u32 pid = evlist__workload_pid(evlist);
u8 val = 1;
fd = bpf_map__fd(skel->maps.task_filter);
diff --git a/tools/perf/util/bpf_off_cpu.c b/tools/perf/util/bpf_off_cpu.c
index 48cb930cdd2e7..c4639f6a57766 100644
--- a/tools/perf/util/bpf_off_cpu.c
+++ b/tools/perf/util/bpf_off_cpu.c
@@ -73,13 +73,13 @@ static void off_cpu_start(void *arg)
/* update task filter for the given workload */
if (skel->rodata->has_task && skel->rodata->uses_tgid &&
- perf_thread_map__pid(evlist->core.threads, 0) != -1) {
+ perf_thread_map__pid(evlist__core(evlist)->threads, 0) != -1) {
int fd;
u32 pid;
u8 val = 1;
fd = bpf_map__fd(skel->maps.task_filter);
- pid = perf_thread_map__pid(evlist->core.threads, 0);
+ pid = perf_thread_map__pid(evlist__core(evlist)->threads, 0);
bpf_map_update_elem(fd, &pid, &val, BPF_ANY);
}
@@ -168,7 +168,7 @@ int off_cpu_prepare(struct evlist *evlist, struct target *target,
/* don't need to set cpu filter for system-wide mode */
if (target->cpu_list) {
- ncpus = perf_cpu_map__nr(evlist->core.user_requested_cpus);
+ ncpus = perf_cpu_map__nr(evlist__core(evlist)->user_requested_cpus);
bpf_map__set_max_entries(skel->maps.cpu_filter, ncpus);
skel->rodata->has_cpu = 1;
}
@@ -199,7 +199,7 @@ int off_cpu_prepare(struct evlist *evlist, struct target *target,
skel->rodata->has_task = 1;
skel->rodata->uses_tgid = 1;
} else if (target__has_task(target)) {
- ntasks = perf_thread_map__nr(evlist->core.threads);
+ ntasks = perf_thread_map__nr(evlist__core(evlist)->threads);
bpf_map__set_max_entries(skel->maps.task_filter, ntasks);
skel->rodata->has_task = 1;
} else if (target__none(target)) {
@@ -209,7 +209,7 @@ int off_cpu_prepare(struct evlist *evlist, struct target *target,
}
if (evlist__first(evlist)->cgrp) {
- ncgrps = evlist->core.nr_entries - 1; /* excluding a dummy */
+ ncgrps = evlist__nr_entries(evlist) - 1; /* excluding a dummy */
bpf_map__set_max_entries(skel->maps.cgroup_filter, ncgrps);
if (!cgroup_is_v2("perf_event"))
@@ -240,7 +240,7 @@ int off_cpu_prepare(struct evlist *evlist, struct target *target,
fd = bpf_map__fd(skel->maps.cpu_filter);
for (i = 0; i < ncpus; i++) {
- cpu = perf_cpu_map__cpu(evlist->core.user_requested_cpus, i).cpu;
+ cpu = perf_cpu_map__cpu(evlist__core(evlist)->user_requested_cpus, i).cpu;
bpf_map_update_elem(fd, &cpu, &val, BPF_ANY);
}
}
@@ -269,7 +269,7 @@ int off_cpu_prepare(struct evlist *evlist, struct target *target,
fd = bpf_map__fd(skel->maps.task_filter);
for (i = 0; i < ntasks; i++) {
- pid = perf_thread_map__pid(evlist->core.threads, i);
+ pid = perf_thread_map__pid(evlist__core(evlist)->threads, i);
bpf_map_update_elem(fd, &pid, &val, BPF_ANY);
}
}
diff --git a/tools/perf/util/cgroup.c b/tools/perf/util/cgroup.c
index 9147447244674..c7be16a7915e6 100644
--- a/tools/perf/util/cgroup.c
+++ b/tools/perf/util/cgroup.c
@@ -367,7 +367,7 @@ int parse_cgroups(const struct option *opt, const char *str,
char *s;
int ret, i;
- if (list_empty(&evlist->core.entries)) {
+ if (list_empty(&evlist__core(evlist)->entries)) {
fprintf(stderr, "must define events before cgroups\n");
return -1;
}
@@ -423,7 +423,7 @@ int evlist__expand_cgroup(struct evlist *evlist, const char *str, bool open_cgro
int ret = -1;
int prefix_len;
- if (evlist->core.nr_entries == 0) {
+ if (evlist__nr_entries(evlist) == 0) {
fprintf(stderr, "must define events before cgroups\n");
return -EINVAL;
}
@@ -436,11 +436,11 @@ int evlist__expand_cgroup(struct evlist *evlist, const char *str, bool open_cgro
}
/* save original events and init evlist */
- evlist__splice_list_tail(orig_list, &evlist->core.entries);
- evlist->core.nr_entries = 0;
+ evlist__splice_list_tail(orig_list, &evlist__core(evlist)->entries);
+ evlist__core(evlist)->nr_entries = 0;
- orig_metric_events = evlist->metric_events;
- metricgroup__rblist_init(&evlist->metric_events);
+ orig_metric_events = *evlist__metric_events(evlist);
+ metricgroup__rblist_init(evlist__metric_events(evlist));
if (has_pattern_string(str))
prefix_len = match_cgroups(str);
@@ -503,15 +503,15 @@ int evlist__expand_cgroup(struct evlist *evlist, const char *str, bool open_cgro
nr_cgroups++;
if (metricgroup__copy_metric_events(tmp_list, cgrp,
- &evlist->metric_events,
+ evlist__metric_events(evlist),
&orig_metric_events) < 0)
goto out_err;
- evlist__splice_list_tail(evlist, &tmp_list->core.entries);
- tmp_list->core.nr_entries = 0;
+ evlist__splice_list_tail(evlist, &evlist__core(tmp_list)->entries);
+ evlist__core(tmp_list)->nr_entries = 0;
}
- if (list_empty(&evlist->core.entries)) {
+ if (list_empty(&evlist__core(evlist)->entries)) {
fprintf(stderr, "no cgroup matched: %s\n", str);
goto out_err;
}
diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
index 5d0664ff73b79..2284cda78abe1 100644
--- a/tools/perf/util/cs-etm.c
+++ b/tools/perf/util/cs-etm.c
@@ -1691,8 +1691,9 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq,
{
int ret = 0;
struct cs_etm_auxtrace *etm = etmq->etm;
- struct perf_sample sample = {.ip = 0,};
+ struct perf_sample sample;
union perf_event *event = tidq->event_buf;
+
struct dummy_branch_stack {
u64 nr;
u64 hw_idx;
@@ -1700,6 +1701,7 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq,
} dummy_bs;
u64 ip;
+ perf_sample__init(&sample, /*all=*/true);
ip = cs_etm__last_executed_instr(tidq->prev_packet);
event->sample.header.type = PERF_RECORD_SAMPLE;
@@ -1752,6 +1754,7 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq,
"CS ETM Trace: failed to deliver instruction event, error %d\n",
ret);
+ perf_sample__exit(&sample);
return ret;
}
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 1721a2470fb67..eb7c0d7be064e 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -31,6 +31,7 @@
#include <api/fs/fs.h>
#include <internal/lib.h> // page_size
+#include <internal/rc_check.h>
#include <internal/xyarray.h>
#include <perf/cpumap.h>
#include <perf/evlist.h>
@@ -75,30 +76,31 @@ int sigqueue(pid_t pid, int sig, const union sigval value);
#define FD(e, x, y) (*(int *)xyarray__entry(e->core.fd, x, y))
#define SID(e, x, y) xyarray__entry(e->core.sample_id, x, y)
-static void evlist__init(struct evlist *evlist, struct perf_cpu_map *cpus,
- struct perf_thread_map *threads)
-{
- perf_evlist__init(&evlist->core);
- perf_evlist__set_maps(&evlist->core, cpus, threads);
- evlist->workload.pid = -1;
- evlist->bkw_mmap_state = BKW_MMAP_NOTREADY;
- evlist->ctl_fd.fd = -1;
- evlist->ctl_fd.ack = -1;
- evlist->ctl_fd.pos = -1;
- evlist->nr_br_cntr = -1;
- metricgroup__rblist_init(&evlist->metric_events);
- INIT_LIST_HEAD(&evlist->deferred_samples);
- refcount_set(&evlist->refcnt, 1);
-}
+static void event_enable_timer__exit(struct event_enable_timer **ep);
struct evlist *evlist__new(void)
{
- struct evlist *evlist = zalloc(sizeof(*evlist));
-
- if (evlist != NULL)
- evlist__init(evlist, NULL, NULL);
-
- return evlist;
+ struct evlist *result;
+ RC_STRUCT(evlist) *evlist;
+
+ evlist = zalloc(sizeof(*evlist));
+ if (ADD_RC_CHK(result, evlist)) {
+ perf_evlist__init(evlist__core(result));
+ perf_evlist__set_maps(evlist__core(result), /*cpus=*/NULL, /*threads=*/NULL);
+ evlist__set_workload_pid(result, -1);
+ evlist__set_bkw_mmap_state(result, BKW_MMAP_NOTREADY);
+ evlist__set_ctl_fd_fd(result, -1);
+ evlist__set_ctl_fd_ack(result, -1);
+ evlist__set_ctl_fd_pos(result, -1);
+ evlist__set_nr_br_cntr(result, -1);
+ metricgroup__rblist_init(evlist__metric_events(result));
+ INIT_LIST_HEAD(&evlist->deferred_samples);
+ refcount_set(evlist__refcnt(result), 1);
+ } else {
+ free(evlist);
+ result = NULL;
+ }
+ return result;
}
struct evlist *evlist__new_default(const struct target *target, bool sample_callchains)
@@ -106,7 +108,6 @@ struct evlist *evlist__new_default(const struct target *target, bool sample_call
struct evlist *evlist = evlist__new();
bool can_profile_kernel;
struct perf_pmu *pmu = NULL;
- struct evsel *evsel;
char buf[256];
int err;
@@ -133,7 +134,9 @@ struct evlist *evlist__new_default(const struct target *target, bool sample_call
}
/* If there is only 1 event a sample identifier isn't necessary. */
- if (evlist->core.nr_entries > 1) {
+ if (evlist__nr_entries(evlist) > 1) {
+ struct evsel *evsel;
+
evlist__for_each_entry(evlist, evsel)
evsel__set_sample_id(evsel, /*can_sample_identifier=*/false);
}
@@ -158,8 +161,12 @@ struct evlist *evlist__new_dummy(void)
struct evlist *evlist__get(struct evlist *evlist)
{
- refcount_inc(&evlist->refcnt);
- return evlist;
+ struct evlist *result;
+
+ if (RC_CHK_GET(result, evlist))
+ refcount_inc(evlist__refcnt(evlist));
+
+ return result;
}
/**
@@ -173,8 +180,8 @@ void evlist__set_id_pos(struct evlist *evlist)
{
struct evsel *first = evlist__first(evlist);
- evlist->id_pos = first->id_pos;
- evlist->is_pos = first->is_pos;
+ RC_CHK_ACCESS(evlist)->id_pos = first->id_pos;
+ RC_CHK_ACCESS(evlist)->is_pos = first->is_pos;
}
static void evlist__update_id_pos(struct evlist *evlist)
@@ -193,52 +200,85 @@ static void evlist__purge(struct evlist *evlist)
evlist__for_each_entry_safe(evlist, n, pos) {
list_del_init(&pos->core.node);
+ if (pos->evlist) {
+ if (!RC_CHK_EQUAL(pos->evlist, evlist)) {
+ evlist__put(pos->evlist);
+ } else {
+ refcount_dec_and_test(evlist__refcnt(pos->evlist));
+ RC_CHK_PUT(pos->evlist);
+ }
+ }
pos->evlist = NULL;
evsel__put(pos);
}
- evlist->core.nr_entries = 0;
+ evlist__core(evlist)->nr_entries = 0;
}
static void evlist__exit(struct evlist *evlist)
{
- metricgroup__rblist_exit(&evlist->metric_events);
- event_enable_timer__exit(&evlist->eet);
- zfree(&evlist->mmap);
- zfree(&evlist->overwrite_mmap);
- perf_evlist__exit(&evlist->core);
+ metricgroup__rblist_exit(evlist__metric_events(evlist));
+ event_enable_timer__exit(&RC_CHK_ACCESS(evlist)->eet);
+ free(evlist__mmap(evlist));
+ free(evlist__overwrite_mmap(evlist));
+ perf_evlist__exit(evlist__core(evlist));
}
void evlist__put(struct evlist *evlist)
{
+ struct evsel *evsel;
+ unsigned int count, ref_cnt;
+
if (evlist == NULL)
return;
- if (!refcount_dec_and_test(&evlist->refcnt))
- return;
+ if (refcount_dec_and_test(evlist__refcnt(evlist)))
+ goto out_delete;
+
+retry:
+ count = refcount_read(evlist__refcnt(evlist));
+ ref_cnt = count;
+ evlist__for_each_entry(evlist, evsel) {
+ if (RC_CHK_EQUAL(evsel->evlist, evlist) && count &&
+ refcount_read(&evsel->refcnt) == 1)
+ count--;
+ }
+ if (refcount_read(evlist__refcnt(evlist)) != ref_cnt)
+ goto retry;
+ if (count != 0) {
+ /*
+ * Not the last reference except for back references from
+ * evsels.
+ */
+ RC_CHK_PUT(evlist);
+ return;
+ }
+out_delete:
evlist__free_stats(evlist);
- evlist__munmap(evlist);
+ evlist__do_munmap(evlist);
evlist__close(evlist);
evlist__purge(evlist);
evlist__exit(evlist);
- free(evlist);
+ RC_CHK_FREE(evlist);
}
void evlist__add(struct evlist *evlist, struct evsel *entry)
{
- perf_evlist__add(&evlist->core, &entry->core);
- entry->evlist = evlist;
+ perf_evlist__add(evlist__core(evlist), &entry->core);
+ evlist__put(entry->evlist);
+ entry->evlist = evlist__get(evlist);
entry->tracking = !entry->core.idx;
- if (evlist->core.nr_entries == 1)
+ if (evlist__nr_entries(evlist) == 1)
evlist__set_id_pos(evlist);
}
void evlist__remove(struct evlist *evlist, struct evsel *evsel)
{
+ perf_evlist__remove(evlist__core(evlist), &evsel->core);
+ evlist__put(evsel->evlist);
evsel->evlist = NULL;
- perf_evlist__remove(&evlist->core, &evsel->core);
}
void evlist__splice_list_tail(struct evlist *evlist, struct list_head *list)
@@ -287,7 +327,7 @@ int __evlist__set_tracepoints_handlers(struct evlist *evlist,
static void evlist__set_leader(struct evlist *evlist)
{
- perf_evlist__set_leader(&evlist->core);
+ perf_evlist__set_leader(evlist__core(evlist));
}
static struct evsel *evlist__dummy_event(struct evlist *evlist)
@@ -301,7 +341,7 @@ static struct evsel *evlist__dummy_event(struct evlist *evlist)
.sample_period = 1,
};
- return evsel__new_idx(&attr, evlist->core.nr_entries);
+ return evsel__new_idx(&attr, evlist__nr_entries(evlist));
}
int evlist__add_dummy(struct evlist *evlist)
@@ -390,8 +430,8 @@ static bool evlist__use_affinity(struct evlist *evlist)
struct perf_cpu_map *used_cpus = NULL;
bool ret = false;
- if (evlist->no_affinity || !evlist->core.user_requested_cpus ||
- cpu_map__is_dummy(evlist->core.user_requested_cpus))
+ if (evlist__no_affinity(evlist) || !evlist__core(evlist)->user_requested_cpus ||
+ cpu_map__is_dummy(evlist__core(evlist)->user_requested_cpus))
return false;
evlist__for_each_entry(evlist, pos) {
@@ -446,7 +486,7 @@ void evlist_cpu_iterator__init(struct evlist_cpu_iterator *itr, struct evlist *e
.evsel = NULL,
.cpu_map_idx = 0,
.evlist_cpu_map_idx = 0,
- .evlist_cpu_map_nr = perf_cpu_map__nr(evlist->core.all_cpus),
+ .evlist_cpu_map_nr = perf_cpu_map__nr(evlist__core(evlist)->all_cpus),
.cpu = (struct perf_cpu){ .cpu = -1},
.affinity = NULL,
};
@@ -462,7 +502,7 @@ void evlist_cpu_iterator__init(struct evlist_cpu_iterator *itr, struct evlist *e
itr->affinity = &itr->saved_affinity;
}
itr->evsel = evlist__first(evlist);
- itr->cpu = perf_cpu_map__cpu(evlist->core.all_cpus, 0);
+ itr->cpu = perf_cpu_map__cpu(evlist__core(evlist)->all_cpus, 0);
if (itr->affinity)
affinity__set(itr->affinity, itr->cpu.cpu);
itr->cpu_map_idx = perf_cpu_map__idx(itr->evsel->core.cpus, itr->cpu);
@@ -497,7 +537,7 @@ void evlist_cpu_iterator__next(struct evlist_cpu_iterator *evlist_cpu_itr)
if (evlist_cpu_itr->evlist_cpu_map_idx < evlist_cpu_itr->evlist_cpu_map_nr) {
evlist_cpu_itr->evsel = evlist__first(evlist_cpu_itr->container);
evlist_cpu_itr->cpu =
- perf_cpu_map__cpu(evlist_cpu_itr->container->core.all_cpus,
+ perf_cpu_map__cpu(evlist__core(evlist_cpu_itr->container)->all_cpus,
evlist_cpu_itr->evlist_cpu_map_idx);
if (evlist_cpu_itr->affinity)
affinity__set(evlist_cpu_itr->affinity, evlist_cpu_itr->cpu.cpu);
@@ -524,7 +564,7 @@ static int evsel__strcmp(struct evsel *pos, char *evsel_name)
return !evsel__name_is(pos, evsel_name);
}
-static int evlist__is_enabled(struct evlist *evlist)
+static bool evlist__is_enabled(struct evlist *evlist)
{
struct evsel *pos;
@@ -581,10 +621,7 @@ static void __evlist__disable(struct evlist *evlist, char *evsel_name, bool excl
* If we disabled only single event, we need to check
* the enabled state of the evlist manually.
*/
- if (evsel_name)
- evlist->enabled = evlist__is_enabled(evlist);
- else
- evlist->enabled = false;
+ evlist__set_enabled(evlist, evsel_name ? evlist__is_enabled(evlist) : false);
}
void evlist__disable(struct evlist *evlist)
@@ -635,7 +672,7 @@ static void __evlist__enable(struct evlist *evlist, char *evsel_name, bool excl_
* so the toggle can work properly and toggle to
* 'disabled' state.
*/
- evlist->enabled = true;
+ evlist__set_enabled(evlist, true);
}
void evlist__enable(struct evlist *evlist)
@@ -655,23 +692,24 @@ void evlist__enable_evsel(struct evlist *evlist, char *evsel_name)
void evlist__toggle_enable(struct evlist *evlist)
{
- (evlist->enabled ? evlist__disable : evlist__enable)(evlist);
+ (evlist__enabled(evlist) ? evlist__disable : evlist__enable)(evlist);
}
int evlist__add_pollfd(struct evlist *evlist, int fd)
{
- return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN, fdarray_flag__default);
+ return perf_evlist__add_pollfd(evlist__core(evlist), fd, NULL, POLLIN,
+ fdarray_flag__default);
}
int evlist__filter_pollfd(struct evlist *evlist, short revents_and_mask)
{
- return perf_evlist__filter_pollfd(&evlist->core, revents_and_mask);
+ return perf_evlist__filter_pollfd(evlist__core(evlist), revents_and_mask);
}
#ifdef HAVE_EVENTFD_SUPPORT
int evlist__add_wakeup_eventfd(struct evlist *evlist, int fd)
{
- return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN,
+ return perf_evlist__add_pollfd(evlist__core(evlist), fd, NULL, POLLIN,
fdarray_flag__nonfilterable |
fdarray_flag__non_perf_event);
}
@@ -679,7 +717,7 @@ int evlist__add_wakeup_eventfd(struct evlist *evlist, int fd)
int evlist__poll(struct evlist *evlist, int timeout)
{
- return perf_evlist__poll(&evlist->core, timeout);
+ return perf_evlist__poll(evlist__core(evlist), timeout);
}
struct perf_sample_id *evlist__id2sid(struct evlist *evlist, u64 id)
@@ -689,7 +727,7 @@ struct perf_sample_id *evlist__id2sid(struct evlist *evlist, u64 id)
int hash;
hash = hash_64(id, PERF_EVLIST__HLIST_BITS);
- head = &evlist->core.heads[hash];
+ head = &evlist__core(evlist)->heads[hash];
hlist_for_each_entry(sid, head, node)
if (sid->id == id)
@@ -702,7 +740,7 @@ struct evsel *evlist__id2evsel(struct evlist *evlist, u64 id)
{
struct perf_sample_id *sid;
- if (evlist->core.nr_entries == 1 || !id)
+ if (evlist__nr_entries(evlist) == 1 || !id)
return evlist__first(evlist);
sid = evlist__id2sid(evlist, id);
@@ -737,13 +775,13 @@ static int evlist__event2id(struct evlist *evlist, union perf_event *event, u64
n = (event->header.size - sizeof(event->header)) >> 3;
if (event->header.type == PERF_RECORD_SAMPLE) {
- if (evlist->id_pos >= n)
+ if (evlist__id_pos(evlist) >= n)
return -1;
- *id = array[evlist->id_pos];
+ *id = array[evlist__id_pos(evlist)];
} else {
- if (evlist->is_pos > n)
+ if (evlist__is_pos(evlist) > n)
return -1;
- n -= evlist->is_pos;
+ n -= evlist__is_pos(evlist);
*id = array[n];
}
return 0;
@@ -757,7 +795,7 @@ struct evsel *evlist__event2evsel(struct evlist *evlist, union perf_event *event
int hash;
u64 id;
- if (evlist->core.nr_entries == 1)
+ if (evlist__nr_entries(evlist) == 1)
return first;
if (!first->core.attr.sample_id_all &&
@@ -772,7 +810,7 @@ struct evsel *evlist__event2evsel(struct evlist *evlist, union perf_event *event
return first;
hash = hash_64(id, PERF_EVLIST__HLIST_BITS);
- head = &evlist->core.heads[hash];
+ head = &evlist__core(evlist)->heads[hash];
hlist_for_each_entry(sid, head, node) {
if (sid->id == id)
@@ -785,11 +823,11 @@ static int evlist__set_paused(struct evlist *evlist, bool value)
{
int i;
- if (!evlist->overwrite_mmap)
+ if (!evlist__overwrite_mmap(evlist))
return 0;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- int fd = evlist->overwrite_mmap[i].core.fd;
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ int fd = evlist__overwrite_mmap(evlist)[i].core.fd;
int err;
if (fd < 0)
@@ -815,20 +853,20 @@ static void evlist__munmap_nofree(struct evlist *evlist)
{
int i;
- if (evlist->mmap)
- for (i = 0; i < evlist->core.nr_mmaps; i++)
- perf_mmap__munmap(&evlist->mmap[i].core);
+ if (evlist__mmap(evlist))
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++)
+ perf_mmap__munmap(&evlist__mmap(evlist)[i].core);
- if (evlist->overwrite_mmap)
- for (i = 0; i < evlist->core.nr_mmaps; i++)
- perf_mmap__munmap(&evlist->overwrite_mmap[i].core);
+ if (evlist__overwrite_mmap(evlist))
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++)
+ perf_mmap__munmap(&evlist__overwrite_mmap(evlist)[i].core);
}
-void evlist__munmap(struct evlist *evlist)
+void evlist__do_munmap(struct evlist *evlist)
{
evlist__munmap_nofree(evlist);
- zfree(&evlist->mmap);
- zfree(&evlist->overwrite_mmap);
+ zfree(&RC_CHK_ACCESS(evlist)->mmap);
+ zfree(&RC_CHK_ACCESS(evlist)->overwrite_mmap);
}
static void perf_mmap__unmap_cb(struct perf_mmap *map)
@@ -842,12 +880,12 @@ static struct mmap *evlist__alloc_mmap(struct evlist *evlist,
bool overwrite)
{
int i;
- struct mmap *map = calloc(evlist->core.nr_mmaps, sizeof(struct mmap));
+ struct mmap *map = calloc(evlist__core(evlist)->nr_mmaps, sizeof(struct mmap));
if (!map)
return NULL;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
struct perf_mmap *prev = i ? &map[i - 1].core : NULL;
/*
@@ -865,41 +903,73 @@ static struct mmap *evlist__alloc_mmap(struct evlist *evlist,
return map;
}
+static struct evlist *from_list_start(struct perf_evlist *core)
+{
+#ifdef REFCNT_CHECKING
+ RC_STRUCT(evlist) *core_evlist = container_of(core, RC_STRUCT(evlist), core);
+ struct evlist *evlist;
+
+ if (ADD_RC_CHK(evlist, core_evlist))
+ refcount_inc(evlist__refcnt(evlist));
+
+ return evlist;
+#else
+ return container_of(core, struct evlist, core);
+#endif
+}
+
+static void from_list_end(struct evlist *evlist __maybe_unused)
+{
+#ifdef REFCNT_CHECKING
+ evlist__put(evlist);
+#endif
+}
+
static void
perf_evlist__mmap_cb_idx(struct perf_evlist *_evlist,
struct perf_evsel *_evsel,
struct perf_mmap_param *_mp,
int idx)
{
- struct evlist *evlist = container_of(_evlist, struct evlist, core);
+ struct evlist *evlist = from_list_start(_evlist);
struct mmap_params *mp = container_of(_mp, struct mmap_params, core);
struct evsel *evsel = container_of(_evsel, struct evsel, core);
+ if (!evlist)
+ return;
+
auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, evsel, idx);
+
+ from_list_end(evlist);
}
static struct perf_mmap*
perf_evlist__mmap_cb_get(struct perf_evlist *_evlist, bool overwrite, int idx)
{
- struct evlist *evlist = container_of(_evlist, struct evlist, core);
+ struct evlist *evlist = from_list_start(_evlist);
struct mmap *maps;
- maps = overwrite ? evlist->overwrite_mmap : evlist->mmap;
+ if (!evlist)
+ return NULL;
+
+ maps = overwrite ? evlist__overwrite_mmap(evlist) : evlist__mmap(evlist);
if (!maps) {
maps = evlist__alloc_mmap(evlist, overwrite);
- if (!maps)
+ if (!maps) {
+ from_list_end(evlist);
return NULL;
+ }
if (overwrite) {
- evlist->overwrite_mmap = maps;
- if (evlist->bkw_mmap_state == BKW_MMAP_NOTREADY)
+ RC_CHK_ACCESS(evlist)->overwrite_mmap = maps;
+ if (evlist__bkw_mmap_state(evlist) == BKW_MMAP_NOTREADY)
evlist__toggle_bkw_mmap(evlist, BKW_MMAP_RUNNING);
} else {
- evlist->mmap = maps;
+ RC_CHK_ACCESS(evlist)->mmap = maps;
}
}
-
+ from_list_end(evlist);
return &maps[idx].core;
}
@@ -1056,16 +1126,16 @@ int evlist__mmap_ex(struct evlist *evlist, unsigned int pages,
.mmap = perf_evlist__mmap_cb_mmap,
};
- evlist->core.mmap_len = evlist__mmap_size(pages);
- pr_debug("mmap size %zuB\n", evlist->core.mmap_len);
+ evlist__core(evlist)->mmap_len = evlist__mmap_size(pages);
+ pr_debug("mmap size %zuB\n", evlist__core(evlist)->mmap_len);
- auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist->core.mmap_len,
+ auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist__core(evlist)->mmap_len,
auxtrace_pages, auxtrace_overwrite);
- return perf_evlist__mmap_ops(&evlist->core, &ops, &mp.core);
+ return perf_evlist__mmap_ops(evlist__core(evlist), &ops, &mp.core);
}
-int evlist__mmap(struct evlist *evlist, unsigned int pages)
+int evlist__do_mmap(struct evlist *evlist, unsigned int pages)
{
return evlist__mmap_ex(evlist, pages, 0, false, 0, PERF_AFFINITY_SYS, 1, 0);
}
@@ -1107,9 +1177,9 @@ int evlist__create_maps(struct evlist *evlist, struct target *target)
if (!cpus)
goto out_delete_threads;
- evlist->core.has_user_cpus = !!target->cpu_list;
+ evlist__core(evlist)->has_user_cpus = !!target->cpu_list;
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
/* as evlist now has references, put count here */
perf_cpu_map__put(cpus);
@@ -1249,15 +1319,15 @@ bool evlist__valid_sample_type(struct evlist *evlist)
{
struct evsel *pos;
- if (evlist->core.nr_entries == 1)
+ if (evlist__nr_entries(evlist) == 1)
return true;
- if (evlist->id_pos < 0 || evlist->is_pos < 0)
+ if (evlist__id_pos(evlist) < 0 || evlist__is_pos(evlist) < 0)
return false;
evlist__for_each_entry(evlist, pos) {
- if (pos->id_pos != evlist->id_pos ||
- pos->is_pos != evlist->is_pos)
+ if (pos->id_pos != evlist__id_pos(evlist) ||
+ pos->is_pos != evlist__is_pos(evlist))
return false;
}
@@ -1268,18 +1338,18 @@ u64 __evlist__combined_sample_type(struct evlist *evlist)
{
struct evsel *evsel;
- if (evlist->combined_sample_type)
- return evlist->combined_sample_type;
+ if (RC_CHK_ACCESS(evlist)->combined_sample_type)
+ return RC_CHK_ACCESS(evlist)->combined_sample_type;
evlist__for_each_entry(evlist, evsel)
- evlist->combined_sample_type |= evsel->core.attr.sample_type;
+ RC_CHK_ACCESS(evlist)->combined_sample_type |= evsel->core.attr.sample_type;
- return evlist->combined_sample_type;
+ return RC_CHK_ACCESS(evlist)->combined_sample_type;
}
u64 evlist__combined_sample_type(struct evlist *evlist)
{
- evlist->combined_sample_type = 0;
+ RC_CHK_ACCESS(evlist)->combined_sample_type = 0;
return __evlist__combined_sample_type(evlist);
}
@@ -1356,7 +1426,7 @@ void evlist__update_br_cntr(struct evlist *evlist)
evlist__new_abbr_name(evsel->abbr_name);
}
}
- evlist->nr_br_cntr = i;
+ evlist__set_nr_br_cntr(evlist, i);
}
bool evlist__valid_read_format(struct evlist *evlist)
@@ -1406,11 +1476,6 @@ bool evlist__sample_id_all(struct evlist *evlist)
return first->core.attr.sample_id_all;
}
-void evlist__set_selected(struct evlist *evlist, struct evsel *evsel)
-{
- evlist->selected = evsel;
-}
-
void evlist__close(struct evlist *evlist)
{
struct evsel *evsel;
@@ -1427,7 +1492,7 @@ void evlist__close(struct evlist *evlist)
perf_evsel__free_fd(&evsel->core);
perf_evsel__free_id(&evsel->core);
}
- perf_evlist__reset_id_hash(&evlist->core);
+ perf_evlist__reset_id_hash(evlist__core(evlist));
}
static int evlist__create_syswide_maps(struct evlist *evlist)
@@ -1454,7 +1519,7 @@ static int evlist__create_syswide_maps(struct evlist *evlist)
return -ENOMEM;
}
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
perf_thread_map__put(threads);
perf_cpu_map__put(cpus);
return 0;
@@ -1469,7 +1534,8 @@ int evlist__open(struct evlist *evlist)
* Default: one fd per CPU, all threads, aka systemwide
* as sys_perf_event_open(cpu = -1, thread = -1) is EINVAL
*/
- if (evlist->core.threads == NULL && evlist->core.user_requested_cpus == NULL) {
+ if (evlist__core(evlist)->threads == NULL &&
+ evlist__core(evlist)->user_requested_cpus == NULL) {
err = evlist__create_syswide_maps(evlist);
if (err < 0)
goto out_err;
@@ -1496,7 +1562,7 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const
int child_ready_pipe[2], go_pipe[2];
char bf;
- evlist->workload.cork_fd = -1;
+ evlist__set_workload_cork_fd(evlist, -1);
if (pipe(child_ready_pipe) < 0) {
perror("failed to create 'ready' pipe");
@@ -1508,13 +1574,13 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const
goto out_close_ready_pipe;
}
- evlist->workload.pid = fork();
- if (evlist->workload.pid < 0) {
+ evlist__set_workload_pid(evlist, fork());
+ if (evlist__workload_pid(evlist) < 0) {
perror("failed to fork");
goto out_close_pipes;
}
- if (!evlist->workload.pid) {
+ if (!evlist__workload_pid(evlist)) {
int ret;
if (pipe_output)
@@ -1580,12 +1646,13 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const
}
if (target__none(target)) {
- if (evlist->core.threads == NULL) {
+ if (evlist__core(evlist)->threads == NULL) {
fprintf(stderr, "FATAL: evlist->threads need to be set at this point (%s:%d).\n",
__func__, __LINE__);
goto out_close_pipes;
}
- perf_thread_map__set_pid(evlist->core.threads, 0, evlist->workload.pid);
+ perf_thread_map__set_pid(evlist__core(evlist)->threads, 0,
+ evlist__workload_pid(evlist));
}
close(child_ready_pipe[1]);
@@ -1599,7 +1666,7 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const
}
fcntl(go_pipe[1], F_SETFD, FD_CLOEXEC);
- evlist->workload.cork_fd = go_pipe[1];
+ evlist__set_workload_cork_fd(evlist, go_pipe[1]);
close(child_ready_pipe[0]);
return 0;
@@ -1614,18 +1681,18 @@ int evlist__prepare_workload(struct evlist *evlist, struct target *target, const
int evlist__start_workload(struct evlist *evlist)
{
- if (evlist->workload.cork_fd >= 0) {
+ if (evlist__workload_cork_fd(evlist) >= 0) {
char bf = 0;
int ret;
/*
* Remove the cork, let it rip!
*/
- ret = write(evlist->workload.cork_fd, &bf, 1);
+ ret = write(evlist__workload_cork_fd(evlist), &bf, 1);
if (ret < 0)
perror("unable to write to pipe");
- close(evlist->workload.cork_fd);
- evlist->workload.cork_fd = -1;
+ close(evlist__workload_cork_fd(evlist));
+ evlist__set_workload_cork_fd(evlist, -1);
return ret;
}
@@ -1636,10 +1703,10 @@ void evlist__cancel_workload(struct evlist *evlist)
{
int status;
- if (evlist->workload.cork_fd >= 0) {
- close(evlist->workload.cork_fd);
- evlist->workload.cork_fd = -1;
- waitpid(evlist->workload.pid, &status, WNOHANG);
+ if (evlist__workload_cork_fd(evlist) >= 0) {
+ close(evlist__workload_cork_fd(evlist));
+ evlist__set_workload_cork_fd(evlist, -1);
+ waitpid(evlist__workload_pid(evlist), &status, WNOHANG);
}
}
@@ -1733,7 +1800,8 @@ int evlist__strerror_open(struct evlist *evlist, int err, char *buf, size_t size
int evlist__strerror_mmap(struct evlist *evlist, int err, char *buf, size_t size)
{
- int pages_attempted = evlist->core.mmap_len / 1024, pages_max_per_user, printed = 0;
+ int pages_attempted = evlist__core(evlist)->mmap_len / 1024;
+ int pages_max_per_user, printed = 0;
switch (err) {
case EPERM:
@@ -1776,7 +1844,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel)
list_move_tail(&evsel->core.node, &move);
}
- list_splice(&move, &evlist->core.entries);
+ list_splice(&move, &evlist__core(evlist)->entries);
}
struct evsel *evlist__get_tracking_event(struct evlist *evlist)
@@ -1818,7 +1886,7 @@ struct evsel *evlist__findnew_tracking_event(struct evlist *evlist, bool system_
evlist__set_tracking_event(evlist, evsel);
} else if (system_wide) {
- perf_evlist__go_system_wide(&evlist->core, &evsel->core);
+ perf_evlist__go_system_wide(evlist__core(evlist), &evsel->core);
}
return evsel;
@@ -1840,14 +1908,14 @@ struct evsel *evlist__find_evsel_by_str(struct evlist *evlist, const char *str)
void evlist__toggle_bkw_mmap(struct evlist *evlist, enum bkw_mmap_state state)
{
- enum bkw_mmap_state old_state = evlist->bkw_mmap_state;
+ enum bkw_mmap_state old_state = evlist__bkw_mmap_state(evlist);
enum action {
NONE,
PAUSE,
RESUME,
} action = NONE;
- if (!evlist->overwrite_mmap)
+ if (!evlist__overwrite_mmap(evlist))
return;
switch (old_state) {
@@ -1877,7 +1945,7 @@ void evlist__toggle_bkw_mmap(struct evlist *evlist, enum bkw_mmap_state state)
WARN_ONCE(1, "Shouldn't get there\n");
}
- evlist->bkw_mmap_state = state;
+ evlist__set_bkw_mmap_state(evlist, state);
switch (action) {
case PAUSE:
@@ -2055,40 +2123,41 @@ int evlist__initialize_ctlfd(struct evlist *evlist, int fd, int ack)
return 0;
}
- evlist->ctl_fd.pos = perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN,
- fdarray_flag__nonfilterable |
- fdarray_flag__non_perf_event);
- if (evlist->ctl_fd.pos < 0) {
- evlist->ctl_fd.pos = -1;
+ evlist__set_ctl_fd_pos(evlist,
+ perf_evlist__add_pollfd(evlist__core(evlist), fd, NULL, POLLIN,
+ fdarray_flag__nonfilterable |
+ fdarray_flag__non_perf_event));
+ if (evlist__ctl_fd_pos(evlist) < 0) {
+ evlist__set_ctl_fd_pos(evlist, -1);
pr_err("Failed to add ctl fd entry: %m\n");
return -1;
}
- evlist->ctl_fd.fd = fd;
- evlist->ctl_fd.ack = ack;
+ evlist__set_ctl_fd_fd(evlist, fd);
+ evlist__set_ctl_fd_ack(evlist, ack);
return 0;
}
bool evlist__ctlfd_initialized(struct evlist *evlist)
{
- return evlist->ctl_fd.pos >= 0;
+ return evlist__ctl_fd_pos(evlist) >= 0;
}
int evlist__finalize_ctlfd(struct evlist *evlist)
{
- struct pollfd *entries = evlist->core.pollfd.entries;
+ struct pollfd *entries = evlist__core(evlist)->pollfd.entries;
if (!evlist__ctlfd_initialized(evlist))
return 0;
- entries[evlist->ctl_fd.pos].fd = -1;
- entries[evlist->ctl_fd.pos].events = 0;
- entries[evlist->ctl_fd.pos].revents = 0;
+ entries[evlist__ctl_fd_pos(evlist)].fd = -1;
+ entries[evlist__ctl_fd_pos(evlist)].events = 0;
+ entries[evlist__ctl_fd_pos(evlist)].revents = 0;
- evlist->ctl_fd.pos = -1;
- evlist->ctl_fd.ack = -1;
- evlist->ctl_fd.fd = -1;
+ evlist__set_ctl_fd_pos(evlist, -1);
+ evlist__set_ctl_fd_ack(evlist, -1);
+ evlist__set_ctl_fd_fd(evlist, -1);
return 0;
}
@@ -2105,7 +2174,7 @@ static int evlist__ctlfd_recv(struct evlist *evlist, enum evlist_ctl_cmd *cmd,
data_size--;
do {
- err = read(evlist->ctl_fd.fd, &c, 1);
+ err = read(evlist__ctl_fd_fd(evlist), &c, 1);
if (err > 0) {
if (c == '\n' || c == '\0')
break;
@@ -2119,7 +2188,8 @@ static int evlist__ctlfd_recv(struct evlist *evlist, enum evlist_ctl_cmd *cmd,
if (errno == EAGAIN || errno == EWOULDBLOCK)
err = 0;
else
- pr_err("Failed to read from ctlfd %d: %m\n", evlist->ctl_fd.fd);
+ pr_err("Failed to read from ctlfd %d: %m\n",
+ evlist__ctl_fd_fd(evlist));
}
break;
} while (1);
@@ -2157,13 +2227,13 @@ int evlist__ctlfd_ack(struct evlist *evlist)
{
int err;
- if (evlist->ctl_fd.ack == -1)
+ if (evlist__ctl_fd_ack(evlist) == -1)
return 0;
- err = write(evlist->ctl_fd.ack, EVLIST_CTL_CMD_ACK_TAG,
+ err = write(evlist__ctl_fd_ack(evlist), EVLIST_CTL_CMD_ACK_TAG,
sizeof(EVLIST_CTL_CMD_ACK_TAG));
if (err == -1)
- pr_err("failed to write to ctl_ack_fd %d: %m\n", evlist->ctl_fd.ack);
+ pr_err("failed to write to ctl_ack_fd %d: %m\n", evlist__ctl_fd_ack(evlist));
return err;
}
@@ -2264,8 +2334,8 @@ int evlist__ctlfd_process(struct evlist *evlist, enum evlist_ctl_cmd *cmd)
{
int err = 0;
char cmd_data[EVLIST_CTL_CMD_MAX_LEN];
- int ctlfd_pos = evlist->ctl_fd.pos;
- struct pollfd *entries = evlist->core.pollfd.entries;
+ int ctlfd_pos = evlist__ctl_fd_pos(evlist);
+ struct pollfd *entries = evlist__core(evlist)->pollfd.entries;
if (!evlist__ctlfd_initialized(evlist) || !entries[ctlfd_pos].revents)
return 0;
@@ -2436,14 +2506,15 @@ int evlist__parse_event_enable_time(struct evlist *evlist, struct record_opts *o
goto free_eet_times;
}
- eet->pollfd_pos = perf_evlist__add_pollfd(&evlist->core, eet->timerfd, NULL, POLLIN, flags);
+ eet->pollfd_pos = perf_evlist__add_pollfd(evlist__core(evlist), eet->timerfd,
+ NULL, POLLIN, flags);
if (eet->pollfd_pos < 0) {
err = eet->pollfd_pos;
goto close_timerfd;
}
eet->evlist = evlist;
- evlist->eet = eet;
+ RC_CHK_ACCESS(evlist)->eet = eet;
opts->target.initial_delay = eet->times[0].start;
return 0;
@@ -2493,7 +2564,7 @@ int event_enable_timer__process(struct event_enable_timer *eet)
if (!eet)
return 0;
- entries = eet->evlist->core.pollfd.entries;
+ entries = evlist__core(eet->evlist)->pollfd.entries;
revents = entries[eet->pollfd_pos].revents;
entries[eet->pollfd_pos].revents = 0;
@@ -2529,7 +2600,7 @@ int event_enable_timer__process(struct event_enable_timer *eet)
return 0;
}
-void event_enable_timer__exit(struct event_enable_timer **ep)
+static void event_enable_timer__exit(struct event_enable_timer **ep)
{
if (!ep || !*ep)
return;
@@ -2633,7 +2704,7 @@ void evlist__warn_user_requested_cpus(struct evlist *evlist, const char *cpu_lis
}
/* Should uniquify be disabled for the evlist? */
-static bool evlist__disable_uniquify(const struct evlist *evlist)
+static bool evlist__disable_uniquify(struct evlist *evlist)
{
struct evsel *counter;
struct perf_pmu *last_pmu = NULL;
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 866392011f6b3..1997843dca0ef 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -9,6 +9,7 @@
#include <api/fd/array.h>
#include <internal/evlist.h>
#include <internal/evsel.h>
+#include <internal/rc_check.h>
#include <perf/evlist.h>
#include "affinity.h"
#include "events_stats.h"
@@ -56,7 +57,7 @@ enum bkw_mmap_state {
struct event_enable_timer;
-struct evlist {
+DECLARE_RC_STRUCT(evlist) {
struct perf_evlist core;
refcount_t refcnt;
bool enabled;
@@ -83,7 +84,7 @@ struct evlist {
struct {
pthread_t th;
volatile int done;
- } thread;
+ } sb_thread;
struct {
int fd; /* control file descriptor */
int ack; /* ack file descriptor for control commands */
@@ -104,6 +105,227 @@ struct evsel_str_handler {
void *handler;
};
+static inline struct perf_evlist *evlist__core(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->core;
+}
+
+static inline const struct perf_evlist *evlist__const_core(const struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->core;
+}
+
+static inline int evlist__nr_entries(const struct evlist *evlist)
+{
+ return evlist__const_core(evlist)->nr_entries;
+}
+
+static inline bool evlist__enabled(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->enabled;
+}
+
+static inline void evlist__set_enabled(struct evlist *evlist, bool enabled)
+{
+ RC_CHK_ACCESS(evlist)->enabled = enabled;
+}
+
+static inline bool evlist__no_affinity(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->no_affinity;
+}
+
+static inline void evlist__set_no_affinity(struct evlist *evlist, bool no_affinity)
+{
+ RC_CHK_ACCESS(evlist)->no_affinity = no_affinity;
+}
+
+static inline int evlist__sb_thread_done(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->sb_thread.done;
+}
+
+static inline void evlist__set_sb_thread_done(struct evlist *evlist, int done)
+{
+ RC_CHK_ACCESS(evlist)->sb_thread.done = done;
+}
+
+static inline pthread_t *evlist__sb_thread_th(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->sb_thread.th;
+}
+
+static inline int evlist__id_pos(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->id_pos;
+}
+
+static inline int evlist__is_pos(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->is_pos;
+}
+
+static inline struct event_enable_timer *evlist__event_enable_timer(struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->eet;
+}
+
+static inline enum bkw_mmap_state evlist__bkw_mmap_state(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->bkw_mmap_state;
+}
+
+static inline void evlist__set_bkw_mmap_state(struct evlist *evlist, enum bkw_mmap_state state)
+{
+ RC_CHK_ACCESS(evlist)->bkw_mmap_state = state;
+}
+
+static inline struct mmap *evlist__mmap(struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->mmap;
+}
+
+static inline struct mmap *evlist__overwrite_mmap(struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->overwrite_mmap;
+}
+
+static inline struct events_stats *evlist__stats(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->stats;
+}
+
+static inline u64 evlist__first_sample_time(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->first_sample_time;
+}
+
+static inline void evlist__set_first_sample_time(struct evlist *evlist, u64 first)
+{
+ RC_CHK_ACCESS(evlist)->first_sample_time = first;
+}
+
+static inline u64 evlist__last_sample_time(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->last_sample_time;
+}
+
+static inline void evlist__set_last_sample_time(struct evlist *evlist, u64 last)
+{
+ RC_CHK_ACCESS(evlist)->last_sample_time = last;
+}
+
+static inline int evlist__nr_br_cntr(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->nr_br_cntr;
+}
+
+static inline void evlist__set_nr_br_cntr(struct evlist *evlist, int nr)
+{
+ RC_CHK_ACCESS(evlist)->nr_br_cntr = nr;
+}
+
+static inline struct perf_session *evlist__session(struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->session;
+}
+
+static inline void evlist__set_session(struct evlist *evlist, struct perf_session *session)
+{
+ RC_CHK_ACCESS(evlist)->session = session;
+}
+
+static inline void (*evlist__trace_event_sample_raw(struct evlist *evlist))
+ (struct evlist *evlist,
+ union perf_event *event,
+ struct perf_sample *sample)
+{
+ return RC_CHK_ACCESS(evlist)->trace_event_sample_raw;
+}
+
+static inline void evlist__set_trace_event_sample_raw(struct evlist *evlist,
+ void (*fun)(struct evlist *evlist,
+ union perf_event *event,
+ struct perf_sample *sample))
+{
+ RC_CHK_ACCESS(evlist)->trace_event_sample_raw = fun;
+}
+
+static inline pid_t evlist__workload_pid(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->workload.pid;
+}
+
+static inline void evlist__set_workload_pid(struct evlist *evlist, pid_t pid)
+{
+ RC_CHK_ACCESS(evlist)->workload.pid = pid;
+}
+
+static inline int evlist__workload_cork_fd(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->workload.cork_fd;
+}
+
+static inline void evlist__set_workload_cork_fd(struct evlist *evlist, int cork_fd)
+{
+ RC_CHK_ACCESS(evlist)->workload.cork_fd = cork_fd;
+}
+
+static inline int evlist__ctl_fd_fd(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->ctl_fd.fd;
+}
+
+static inline void evlist__set_ctl_fd_fd(struct evlist *evlist, int fd)
+{
+ RC_CHK_ACCESS(evlist)->ctl_fd.fd = fd;
+}
+
+static inline int evlist__ctl_fd_ack(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->ctl_fd.ack;
+}
+
+static inline void evlist__set_ctl_fd_ack(struct evlist *evlist, int ack)
+{
+ RC_CHK_ACCESS(evlist)->ctl_fd.ack = ack;
+}
+
+static inline int evlist__ctl_fd_pos(const struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->ctl_fd.pos;
+}
+
+static inline void evlist__set_ctl_fd_pos(struct evlist *evlist, int pos)
+{
+ RC_CHK_ACCESS(evlist)->ctl_fd.pos = pos;
+}
+
+static inline refcount_t *evlist__refcnt(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->refcnt;
+}
+
+static inline struct rblist *evlist__metric_events(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->metric_events;
+}
+
+static inline struct list_head *evlist__deferred_samples(struct evlist *evlist)
+{
+ return &RC_CHK_ACCESS(evlist)->deferred_samples;
+}
+
+static inline struct evsel *evlist__selected(struct evlist *evlist)
+{
+ return RC_CHK_ACCESS(evlist)->selected;
+}
+
+static inline void evlist__set_selected(struct evlist *evlist, struct evsel *evsel)
+{
+ RC_CHK_ACCESS(evlist)->selected = evsel;
+}
+
struct evlist *evlist__new(void);
struct evlist *evlist__new_default(const struct target *target, bool sample_callchains);
struct evlist *evlist__new_dummy(void);
@@ -197,8 +419,8 @@ int evlist__mmap_ex(struct evlist *evlist, unsigned int pages,
unsigned int auxtrace_pages,
bool auxtrace_overwrite, int nr_cblocks,
int affinity, int flush, int comp_level);
-int evlist__mmap(struct evlist *evlist, unsigned int pages);
-void evlist__munmap(struct evlist *evlist);
+int evlist__do_mmap(struct evlist *evlist, unsigned int pages);
+void evlist__do_munmap(struct evlist *evlist);
size_t evlist__mmap_size(unsigned long pages);
@@ -210,8 +432,6 @@ void evlist__enable_evsel(struct evlist *evlist, char *evsel_name);
void evlist__disable_non_dummy(struct evlist *evlist);
void evlist__enable_non_dummy(struct evlist *evlist);
-void evlist__set_selected(struct evlist *evlist, struct evsel *evsel);
-
int evlist__create_maps(struct evlist *evlist, struct target *target);
int evlist__apply_filters(struct evlist *evlist, struct evsel **err_evsel,
struct target *target);
@@ -234,26 +454,26 @@ void evlist__splice_list_tail(struct evlist *evlist, struct list_head *list);
static inline bool evlist__empty(struct evlist *evlist)
{
- return list_empty(&evlist->core.entries);
+ return list_empty(&evlist__core(evlist)->entries);
}
static inline struct evsel *evlist__first(struct evlist *evlist)
{
- struct perf_evsel *evsel = perf_evlist__first(&evlist->core);
+ struct perf_evsel *evsel = perf_evlist__first(evlist__core(evlist));
return container_of(evsel, struct evsel, core);
}
static inline struct evsel *evlist__last(struct evlist *evlist)
{
- struct perf_evsel *evsel = perf_evlist__last(&evlist->core);
+ struct perf_evsel *evsel = perf_evlist__last(evlist__core(evlist));
return container_of(evsel, struct evsel, core);
}
static inline int evlist__nr_groups(struct evlist *evlist)
{
- return perf_evlist__nr_groups(&evlist->core);
+ return perf_evlist__nr_groups(evlist__core(evlist));
}
int evlist__strerror_open(struct evlist *evlist, int err, char *buf, size_t size);
@@ -276,7 +496,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel);
* @evsel: struct evsel iterator
*/
#define evlist__for_each_entry(evlist, evsel) \
- __evlist__for_each_entry(&(evlist)->core.entries, evsel)
+ __evlist__for_each_entry(&evlist__core(evlist)->entries, evsel)
/**
* __evlist__for_each_entry_continue - continue iteration thru all the evsels
@@ -292,7 +512,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel);
* @evsel: struct evsel iterator
*/
#define evlist__for_each_entry_continue(evlist, evsel) \
- __evlist__for_each_entry_continue(&(evlist)->core.entries, evsel)
+ __evlist__for_each_entry_continue(&evlist__core(evlist)->entries, evsel)
/**
* __evlist__for_each_entry_from - continue iteration from @evsel (included)
@@ -308,7 +528,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel);
* @evsel: struct evsel iterator
*/
#define evlist__for_each_entry_from(evlist, evsel) \
- __evlist__for_each_entry_from(&(evlist)->core.entries, evsel)
+ __evlist__for_each_entry_from(&evlist__core(evlist)->entries, evsel)
/**
* __evlist__for_each_entry_reverse - iterate thru all the evsels in reverse order
@@ -324,7 +544,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel);
* @evsel: struct evsel iterator
*/
#define evlist__for_each_entry_reverse(evlist, evsel) \
- __evlist__for_each_entry_reverse(&(evlist)->core.entries, evsel)
+ __evlist__for_each_entry_reverse(&evlist__core(evlist)->entries, evsel)
/**
* __evlist__for_each_entry_safe - safely iterate thru all the evsels
@@ -342,7 +562,7 @@ void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel);
* @tmp: struct evsel temp iterator
*/
#define evlist__for_each_entry_safe(evlist, tmp, evsel) \
- __evlist__for_each_entry_safe(&(evlist)->core.entries, tmp, evsel)
+ __evlist__for_each_entry_safe(&evlist__core(evlist)->entries, tmp, evsel)
/** Iterator state for evlist__for_each_cpu */
struct evlist_cpu_iterator {
@@ -448,7 +668,6 @@ int evlist__ctlfd_ack(struct evlist *evlist);
int evlist__parse_event_enable_time(struct evlist *evlist, struct record_opts *opts,
const char *str, int unset);
int event_enable_timer__start(struct event_enable_timer *eet);
-void event_enable_timer__exit(struct event_enable_timer **ep);
int event_enable_timer__process(struct event_enable_timer *eet);
struct evsel *evlist__find_evsel(struct evlist *evlist, int idx);
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 395488ae36722..d5f7dbce7588d 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -3356,7 +3356,7 @@ static inline bool evsel__has_branch_counters(const struct evsel *evsel)
if (!leader || !evsel->evlist)
return false;
- if (evsel->evlist->nr_br_cntr < 0)
+ if (evlist__nr_br_cntr(evsel->evlist) < 0)
evlist__update_br_cntr(evsel->evlist);
if (leader->br_cntr_nr > 0)
@@ -4388,7 +4388,7 @@ int evsel__open_strerror(struct evsel *evsel, struct target *target,
struct perf_session *evsel__session(struct evsel *evsel)
{
- return evsel && evsel->evlist ? evsel->evlist->session : NULL;
+ return evsel && evsel->evlist ? evlist__session(evsel->evlist) : NULL;
}
struct perf_env *evsel__env(struct evsel *evsel)
@@ -4413,7 +4413,7 @@ static int store_evsel_ids(struct evsel *evsel, struct evlist *evlist)
thread++) {
int fd = FD(evsel, cpu_map_idx, thread);
- if (perf_evlist__id_add_fd(&evlist->core, &evsel->core,
+ if (perf_evlist__id_add_fd(evlist__core(evlist), &evsel->core,
cpu_map_idx, thread, fd) < 0)
return -1;
}
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index 0c0ab23823931..e4776fdeb4c29 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -535,7 +535,7 @@ for ((_evsel) = list_entry((_leader)->core.node.next, struct evsel, core.node);
(_evsel) = list_entry((_evsel)->core.node.next, struct evsel, core.node))
#define for_each_group_member(_evsel, _leader) \
- for_each_group_member_head(_evsel, _leader, &(_leader)->evlist->core.entries)
+ for_each_group_member_head(_evsel, _leader, &evlist__core((_leader)->evlist)->entries)
/* Iterates group WITH the leader. */
#define for_each_group_evsel_head(_evsel, _leader, _head) \
@@ -545,7 +545,7 @@ for ((_evsel) = _leader; \
(_evsel) = list_entry((_evsel)->core.node.next, struct evsel, core.node))
#define for_each_group_evsel(_evsel, _leader) \
- for_each_group_evsel_head(_evsel, _leader, &(_leader)->evlist->core.entries)
+ for_each_group_evsel_head(_evsel, _leader, &evlist__core((_leader)->evlist)->entries)
static inline bool evsel__has_branch_callstack(const struct evsel *evsel)
{
--git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 167ec2703d0e6..e90e541f546b4 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -385,7 +385,7 @@ static int write_tracing_data(struct feat_fd *ff,
return -1;
#ifdef HAVE_LIBTRACEEVENT
- return read_tracing_data(ff->fd, &evlist->core.entries);
+ return read_tracing_data(ff->fd, &evlist__core(evlist)->entries);
#else
pr_err("ERROR: Trying to write tracing data without libtraceevent support.\n");
return -1;
@@ -434,8 +434,8 @@ static int write_osrelease(struct feat_fd *ff,
struct utsname uts;
const char *release = NULL;
- if (evlist->session)
- release = perf_env__os_release(perf_session__env(evlist->session));
+ if (evlist__session(evlist))
+ release = perf_env__os_release(perf_session__env(evlist__session(evlist)));
if (!release) {
int ret = uname(&uts);
@@ -452,8 +452,8 @@ static int write_arch(struct feat_fd *ff, struct evlist *evlist)
struct utsname uts;
const char *arch = NULL;
- if (evlist->session)
- arch = perf_env__arch(perf_session__env(evlist->session));
+ if (evlist__session(evlist))
+ arch = perf_env__arch(perf_session__env(evlist__session(evlist)));
if (!arch) {
int ret = uname(&uts);
@@ -469,7 +469,7 @@ static int write_e_machine(struct feat_fd *ff, struct evlist *evlist)
{
/* e_machine expanded from 16 to 32-bits for alignment. */
uint32_t e_flags;
- uint32_t e_machine = perf_session__e_machine(evlist->session, &e_flags);
+ uint32_t e_machine = perf_session__e_machine(evlist__session(evlist), &e_flags);
int ret;
ret = do_write(ff, &e_machine, sizeof(e_machine));
@@ -605,7 +605,7 @@ static int write_event_desc(struct feat_fd *ff,
u32 nre, nri, sz;
int ret;
- nre = evlist->core.nr_entries;
+ nre = evlist__nr_entries(evlist);
/*
* write number of events
@@ -987,7 +987,7 @@ int __weak get_cpuid(char *buffer __maybe_unused, size_t sz __maybe_unused,
static int write_cpuid(struct feat_fd *ff, struct evlist *evlist)
{
- struct perf_cpu cpu = perf_cpu_map__min(evlist->core.all_cpus);
+ struct perf_cpu cpu = perf_cpu_map__min(evlist__core(evlist)->all_cpus);
char buffer[64];
int ret;
@@ -1420,14 +1420,14 @@ static int write_sample_time(struct feat_fd *ff,
struct evlist *evlist)
{
int ret;
+ u64 data = evlist__first_sample_time(evlist);
- ret = do_write(ff, &evlist->first_sample_time,
- sizeof(evlist->first_sample_time));
+ ret = do_write(ff, &data, sizeof(data));
if (ret < 0)
return ret;
- return do_write(ff, &evlist->last_sample_time,
- sizeof(evlist->last_sample_time));
+ data = evlist__last_sample_time(evlist);
+ return do_write(ff, &data, sizeof(data));
}
@@ -2551,16 +2551,16 @@ static void print_sample_time(struct feat_fd *ff, FILE *fp)
session = container_of(ff->ph, struct perf_session, header);
- timestamp__scnprintf_usec(session->evlist->first_sample_time,
+ timestamp__scnprintf_usec(evlist__first_sample_time(session->evlist),
time_buf, sizeof(time_buf));
fprintf(fp, "# time of first sample : %s\n", time_buf);
- timestamp__scnprintf_usec(session->evlist->last_sample_time,
+ timestamp__scnprintf_usec(evlist__last_sample_time(session->evlist),
time_buf, sizeof(time_buf));
fprintf(fp, "# time of last sample : %s\n", time_buf);
- d = (double)(session->evlist->last_sample_time -
- session->evlist->first_sample_time) / NSEC_PER_MSEC;
+ d = (double)(evlist__last_sample_time(session->evlist) -
+ evlist__first_sample_time(session->evlist)) / NSEC_PER_MSEC;
fprintf(fp, "# sample duration : %10.3f ms\n", d);
}
@@ -3519,8 +3519,8 @@ static int process_sample_time(struct feat_fd *ff, void *data __maybe_unused)
if (ret)
return -1;
- session->evlist->first_sample_time = first_sample_time;
- session->evlist->last_sample_time = last_sample_time;
+ evlist__set_first_sample_time(session->evlist, first_sample_time);
+ evlist__set_last_sample_time(session->evlist, last_sample_time);
return 0;
}
@@ -4610,7 +4610,7 @@ int perf_session__write_header(struct perf_session *session,
/*write_attrs_after_data=*/false);
}
-size_t perf_session__data_offset(const struct evlist *evlist)
+size_t perf_session__data_offset(struct evlist *evlist)
{
struct evsel *evsel;
size_t data_offset;
@@ -4619,7 +4619,7 @@ size_t perf_session__data_offset(const struct evlist *evlist)
evlist__for_each_entry(evlist, evsel) {
data_offset += evsel->core.ids * sizeof(u64);
}
- data_offset += evlist->core.nr_entries * sizeof(struct perf_file_attr);
+ data_offset += evlist__nr_entries(evlist) * sizeof(struct perf_file_attr);
return data_offset;
}
@@ -5110,7 +5110,7 @@ int perf_session__read_header(struct perf_session *session)
if (session->evlist == NULL)
return -ENOMEM;
- session->evlist->session = session;
+ evlist__set_session(session->evlist, session);
session->machines.host.env = &header->env;
/*
@@ -5243,7 +5243,8 @@ int perf_session__read_header(struct perf_session *session)
if (perf_header__getbuffer64(header, fd, &f_id, sizeof(f_id)))
goto out_errno;
- perf_evlist__id_add(&session->evlist->core, &evsel->core, 0, j, f_id);
+ perf_evlist__id_add(evlist__core(session->evlist),
+ &evsel->core, 0, j, f_id);
}
lseek(fd, tmp, SEEK_SET);
@@ -5607,7 +5608,7 @@ int perf_event__process_attr(const struct perf_tool *tool __maybe_unused,
*/
ids = (void *)&event->attr.attr + attr_size;
for (i = 0; i < n_ids; i++) {
- perf_evlist__id_add(&evlist->core, &evsel->core, 0, i, ids[i]);
+ perf_evlist__id_add(evlist__core(evlist), &evsel->core, 0, i, ids[i]);
}
return 0;
--git a/tools/perf/util/header.h b/tools/perf/util/header.h
index 86b1a72026d3f..5e03f884b7cc0 100644
--- a/tools/perf/util/header.h
+++ b/tools/perf/util/header.h
@@ -158,7 +158,7 @@ int perf_session__inject_header(struct perf_session *session,
struct feat_copier *fc,
bool write_attrs_after_data);
-size_t perf_session__data_offset(const struct evlist *evlist);
+size_t perf_session__data_offset(struct evlist *evlist);
void perf_header__set_feat(struct perf_header *header, int feat);
void perf_header__clear_feat(struct perf_header *header, int feat);
diff --git a/tools/perf/util/intel-tpebs.c b/tools/perf/util/intel-tpebs.c
index bc3b79bfa01a7..b41171b5df77d 100644
--- a/tools/perf/util/intel-tpebs.c
+++ b/tools/perf/util/intel-tpebs.c
@@ -98,8 +98,9 @@ static int evsel__tpebs_start_perf_record(struct evsel *evsel)
record_argv[i++] = "-o";
record_argv[i++] = PERF_DATA;
- if (!perf_cpu_map__is_any_cpu_or_is_empty(evsel->evlist->core.user_requested_cpus)) {
- cpu_map__snprint(evsel->evlist->core.user_requested_cpus, cpumap_buf,
+ if (!perf_cpu_map__is_any_cpu_or_is_empty(
+ evlist__core(evsel->evlist)->user_requested_cpus)) {
+ cpu_map__snprint(evlist__core(evsel->evlist)->user_requested_cpus, cpumap_buf,
sizeof(cpumap_buf));
record_argv[i++] = "-C";
record_argv[i++] = cpumap_buf;
@@ -176,7 +177,7 @@ static bool should_ignore_sample(const struct perf_sample *sample, const struct
if (t->evsel->evlist == NULL)
return true;
- workload_pid = t->evsel->evlist->workload.pid;
+ workload_pid = evlist__workload_pid(t->evsel->evlist);
if (workload_pid < 0 || workload_pid == sample_pid)
return false;
diff --git a/tools/perf/util/iostat.c b/tools/perf/util/iostat.c
index b770bd473af71..c9d5028a47f39 100644
--- a/tools/perf/util/iostat.c
+++ b/tools/perf/util/iostat.c
@@ -4,7 +4,7 @@
enum iostat_mode_t iostat_mode = IOSTAT_NONE;
-__weak int iostat_prepare(struct evlist *evlist __maybe_unused,
+__weak int iostat_prepare(struct evlist **evlist __maybe_unused,
struct perf_stat_config *config __maybe_unused)
{
return -1;
diff --git a/tools/perf/util/iostat.h b/tools/perf/util/iostat.h
index a4e7299c5c2fb..df8a241fbc32a 100644
--- a/tools/perf/util/iostat.h
+++ b/tools/perf/util/iostat.h
@@ -30,7 +30,7 @@ extern enum iostat_mode_t iostat_mode;
typedef void (*iostat_print_counter_t)(struct perf_stat_config *, struct evsel *, void *);
-int iostat_prepare(struct evlist *evlist, struct perf_stat_config *config);
+int iostat_prepare(struct evlist **evlist, struct perf_stat_config *config);
int iostat_parse(const struct option *opt, const char *str,
int unset __maybe_unused);
void iostat_list(struct evlist *evlist, struct perf_stat_config *config);
diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
index 2c4e9fefb41f8..8c7b299a55db9 100644
--- a/tools/perf/util/metricgroup.c
+++ b/tools/perf/util/metricgroup.c
@@ -1490,7 +1490,7 @@ static int parse_groups(struct evlist *perf_evlist,
goto out;
}
- me = metricgroup__lookup(&perf_evlist->metric_events,
+ me = metricgroup__lookup(evlist__metric_events(perf_evlist),
pick_display_evsel(&metric_list, metric_events),
/*create=*/true);
@@ -1541,13 +1541,13 @@ static int parse_groups(struct evlist *perf_evlist,
if (combined_evlist) {
- evlist__splice_list_tail(perf_evlist, &combined_evlist->core.entries);
+ evlist__splice_list_tail(perf_evlist, &evlist__core(combined_evlist)->entries);
evlist__put(combined_evlist);
}
list_for_each_entry(m, &metric_list, nd) {
if (m->evlist)
- evlist__splice_list_tail(perf_evlist, &m->evlist->core.entries);
+ evlist__splice_list_tail(perf_evlist, &evlist__core(m->evlist)->entries);
}
out:
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 8fb5626d5d379..194bc94dfc1ec 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -2294,7 +2294,7 @@ int __parse_events(struct evlist *evlist, const char *str, const char *pmu_filte
{
struct parse_events_state parse_state = {
.list = LIST_HEAD_INIT(parse_state.list),
- .idx = evlist->core.nr_entries,
+ .idx = evlist__nr_entries(evlist),
.error = err,
.stoken = PE_START_EVENTS,
.fake_pmu = fake_pmu,
@@ -2568,7 +2568,7 @@ foreach_evsel_in_last_glob(struct evlist *evlist,
*
* So no need to WARN here, let *func do this.
*/
- if (evlist->core.nr_entries > 0)
+ if (evlist__nr_entries(evlist) > 0)
last = evlist__last(evlist);
do {
@@ -2578,7 +2578,7 @@ foreach_evsel_in_last_glob(struct evlist *evlist,
if (!last)
return 0;
- if (last->core.node.prev == &evlist->core.entries)
+ if (last->core.node.prev == &evlist__core(evlist)->entries)
return 0;
last = list_entry(last->core.node.prev, struct evsel, core.node);
} while (!last->cmdline_group_boundary);
diff --git a/tools/perf/util/pfm.c b/tools/perf/util/pfm.c
index 5f53c2f68a966..f80d6b0df47ae 100644
--- a/tools/perf/util/pfm.c
+++ b/tools/perf/util/pfm.c
@@ -85,7 +85,7 @@ int parse_libpfm_events_option(const struct option *opt, const char *str,
}
pmu = perf_pmus__find_by_type((unsigned int)attr.type);
- evsel = parse_events__add_event(evlist->core.nr_entries,
+ evsel = parse_events__add_event(evlist__nr_entries(evlist),
&attr, q, /*metric_id=*/NULL,
pmu);
if (evsel == NULL)
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index 9d4773885dcbb..2ee17d3a3cd92 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -1523,7 +1523,7 @@ static int pyrf_evlist__init(struct pyrf_evlist *pevlist,
}
threads = ((struct pyrf_thread_map *)pthreads)->threads;
cpus = ((struct pyrf_cpu_map *)pcpus)->cpus;
- perf_evlist__set_maps(&pevlist->evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(pevlist->evlist), cpus, threads);
return 0;
}
@@ -1536,23 +1536,29 @@ static void pyrf_evlist__delete(struct pyrf_evlist *pevlist)
static PyObject *pyrf_evlist__all_cpus(struct pyrf_evlist *pevlist)
{
- struct pyrf_cpu_map *pcpu_map = PyObject_New(struct pyrf_cpu_map, &pyrf_cpu_map__type);
+ struct pyrf_cpu_map *pcpu_map;
+
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+ pcpu_map = PyObject_New(struct pyrf_cpu_map, &pyrf_cpu_map__type);
if (pcpu_map)
- pcpu_map->cpus = perf_cpu_map__get(pevlist->evlist->core.all_cpus);
+ pcpu_map->cpus = perf_cpu_map__get(evlist__core(pevlist->evlist)->all_cpus);
return (PyObject *)pcpu_map;
}
static PyObject *pyrf_evlist__metrics(struct pyrf_evlist *pevlist)
{
- PyObject *list = PyList_New(/*len=*/0);
+ PyObject *list;
struct rb_node *node;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ list = PyList_New(/*len=*/0);
if (!list)
return NULL;
- for (node = rb_first_cached(&pevlist->evlist->metric_events.entries); node;
+ for (node = rb_first_cached(&evlist__metric_events(pevlist->evlist)->entries); node;
node = rb_next(node)) {
struct metric_event *me = container_of(node, struct metric_event, nd);
struct list_head *pos;
@@ -1655,10 +1661,12 @@ static PyObject *pyrf_evlist__compute_metric(struct pyrf_evlist *pevlist,
double result = 0;
struct evsel *metric_evsel = NULL;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
if (!PyArg_ParseTuple(args, "sii", &metric, &cpu, &thread))
return NULL;
- for (node = rb_first_cached(&pevlist->evlist->metric_events.entries);
+ for (node = rb_first_cached(&evlist__metric_events(pevlist->evlist)->entries);
mexp == NULL && node;
node = rb_next(node)) {
struct metric_event *me = container_of(node, struct metric_event, nd);
@@ -1719,15 +1727,18 @@ static PyObject *pyrf_evlist__compute_metric(struct pyrf_evlist *pevlist,
static PyObject *pyrf_evlist__mmap(struct pyrf_evlist *pevlist,
PyObject *args, PyObject *kwargs)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
static char *kwlist[] = { "pages", "overwrite", NULL };
int pages = 128, overwrite = false;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ii", kwlist,
&pages, &overwrite))
return NULL;
- if (evlist__mmap(evlist, pages) < 0) {
+ if (evlist__do_mmap(evlist, pages) < 0) {
PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
@@ -1739,10 +1750,13 @@ static PyObject *pyrf_evlist__mmap(struct pyrf_evlist *pevlist,
static PyObject *pyrf_evlist__poll(struct pyrf_evlist *pevlist,
PyObject *args, PyObject *kwargs)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
static char *kwlist[] = { "timeout", NULL };
int timeout = -1, n;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i", kwlist, &timeout))
return NULL;
@@ -1759,13 +1773,18 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
PyObject *args __maybe_unused,
PyObject *kwargs __maybe_unused)
{
- struct evlist *evlist = pevlist->evlist;
- PyObject *list = PyList_New(0);
+ struct evlist *evlist;
+ PyObject *list;
int i;
- for (i = 0; i < evlist->core.pollfd.nr; ++i) {
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
+ list = PyList_New(0);
+
+ for (i = 0; i < evlist__core(evlist)->pollfd.nr; ++i) {
PyObject *file;
- file = PyFile_FromFd(evlist->core.pollfd.entries[i].fd, "perf", "r", -1,
+ file = PyFile_FromFd(evlist__core(evlist)->pollfd.entries[i].fd, "perf", "r", -1,
NULL, NULL, NULL, 0);
if (file == NULL)
goto free_list;
@@ -1788,28 +1807,33 @@ static PyObject *pyrf_evlist__add(struct pyrf_evlist *pevlist,
PyObject *args,
PyObject *kwargs __maybe_unused)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
PyObject *pevsel;
struct evsel *evsel;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
if (!PyArg_ParseTuple(args, "O!", &pyrf_evsel__type, &pevsel))
return NULL;
CHECK_INITIALIZED(((struct pyrf_evsel *)pevsel)->evsel, "evsel");
evsel = ((struct pyrf_evsel *)pevsel)->evsel;
- evsel->core.idx = evlist->core.nr_entries;
+ CHECK_INITIALIZED(evsel, "evsel");
+
+ evsel->core.idx = evlist__nr_entries(evlist);
evlist__add(evlist, evsel__get(evsel));
- return Py_BuildValue("i", evlist->core.nr_entries);
+ return Py_BuildValue("i", evlist__nr_entries(evlist));
}
static struct mmap *get_md(struct evlist *evlist, int cpu)
{
int i;
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- struct mmap *md = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ struct mmap *md = &evlist__mmap(evlist)[i];
if (md->core.cpu.cpu == cpu)
return md;
@@ -1821,13 +1845,16 @@ static struct mmap *get_md(struct evlist *evlist, int cpu)
static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
PyObject *args, PyObject *kwargs)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
union perf_event *event;
int sample_id_all = 1, cpu;
static char *kwlist[] = { "cpu", "sample_id_all", NULL };
struct mmap *md;
int err;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist,
&cpu, &sample_id_all))
return NULL;
@@ -1878,8 +1905,11 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist,
static PyObject *pyrf_evlist__open(struct pyrf_evlist *pevlist,
PyObject *args, PyObject *kwargs)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
+
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+ evlist = pevlist->evlist;
if (evlist__open(evlist) < 0) {
PyErr_SetFromErrno(PyExc_OSError);
return NULL;
@@ -1891,8 +1921,11 @@ static PyObject *pyrf_evlist__open(struct pyrf_evlist *pevlist,
static PyObject *pyrf_evlist__close(struct pyrf_evlist *pevlist)
{
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+
+ evlist = pevlist->evlist;
evlist__close(evlist);
Py_INCREF(Py_None);
@@ -1917,8 +1950,11 @@ static PyObject *pyrf_evlist__config(struct pyrf_evlist *pevlist)
.no_buffering = true,
.no_inherit = true,
};
- struct evlist *evlist = pevlist->evlist;
+ struct evlist *evlist;
+
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
+ evlist = pevlist->evlist;
evlist__config(evlist, &opts, &callchain_param);
Py_INCREF(Py_None);
return Py_None;
@@ -1926,6 +1962,7 @@ static PyObject *pyrf_evlist__config(struct pyrf_evlist *pevlist)
static PyObject *pyrf_evlist__disable(struct pyrf_evlist *pevlist)
{
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
evlist__disable(pevlist->evlist);
Py_INCREF(Py_None);
return Py_None;
@@ -1933,6 +1970,7 @@ static PyObject *pyrf_evlist__disable(struct pyrf_evlist *pevlist)
static PyObject *pyrf_evlist__enable(struct pyrf_evlist *pevlist)
{
+ CHECK_INITIALIZED(pevlist->evlist, "evlist");
evlist__enable(pevlist->evlist);
Py_INCREF(Py_None);
return Py_None;
@@ -2027,7 +2065,7 @@ static Py_ssize_t pyrf_evlist__length(PyObject *obj)
if (!pevlist->evlist)
return 0;
- return pevlist->evlist->core.nr_entries;
+ return evlist__nr_entries(pevlist->evlist);
}
static PyObject *pyrf_evsel__from_evsel(struct evsel *evsel)
@@ -2046,7 +2084,7 @@ static PyObject *pyrf_evlist__item(PyObject *obj, Py_ssize_t i)
struct pyrf_evlist *pevlist = (void *)obj;
struct evsel *pos;
- if (!pevlist->evlist || i >= pevlist->evlist->core.nr_entries) {
+ if (!pevlist->evlist || i >= evlist__nr_entries(pevlist->evlist)) {
PyErr_SetString(PyExc_IndexError, "Index out of range");
return NULL;
}
@@ -2274,7 +2312,7 @@ static PyObject *pyrf__parse_events(PyObject *self, PyObject *args)
cpus = pcpus ? ((struct pyrf_cpu_map *)pcpus)->cpus : NULL;
parse_events_error__init(&err);
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
if (parse_events(evlist, input, &err)) {
parse_events_error__print(&err, input);
PyErr_SetFromErrno(PyExc_OSError);
@@ -2307,7 +2345,7 @@ static PyObject *pyrf__parse_metrics(PyObject *self, PyObject *args)
threads = pthreads ? ((struct pyrf_thread_map *)pthreads)->threads : NULL;
cpus = pcpus ? ((struct pyrf_cpu_map *)pcpus)->cpus : NULL;
- perf_evlist__set_maps(&evlist->core, cpus, threads);
+ perf_evlist__set_maps(evlist__core(evlist), cpus, threads);
ret = metricgroup__parse_groups(evlist, pmu ?: "all", input,
/*metric_no_group=*/ false,
/*metric_no_merge=*/ false,
diff --git a/tools/perf/util/record.c b/tools/perf/util/record.c
index 8a5fc7d5e43c7..38e8aee3106b7 100644
--- a/tools/perf/util/record.c
+++ b/tools/perf/util/record.c
@@ -99,7 +99,7 @@ void evlist__config(struct evlist *evlist, struct record_opts *opts, struct call
bool use_comm_exec;
bool sample_id = opts->sample_id;
- if (perf_cpu_map__cpu(evlist->core.user_requested_cpus, 0).cpu < 0)
+ if (perf_cpu_map__cpu(evlist__core(evlist)->user_requested_cpus, 0).cpu < 0)
opts->no_inherit = true;
use_comm_exec = perf_can_comm_exec();
@@ -122,7 +122,7 @@ void evlist__config(struct evlist *evlist, struct record_opts *opts, struct call
*/
use_sample_identifier = perf_can_sample_identifier();
sample_id = true;
- } else if (evlist->core.nr_entries > 1) {
+ } else if (evlist__nr_entries(evlist) > 1) {
struct evsel *first = evlist__first(evlist);
evlist__for_each_entry(evlist, evsel) {
@@ -237,7 +237,8 @@ bool evlist__can_select_event(struct evlist *evlist, const char *str)
evsel = evlist__last(temp_evlist);
- if (!evlist || perf_cpu_map__is_any_cpu_or_is_empty(evlist->core.user_requested_cpus)) {
+ if (!evlist ||
+ perf_cpu_map__is_any_cpu_or_is_empty(evlist__core(evlist)->user_requested_cpus)) {
struct perf_cpu_map *cpus = perf_cpu_map__new_online_cpus();
if (cpus)
@@ -245,7 +246,7 @@ bool evlist__can_select_event(struct evlist *evlist, const char *str)
perf_cpu_map__put(cpus);
} else {
- cpu = perf_cpu_map__cpu(evlist->core.user_requested_cpus, 0);
+ cpu = perf_cpu_map__cpu(evlist__core(evlist)->user_requested_cpus, 0);
}
while (1) {
diff --git a/tools/perf/util/sample-raw.c b/tools/perf/util/sample-raw.c
index e20b73c0c5bd7..f5ae9f4689834 100644
--- a/tools/perf/util/sample-raw.c
+++ b/tools/perf/util/sample-raw.c
@@ -18,11 +18,11 @@ void evlist__init_trace_event_sample_raw(struct evlist *evlist, struct perf_env
uint16_t e_machine = perf_env__e_machine(env, /*e_flags=*/NULL);
if (e_machine == EM_S390) {
- evlist->trace_event_sample_raw = evlist__s390_sample_raw;
+ evlist__set_trace_event_sample_raw(evlist, evlist__s390_sample_raw);
} else if (e_machine == EM_X86_64 || e_machine == EM_386) {
const char *cpuid = perf_env__cpuid(env);
if (cpuid && strstarts(cpuid, "AuthenticAMD") && evlist__has_amd_ibs(evlist))
- evlist->trace_event_sample_raw = evlist__amd_sample_raw;
+ evlist__set_trace_event_sample_raw(evlist, evlist__amd_sample_raw);
}
}
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 9962b830a4026..10d8942f86dad 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -205,7 +205,7 @@ struct perf_session *__perf_session__new(struct perf_data *data,
session->machines.host.env = host_env;
}
if (session->evlist)
- session->evlist->session = session;
+ evlist__set_session(session->evlist, session);
session->machines.host.single_address_space =
perf_env__single_address_space(session->machines.host.env);
@@ -1549,8 +1549,8 @@ static void dump_event(struct evlist *evlist, union perf_event *event,
file_offset, file_path, event->header.size, event->header.type);
trace_event(event);
- if (event->header.type == PERF_RECORD_SAMPLE && evlist->trace_event_sample_raw)
- evlist->trace_event_sample_raw(evlist, event, sample);
+ if (event->header.type == PERF_RECORD_SAMPLE && evlist__trace_event_sample_raw(evlist))
+ evlist__trace_event_sample_raw(evlist)(evlist, event, sample);
if (sample)
evlist__print_tstamp(evlist, event, sample);
@@ -1751,7 +1751,7 @@ static int deliver_sample_value(struct evlist *evlist,
}
if (!storage || sid->evsel == NULL) {
- ++evlist->stats.nr_unknown_id;
+ ++evlist__stats(evlist)->nr_unknown_id;
return 0;
}
@@ -1853,7 +1853,7 @@ static int evlist__deliver_deferred_callchain(struct evlist *evlist,
return ret;
}
- list_for_each_entry_safe(de, tmp, &evlist->deferred_samples, list) {
+ list_for_each_entry_safe(de, tmp, evlist__deferred_samples(evlist), list) {
struct perf_sample orig_sample;
perf_sample__init(&orig_sample, /*all=*/false);
@@ -1902,7 +1902,7 @@ static int session__flush_deferred_samples(struct perf_session *session,
struct deferred_event *de, *tmp;
int ret = 0;
- list_for_each_entry_safe(de, tmp, &evlist->deferred_samples, list) {
+ list_for_each_entry_safe(de, tmp, evlist__deferred_samples(evlist), list) {
struct perf_sample sample;
perf_sample__init(&sample, /*all=*/false);
@@ -1964,17 +1964,16 @@ static int machines__deliver_event(struct machines *machines,
sample->evsel = evlist__id2evsel(evlist, sample->id);
else
assert(sample->evsel == evlist__id2evsel(evlist, sample->id));
-
machine = machines__find_for_cpumode(machines, event, sample);
switch (event->header.type) {
case PERF_RECORD_SAMPLE:
if (sample->evsel == NULL) {
- ++evlist->stats.nr_unknown_id;
+ ++evlist__stats(evlist)->nr_unknown_id;
return 0;
}
if (machine == NULL) {
- ++evlist->stats.nr_unprocessable_samples;
+ ++evlist__stats(evlist)->nr_unprocessable_samples;
dump_sample(machine, event, sample);
return 0;
}
@@ -1993,7 +1992,7 @@ static int machines__deliver_event(struct machines *machines,
}
memcpy(de->event, event, sz);
de->file_offset = sample->file_offset;
- list_add_tail(&de->list, &evlist->deferred_samples);
+ list_add_tail(&de->list, evlist__deferred_samples(evlist));
return 0;
}
return evlist__deliver_sample(evlist, tool, event, sample, machine);
@@ -2005,7 +2004,7 @@ static int machines__deliver_event(struct machines *machines,
return tool->mmap(tool, event, sample, machine);
case PERF_RECORD_MMAP2:
if (event->header.misc & PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT)
- ++evlist->stats.nr_proc_map_timeout;
+ ++evlist__stats(evlist)->nr_proc_map_timeout;
if (!perf_event__check_nul(event->mmap2.filename,
(void *)event + event->header.size,
"MMAP2", file_offset))
@@ -2050,13 +2049,13 @@ static int machines__deliver_event(struct machines *machines,
return tool->exit(tool, event, sample, machine);
case PERF_RECORD_LOST:
if (tool->lost == perf_event__process_lost)
- evlist->stats.total_lost += event->lost.lost;
+ evlist__stats(evlist)->total_lost += event->lost.lost;
return tool->lost(tool, event, sample, machine);
case PERF_RECORD_LOST_SAMPLES:
if (event->header.misc & PERF_RECORD_MISC_LOST_SAMPLES_BPF)
- evlist->stats.total_dropped_samples += event->lost_samples.lost;
+ evlist__stats(evlist)->total_dropped_samples += event->lost_samples.lost;
else if (tool->lost_samples == perf_event__process_lost_samples)
- evlist->stats.total_lost_samples += event->lost_samples.lost;
+ evlist__stats(evlist)->total_lost_samples += event->lost_samples.lost;
return tool->lost_samples(tool, event, sample, machine);
case PERF_RECORD_READ:
dump_read(sample->evsel, event);
@@ -2068,11 +2067,11 @@ static int machines__deliver_event(struct machines *machines,
case PERF_RECORD_AUX:
if (tool->aux == perf_event__process_aux) {
if (event->aux.flags & PERF_AUX_FLAG_TRUNCATED)
- evlist->stats.total_aux_lost += 1;
+ evlist__stats(evlist)->total_aux_lost += 1;
if (event->aux.flags & PERF_AUX_FLAG_PARTIAL)
- evlist->stats.total_aux_partial += 1;
+ evlist__stats(evlist)->total_aux_partial += 1;
if (event->aux.flags & PERF_AUX_FLAG_COLLISION)
- evlist->stats.total_aux_collision += 1;
+ evlist__stats(evlist)->total_aux_collision += 1;
}
return tool->aux(tool, event, sample, machine);
case PERF_RECORD_ITRACE_START:
@@ -2108,7 +2107,7 @@ static int machines__deliver_event(struct machines *machines,
return evlist__deliver_deferred_callchain(evlist, tool, event,
sample, machine);
default:
- ++evlist->stats.nr_unknown_events;
+ ++evlist__stats(evlist)->nr_unknown_events;
return -1;
}
}
@@ -2520,7 +2519,7 @@ int perf_session__deliver_synth_event(struct perf_session *session,
struct evlist *evlist = session->evlist;
const struct perf_tool *tool = session->tool;
- events_stats__inc(&evlist->stats, event->header.type);
+ events_stats__inc(evlist__stats(evlist), event->header.type);
if (event->header.type >= PERF_RECORD_USER_TYPE_START)
return perf_session__process_user_event(session, event, 0, NULL);
@@ -2930,7 +2929,7 @@ static s64 perf_session__process_event(struct perf_session *session,
return 0;
}
- events_stats__inc(&evlist->stats, event->header.type);
+ events_stats__inc(evlist__stats(evlist), event->header.type);
if (event->header.type >= PERF_RECORD_USER_TYPE_START)
return perf_session__process_user_event(session, event, file_offset, file_path);
@@ -2991,7 +2990,7 @@ perf_session__warn_order(const struct perf_session *session)
static void perf_session__warn_about_errors(const struct perf_session *session)
{
- const struct events_stats *stats = &session->evlist->stats;
+ const struct events_stats *stats = evlist__stats(session->evlist);
if (session->tool->lost == perf_event__process_lost &&
stats->nr_events[PERF_RECORD_LOST] != 0) {
@@ -3824,7 +3823,7 @@ size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp)
ret = fprintf(fp, "\nAggregated stats:%s\n", msg);
- ret += events_stats__fprintf(&session->evlist->stats, fp);
+ ret += events_stats__fprintf(evlist__stats(session->evlist), fp);
return ret;
}
diff --git a/tools/perf/util/sideband_evlist.c b/tools/perf/util/sideband_evlist.c
index b84a5463e0394..c07dacf3c54c5 100644
--- a/tools/perf/util/sideband_evlist.c
+++ b/tools/perf/util/sideband_evlist.c
@@ -22,7 +22,7 @@ int evlist__add_sb_event(struct evlist *evlist, struct perf_event_attr *attr,
attr->sample_id_all = 1;
}
- evsel = evsel__new_idx(attr, evlist->core.nr_entries);
+ evsel = evsel__new_idx(attr, evlist__nr_entries(evlist));
if (!evsel)
return -1;
@@ -49,14 +49,14 @@ static void *perf_evlist__poll_thread(void *arg)
while (!done) {
bool got_data = false;
- if (evlist->thread.done)
+ if (evlist__sb_thread_done(evlist))
draining = true;
if (!draining)
evlist__poll(evlist, 1000);
- for (i = 0; i < evlist->core.nr_mmaps; i++) {
- struct mmap *map = &evlist->mmap[i];
+ for (i = 0; i < evlist__core(evlist)->nr_mmaps; i++) {
+ struct mmap *map = &evlist__mmap(evlist)[i];
union perf_event *event;
if (perf_mmap__read_init(&map->core))
@@ -104,7 +104,7 @@ int evlist__start_sb_thread(struct evlist *evlist, struct target *target)
if (evlist__create_maps(evlist, target))
goto out_put_evlist;
- if (evlist->core.nr_entries > 1) {
+ if (evlist__nr_entries(evlist) > 1) {
bool can_sample_identifier = perf_can_sample_identifier();
evlist__for_each_entry(evlist, counter)
@@ -114,12 +114,12 @@ int evlist__start_sb_thread(struct evlist *evlist, struct target *target)
}
evlist__for_each_entry(evlist, counter) {
- if (evsel__open(counter, evlist->core.user_requested_cpus,
- evlist->core.threads) < 0)
+ if (evsel__open(counter, evlist__core(evlist)->user_requested_cpus,
+ evlist__core(evlist)->threads) < 0)
goto out_put_evlist;
}
- if (evlist__mmap(evlist, UINT_MAX))
+ if (evlist__do_mmap(evlist, UINT_MAX))
goto out_put_evlist;
evlist__for_each_entry(evlist, counter) {
@@ -127,8 +127,8 @@ int evlist__start_sb_thread(struct evlist *evlist, struct target *target)
goto out_put_evlist;
}
- evlist->thread.done = 0;
- if (pthread_create(&evlist->thread.th, NULL, perf_evlist__poll_thread, evlist))
+ evlist__set_sb_thread_done(evlist, 0);
+ if (pthread_create(evlist__sb_thread_th(evlist), NULL, perf_evlist__poll_thread, evlist))
goto out_put_evlist;
return 0;
@@ -143,7 +143,7 @@ void evlist__stop_sb_thread(struct evlist *evlist)
{
if (!evlist)
return;
- evlist->thread.done = 1;
- pthread_join(evlist->thread.th, NULL);
+ evlist__set_sb_thread_done(evlist, 1);
+ pthread_join(*evlist__sb_thread_th(evlist), NULL);
evlist__put(evlist);
}
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 005e7d85dc4a5..dcf9189786f8a 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -3487,7 +3487,7 @@ static struct evsel *find_evsel(struct evlist *evlist, char *event_name)
if (event_name[0] == '%') {
int nr = strtol(event_name+1, NULL, 0);
- if (nr > evlist->core.nr_entries)
+ if (nr > evlist__nr_entries(evlist))
return NULL;
evsel = evlist__first(evlist);
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 0a5750bb59fa3..f94f1324d24ac 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -667,7 +667,7 @@ static void print_metric_header(struct perf_stat_config *config,
/* In case of iostat, print metric header for first root port only */
if (config->iostat_run &&
- os->evsel->priv != os->evsel->evlist->selected->priv)
+ os->evsel->priv != evlist__selected(os->evsel->evlist)->priv)
return;
if (os->evsel->cgrp != os->cgrp)
@@ -1126,7 +1126,7 @@ static void print_no_aggr_metric(struct perf_stat_config *config,
unsigned int all_idx;
struct perf_cpu cpu;
- perf_cpu_map__for_each_cpu(cpu, all_idx, evlist->core.user_requested_cpus) {
+ perf_cpu_map__for_each_cpu(cpu, all_idx, evlist__core(evlist)->user_requested_cpus) {
struct evsel *counter;
bool first = true;
@@ -1543,7 +1543,7 @@ void evlist__print_counters(struct evlist *evlist, struct perf_stat_config *conf
evlist__uniquify_evsel_names(evlist, config);
if (config->iostat_run)
- evlist->selected = evlist__first(evlist);
+ evlist__set_selected(evlist, evlist__first(evlist));
if (config->interval)
prepare_timestamp(config, &os, ts);
diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index 35062f964618a..525a3fe4a46ec 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -287,7 +287,7 @@ void *perf_stat__print_shadow_stats_metricgroup(struct perf_stat_config *config,
void *ctxp = out->ctx;
bool header_printed = false;
const char *name = NULL;
- struct rblist *metric_events = &evsel->evlist->metric_events;
+ struct rblist *metric_events = evlist__metric_events(evsel->evlist);
me = metricgroup__lookup(metric_events, evsel, false);
if (me == NULL)
@@ -355,5 +355,5 @@ bool perf_stat__skip_metric_event(struct evsel *evsel)
if (!evsel->default_metricgroup)
return false;
- return !metricgroup__lookup(&evsel->evlist->metric_events, evsel, false);
+ return !metricgroup__lookup(evlist__metric_events(evsel->evlist), evsel, false);
}
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
index 66eb9a66a4f7a..25f31a1743682 100644
--- a/tools/perf/util/stat.c
+++ b/tools/perf/util/stat.c
@@ -547,8 +547,8 @@ static void evsel__merge_aliases(struct evsel *evsel)
struct evlist *evlist = evsel->evlist;
struct evsel *alias;
- alias = list_prepare_entry(evsel, &(evlist->core.entries), core.node);
- list_for_each_entry_continue(alias, &evlist->core.entries, core.node) {
+ alias = list_prepare_entry(evsel, &(evlist__core(evlist)->entries), core.node);
+ list_for_each_entry_continue(alias, &evlist__core(evlist)->entries, core.node) {
if (alias->first_wildcard_match == evsel) {
/* Merge the same events on different PMUs. */
evsel__merge_aggr_counters(evsel, alias);
diff --git a/tools/perf/util/stream.c b/tools/perf/util/stream.c
index 3de4a61308539..7bccd23783444 100644
--- a/tools/perf/util/stream.c
+++ b/tools/perf/util/stream.c
@@ -131,7 +131,7 @@ static int evlist__init_callchain_streams(struct evlist *evlist,
struct evsel *pos;
int i = 0;
- BUG_ON(els->nr_evsel < evlist->core.nr_entries);
+ BUG_ON(els->nr_evsel < evlist__nr_entries(evlist));
evlist__for_each_entry(evlist, pos) {
struct hists *hists = evsel__hists(pos);
@@ -148,7 +148,7 @@ static int evlist__init_callchain_streams(struct evlist *evlist,
struct evlist_streams *evlist__create_streams(struct evlist *evlist,
int nr_streams_max)
{
- int nr_evsel = evlist->core.nr_entries, ret = -1;
+ int nr_evsel = evlist__nr_entries(evlist), ret = -1;
struct evlist_streams *els = evlist_streams__new(nr_evsel,
nr_streams_max);
diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c
index 5307d707711d8..b75f9dcf4dbfe 100644
--- a/tools/perf/util/synthetic-events.c
+++ b/tools/perf/util/synthetic-events.c
@@ -2247,7 +2247,7 @@ int perf_event__synthesize_tracing_data(const struct perf_tool *tool, int fd, st
* - write the tracing data from the temp file
* to the pipe
*/
- tdata = tracing_data_get(&evlist->core.entries, fd, true);
+ tdata = tracing_data_get(&evlist__core(evlist)->entries, fd, true);
if (!tdata)
return -1;
@@ -2404,13 +2404,16 @@ int perf_event__synthesize_stat_events(struct perf_stat_config *config, const st
}
err = perf_event__synthesize_extra_attr(tool, evlist, process, attrs);
- err = perf_event__synthesize_thread_map2(tool, evlist->core.threads, process, NULL);
+ err = perf_event__synthesize_thread_map2(tool, evlist__core(evlist)->threads,
+ process, /*machine=*/NULL);
if (err < 0) {
pr_err("Couldn't synthesize thread map.\n");
return err;
}
- err = perf_event__synthesize_cpu_map(tool, evlist->core.user_requested_cpus, process, NULL);
+ err = perf_event__synthesize_cpu_map(tool,
+ evlist__core(evlist)->user_requested_cpus,
+ process, /*machine=*/NULL);
if (err < 0) {
pr_err("Couldn't synthesize thread map.\n");
return err;
@@ -2518,7 +2521,7 @@ int perf_event__synthesize_for_pipe(const struct perf_tool *tool,
ret += err;
#ifdef HAVE_LIBTRACEEVENT
- if (have_tracepoints(&evlist->core.entries)) {
+ if (have_tracepoints(&evlist__core(evlist)->entries)) {
int fd = perf_data__fd(data);
/*
diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c
index d43c4577d7ebc..5558a5a0fea4a 100644
--- a/tools/perf/util/time-utils.c
+++ b/tools/perf/util/time-utils.c
@@ -473,8 +473,8 @@ int perf_time__parse_for_ranges_reltime(const char *time_str,
return -ENOMEM;
if (has_percent || reltime) {
- if (session->evlist->first_sample_time == 0 &&
- session->evlist->last_sample_time == 0) {
+ if (evlist__first_sample_time(session->evlist) == 0 &&
+ evlist__last_sample_time(session->evlist) == 0) {
pr_err("HINT: no first/last sample time found in perf data.\n"
"Please use latest perf binary to execute 'perf record'\n"
"(if '--buildid-all' is enabled, please set '--timestamp-boundary').\n");
@@ -486,8 +486,8 @@ int perf_time__parse_for_ranges_reltime(const char *time_str,
num = perf_time__percent_parse_str(
ptime_range, size,
time_str,
- session->evlist->first_sample_time,
- session->evlist->last_sample_time);
+ evlist__first_sample_time(session->evlist),
+ evlist__last_sample_time(session->evlist));
} else {
num = perf_time__parse_strs(ptime_range, time_str, size);
}
@@ -499,8 +499,8 @@ int perf_time__parse_for_ranges_reltime(const char *time_str,
int i;
for (i = 0; i < num; i++) {
- ptime_range[i].start += session->evlist->first_sample_time;
- ptime_range[i].end += session->evlist->first_sample_time;
+ ptime_range[i].start += evlist__first_sample_time(session->evlist);
+ ptime_range[i].end += evlist__first_sample_time(session->evlist);
}
}
diff --git a/tools/perf/util/top.c b/tools/perf/util/top.c
index b06e10a116bb3..851a26be69315 100644
--- a/tools/perf/util/top.c
+++ b/tools/perf/util/top.c
@@ -71,7 +71,7 @@ size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size)
esamples_percent);
}
- if (top->evlist->core.nr_entries == 1) {
+ if (evlist__nr_entries(top->evlist) == 1) {
struct evsel *first = evlist__first(top->evlist);
ret += SNPRINTF(bf + ret, size - ret, "%" PRIu64 "%s ",
(uint64_t)first->core.attr.sample_period,
@@ -94,7 +94,7 @@ size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size)
else
ret += SNPRINTF(bf + ret, size - ret, " (all");
- nr_cpus = perf_cpu_map__nr(top->evlist->core.user_requested_cpus);
+ nr_cpus = perf_cpu_map__nr(evlist__core(top->evlist)->user_requested_cpus);
if (target->cpu_list)
ret += SNPRINTF(bf + ret, size - ret, ", CPU%s: %s)",
nr_cpus > 1 ? "s" : "",
--
2.53.0
next prev parent reply other threads:[~2026-09-12 7:14 UTC|newest]
Thread overview: 1837+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-12 6:29 [PATCH 7.2 0000/1815] 7.2.6-rc1 review Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0001/1815] drm/amd/display: Scale custom brightness curve from full range Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0002/1815] batman-adv: dat: atomically update mac addresses Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0003/1815] batman-adv: bla: avoid CRC corruption due to parallel claim add Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0004/1815] mm/damon/core: skip aging from repeated aggressive merging Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0005/1815] i3c: master: Fix device_register() error path Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0006/1815] i3c: master: Fix recursive locking during device registration Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0007/1815] dm-pcache: validate seg_id fields from persistent memory Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0008/1815] i3c: master: Fix use-after-free of master->this Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0009/1815] i3c: master: Do not treat master device as a duplicate target Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0010/1815] dm-pcache: validate the persisted dirty_tail chain at load Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0011/1815] udf: Move udf_map_block() up Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0012/1815] udf: Fix data loss when converting inline inodes to out of line Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0013/1815] staging: sm750fb: fix mono image source stride mismatch in lynxfb_ops_imageblit() Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0014/1815] tracing/probes: ignore id update from btf_type_skip_modifiers Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0015/1815] tracing/probes: Fix BTF kflag check for anonymous struct member access Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0016/1815] btrfs: abort transaction before releasing tree_log_mutex on commit failure Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0017/1815] ksmbd: fix maximum allowed access checks Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0018/1815] smb/server: fix tree connection leak in smb2_tree_connect() Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0019/1815] ksmbd: fix tree connection use-after-free " Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0020/1815] memcg: move LRU size accounting on reparenting instead of copying it Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0021/1815] nvdimm: preserve flush callback -ENOMEM Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0022/1815] nvdimm: pmem: keep PREFLUSH before data writes Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0023/1815] nvdimm: virtio_pmem: stop allocating child flush bio Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0024/1815] nvdimm: virtio_pmem: always wake -ENOSPC waiters Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0025/1815] nvdimm: virtio_pmem: use READ_ONCE()/WRITE_ONCE() for wait flags Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0026/1815] nvdimm: virtio_pmem: refcount requests for token lifetime Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0027/1815] mm/mremap: reset unfaulted VMA page offset for MREMAP_DONTUNMAP Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0028/1815] clk: qcom: Fix test_ctl_hi field for DEFAULT_EVO PLLs Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0029/1815] KVM: x86: Extract REGS and SREGS runtime sync code to helpers Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0030/1815] KVM: x86: Move get_segment_base() to regs.h, as kvm_get_segment_base() Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0031/1815] KVM: x86: Rename __{g,s}et_sregs2() => kvm_vcpu_ioctl_x86_{g,s}et_sregs2() Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0032/1815] KVM: x86: Move the bulk of register specific code from x86.c to regs.c Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0033/1815] KVM: x86: Check EFER validity on KVM_SET_SREGS* Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0034/1815] Smack: Fix error in capability bypass Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0035/1815] drm: Remove unused header in drm_dumb_buffers.c Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0036/1815] drm/atomic: Drop drm_private_obj.state assignment from create_state Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0037/1815] drm/tegra: dsi: Re-add clear enable register if DSI was powered by bootloader Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0038/1815] drm: lcdif: Wait for vblank before disabling DMA Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0039/1815] drm/bridge: synopsys: dw-dp: Support unregistering the AUX channel Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0040/1815] drm/rockchip: dw_dp: Add missing newline in dev_err_probe() message Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0041/1815] drm/rockchip: dw_dp: Release core resources Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0042/1815] drm/rockchip: vop2: Fix wrong wait target in layer cfg done check Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0043/1815] drm/rockchip: vop2: Wait for layer cfg done before switching LAYERSEL_REGDONE_SEL Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0044/1815] drm/rockchip: analogix_dp: Enable hclk for RK3588 Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0045/1815] drm/rockchip: analogix_dp: Fix OF node reference leak via auto cleanup Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0046/1815] drm/bridge: display-connector: dont autoenable HPD IRQ Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0047/1815] drm/bridge: display-connector: trigger initial HPD event for DP Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0048/1815] gpu: nova-core: gsp: tu102: keep unloading if FWSEC-SB fails Greg Kroah-Hartman
2026-09-12 6:29 ` [PATCH 7.2 0049/1815] drm/v3d: Clear queue->active_job when v3d_fence_create() fails Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0050/1815] drm/display: hdmi-state-helper: Try subsampling in mode_valid Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0051/1815] drm/rockchip: vop2: Add RK3576 to the RG swap special case Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0052/1815] drm/rockchip: vop2: Recognise 10-bit YUV422 as YUV format Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0053/1815] rust: drm: gpuvm: update DriverGpuVm for DeviceContext Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0054/1815] drm/bridge: cdns-dsi: Return an error pointer on allocation failure Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0055/1815] drm/bridge: cdns-mhdp8546: " Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0056/1815] smack: fix incorrect task context in smack_msg_queue_msgrcv Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0057/1815] smack: simplify write handlers of sysfs entries Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0058/1815] smack: deduplicate smackfs/{direct,mapped} file_operations Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0059/1815] smack: restrict smackfs/{direct,mapped} values to 0-255 Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0060/1815] cgroup/cpuset: Avoid unnecessary cpus & mems update in cpuset_hotplug_update_tasks() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0061/1815] sched_ext/scx_flatcg: Fix cvtime_delta race and add hweight scaling to bypass charging Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0062/1815] drm/bridge: of-display-mode-bridge: Fix missing static const for the bridge funcs Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0063/1815] x86/cfi: Use symmetric SYM_START and SYM_END in __CFI_TYPE() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0064/1815] platform/chrome: cros_ec_typec: Reject out-of-bounds PD cap count Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0065/1815] selftests: proc: include fcntl.h in proc-pidns Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0066/1815] HID: core: quiesce input in hid_hw_stop() to prevent use-after-free Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0067/1815] HID: nintendo: Fix imu_timestamp_us double increment per report Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0068/1815] HID: roccat: bound device-supplied profile index Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0069/1815] soc: samsung: exynos-pmu: fix of_node refcount leak in exynos_get_pmu_regmap() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0070/1815] media: cec-pin: Fix event FIFO ordering Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0071/1815] mtd: rawnand: pl353: Fix debug prints Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0072/1815] ASoC: SOF: ipc4-topology: Return error for invalid number of formats Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0073/1815] cxl/mbox: Clamp mailbox output allocation to the payload size Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0074/1815] arm64: dts: imx94: Correct PCIe outbound address space configuration Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0075/1815] arm64: dts: imx943: " Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0076/1815] cxl/pci: Remove incorrect mbox.valid check in cxl_pci_type3_init_mailbox() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0077/1815] ARM: imx: avic: Fix OF node reference leaks Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0078/1815] clk: versaclock7: Fix APLL clock leak on probe failure Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0079/1815] clk: canaan: Clear rate fields before reprogramming dividers Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0080/1815] clk: eswin: Add CLK_IGNORE_UNUSED to NoC clock Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0081/1815] clk: moxart: remove unused variables, fix refcount leak Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0082/1815] clk: nuvoton: ma35d1: fix ignored div_u64 return values in PLL freq calculation Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0083/1815] clk: nuvoton: ma35d1: fix PLL_CTL1_FRAC bit field width and fractional calc Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0084/1815] clk: nuvoton: ma35d1: fix ma35d1_clk_pll_determine_rate logic Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0085/1815] clk: stm32: add missing bitfield.h header Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0086/1815] ASoC: rt700-sdw: always drain jack work on remove Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0087/1815] ASoC: fsl_audmix: rework runtime PM handling in probe Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0088/1815] arm64: dts: imx8mp-frdm: Add missing HDMI DDC pinctrl Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0089/1815] clk: hisilicon: reset: Use devm_kzalloc to initialize hisi_reset_controller Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0090/1815] ARM: imx: fix device_node refcount leak in imx_src_init() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0091/1815] ARM: imx: fix device_node refcount leaks in imx7_src_init() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0092/1815] ARM: OMAP2+: Fix OF node reference leaks in omap_hwmod Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0093/1815] firmware: imx: sm-misc: Add NULL check for kmalloc in syslog_show Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0094/1815] arm64: dts: imx93-kontron: set memory node to 0x80000000/1GiB Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0095/1815] arm64: dts: freescale: imx95-toradex-smarc: add alias for lpuart5 Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0096/1815] arm64: dts: imx8mp-ab2: Enable MU2 for DSP communication Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0097/1815] clk: imx: scu: drop redundant init.ops variable assignment Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0098/1815] drm/lima: call drm_mm_init() with a valid allocation range Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0099/1815] mm/mm_init: fix incorrect node_spanned_pages Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0100/1815] sched/core: Fix inter-class wakeup_preempt() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0101/1815] sched/fair: Fix overflow in update_tg_cfs_runnable() Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0102/1815] perf/x86/intel/uncore: Keep PCI PMUs working when MMIO/MSR setup fails Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0103/1815] perf/x86/intel/uncore: Fix PCI PMU cleanup on setup failure Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0104/1815] perf/x86/intel/uncore: Fix refcnt and other cleanups Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0105/1815] perf/x86/intel/uncore: Let init_box() callback report failures Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0106/1815] perf/x86/intel/uncore: Factor out box setup code Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0107/1815] perf/x86/intel/uncore: Introduce PMU flags and broken state Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0108/1815] perf/x86/intel/uncore: Fix uncore_box ref/unref ordering Greg Kroah-Hartman
2026-09-12 6:30 ` [PATCH 7.2 0109/1815] pinctrl: imx1: fix device_node leak in dt_is_flat_functions() Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0110/1815] perf/x86/intel: Keep cap_user_rdpmc in sync with RDPMC user-disable state Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0111/1815] pinctrl: bcm2835: Dont remove an unregistered GPIO chip Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0112/1815] drm/panthor: Pass vm_bind_op to vm_prepare_map_op_ctx Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0113/1815] drm/panthor: Support sparse mappings Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0114/1815] drm/panthor: Fix NPD issue on partial unmap of an evicted BO Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0115/1815] riscv: kexec_file: Fix crashk_low_res not exclude bug Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0116/1815] workqueue: only show running workers in stall diagnostics Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0117/1815] perf test: Skip failing perf test aslr test case Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0118/1815] cxl/test: Add test for module parameters Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0119/1815] cxl/test: Refactor platform device enumerations Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0120/1815] cxl/test: Add hierarchy enumeration support for type2 device Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0121/1815] cxl/test: Propagate -ENOMEM on platform_device_alloc() failures Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0122/1815] media: keymaps: Remove obsolete RC_MAP_RC5_TV keymap define Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0123/1815] media: keymaps: Remove obsolete RC_MAP_HAUPPAUGE_NEW " Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0124/1815] wifi: ath12k: fix TLV32 length mask Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0125/1815] wifi: ath12k: correct monitor destination ring size Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0126/1815] perf pmu: Recognize default_core as a core PMU in more places Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0127/1815] perf util: Sort includes and add missed explicit dependencies Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0128/1815] perf evlist: Add reference count Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0129/1815] perf evsel: " Greg Kroah-Hartman
2026-09-12 6:31 ` Greg Kroah-Hartman [this message]
2026-09-12 6:31 ` [PATCH 7.2 0131/1815] perf parse-events: Restrict core PMU bypass to --cputype option Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0132/1815] perf test: Truncate test description to fit terminal width Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0133/1815] perf tests: Skip metrics validation if system-wide recording lacks permission Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0134/1815] perf tests: Fix Python JIT dump profiling test failure Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0135/1815] perf tests: Add robust record retry helper and use subsecond workloads Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0136/1815] perf tests: Fix flakiness in trace record and replay test Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0137/1815] perf tests: Fix flakiness in BPF counters test on hybrid systems Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0138/1815] perf tests: Fix flakiness in branch stack sampling tests Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0139/1815] PCI: imx6: Fix building against PCI_HOST_COMMON Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0140/1815] PCI: imx6: Fix building against PCI_PWRCTRL_GENERIC Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0141/1815] regulator: tps6594: Fix device node reference leaks in multiphase loop Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0142/1815] drm/amd/powerplay: fix VoltageObjectInfo zero-stride loop and OOB read Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0143/1815] drm/amdgpu/pm/powerplay: bounds-check voltage index in SMU7 lookup Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0144/1815] drm/amdgpu/pm/powerplay: bounds-check voltage index in Vega10 lookup Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0145/1815] ASoC: samsung: i2s: Avoid mixing goto with guard() Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0146/1815] ASoC: ti: j721e-evm: " Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0147/1815] drm/amd/display: Fix dangling pointer in plane reset function Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0148/1815] drm/amd/display: Fix dangling pointer in CRTC " Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0149/1815] bpftool: Strip all -Wformat* flags from bootstrap libbpf build Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0150/1815] tools/bpf/bpftool: Reset vmlinux BTF after map commands Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0151/1815] tools/bpf/bpftool: Reset vmlinux BTF after struct_ops commands Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0152/1815] bpf: Copy per-CPU map value padding in copy_map_value_long() Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0153/1815] selftests/bpf: Mask socket type flags in mptcpify prog Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0154/1815] bpf,lsm: Drop bpf_prog_free from sleepable_lsm_hooks Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0155/1815] mm/mm_init: handle alloc_percpu failure in free_area_init_core_hotplug Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0156/1815] leds: lp5860: Fix a potential double-unlock Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0157/1815] leds: lp5860-spi: Fix an error handling path Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0158/1815] dmaengine: mediatek: mtk-uart-apdma: Return -ENOMEM on memory allocation failure Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0159/1815] dmaengine: xilinx_dma: Fix channel idle state management in AXIDMA and MCDMA interrupt handlers Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0160/1815] dmaengine: zynqmp_dma: fix race between runtime PM and device removal Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0161/1815] dmaengine: hisilicon: Return -ENOMEM on dynamic memory allocation in probe Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0162/1815] dmaengine: xilinx_dma: Fix CPU stall in xilinx_dma_poll_timeout Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0163/1815] soundwire: qcom: Fix port exhaustion check in stream_alloc_ports Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0164/1815] iio: orientation: hid-sensor-rotation: Avoid race between callback setup and device exposure Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0165/1815] csky: Fix a4/a5 restoration in syscall trace path Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0166/1815] selftests/rseq: Replace glibc-specific __GNUC_PREREQ with portable check Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0167/1815] wifi: rtw89: debug: fix off by on in rtw89_ppdu_str() Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0168/1815] wifi: rtw89: fw: correct preload field of w2 in rtw89_fw_h2c_default_cmac_tbl_be() Greg Kroah-Hartman
2026-09-12 6:31 ` [PATCH 7.2 0169/1815] platform/chrome: sensorhub: Fix memory overread in ring handler Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0170/1815] wifi: rtw89: fw: fix link ID filling for LPS MLO common info Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0171/1815] wifi: rtw89: check return values in rtw89_ops_start_ap() Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0172/1815] wifi: rtw89: fix HE extended capability length check Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0173/1815] uprobes/x86: Remove struct uprobe_trampoline object Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0174/1815] uprobes/x86: Do not leak trampoline vma mapping on optimization failure Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0175/1815] uprobes/x86: Allow to copy uprobe trampolines on fork Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0176/1815] uprobes/x86: Move optimized uprobe from nop5 to nop10 Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0177/1815] fanotify: initialize permission event watchdog state Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0178/1815] tools/nolibc: mark arg1 operand in __nolibc_syscall0() as write-only Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0179/1815] perf cs-etm: Fix thread leaks on trace queue init failure Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0180/1815] perf cs-etm: Filter synthesized branch samples Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0181/1815] libbpf: Change has_nop_combo to work on top of nop10 Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0182/1815] libbpf: Detect uprobe syscall with new error Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0183/1815] perf/x86/amd/uncore: Add group validation Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0184/1815] perf test amd ibs: avoid using executable heap Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0185/1815] perf vendor events amd: Update Zen 5 core events Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0186/1815] perf vendor events amd: Update Zen 6 " Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0187/1815] hwrng: core - fix rng list on registration error Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0188/1815] crypto: qat - cancel work on re-enable SR-IOV timeout Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0189/1815] crypto: qat - clear AES key schedule from stack Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0190/1815] crypto: atmel-ecc - reject hardware ECDH without a public key Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0191/1815] crypto: atmel-sha204a - fix heap info leak on I2C transfer failure Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0192/1815] crypto: sa2ul - stop probe if context pool creation fails Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0193/1815] hwrng: xilinx-trng - propagate timeout before any data is read Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0194/1815] hwrng: omap - Fix probe error path cleanup Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0195/1815] crypto: rk3288 - fail ahash requests on HASH idle timeout Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0196/1815] crypto: keembay - Fix AEAD unregister count in error path Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0197/1815] RDMA/irdma: Deduplicate the irdma_del_memlist logic Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0198/1815] RDMA/irdma: Add a refcount to track user ring MR associations Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0199/1815] RDMA/irdma: Add irdma_cq fields to track pbl allocations Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0200/1815] RDMA/irdma: Add refcounting to user ring MRs Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0201/1815] arm64: dts: qcom: sm8750: wire UFS to ice instance Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0202/1815] arm64: dts: qcom: talos: Fix GMU unit address Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0203/1815] RDMA/bng_re: return a timeout when firmware responses stall Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0204/1815] fuse: move "epoch" from dentry.d_time to fuse_dentry.epoch Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0205/1815] nvme-apple: Use acquire/release for queue enabled state Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0206/1815] nvmet-rdma: factor out response resource cleanup Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0207/1815] nvmet-rdma: fix response resource leak on queue teardown Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0208/1815] bus: ti-sysc: Fix /chosen node reference leak Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0209/1815] PM: sleep: Fix off-by-one in wakelocks number limit check Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0210/1815] cgroup/cpuset: Make nr_deadline_tasks an atomic_t Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0211/1815] clk: qcom: gdsc: Add custom disable callback for GX GDSC Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0212/1815] clk: qcom: gxclkctl: Use custom disable callback for gx_gdsc Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0213/1815] arm64: dts: qcom: monaco: fix wrong connection for the replicator Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0214/1815] arm64: dts: qcom: sc8280xp-blackrock: switch to uefi rtc offset Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0215/1815] arm64: dts: qcom: sm7225-fairphone-fp4: Fix address in fb node name Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0216/1815] arm64: dts: qcom: sm6125: Use 64 bit addressing Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0217/1815] arm64: dts: qcom: hamoa: Fix clocks for HSPHYs Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0218/1815] arm64: dts: qcom: glymur: Fix unit-address mismatch for spmi_bus2 Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0219/1815] arm64: dts: qcom: glymur: Fix gcc clock specifier for usb_mp_qmpphy nodes Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0220/1815] arm64: dts: qcom: glymur-crd: Add Embedded controller node Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0221/1815] arm64: dts: qcom: glymur-crd: Move common board nodes to shared DTSI Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0222/1815] arm64: dts: glymur-crd: Add reset GPIO to touchscreen node Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0223/1815] clk: qcom: gcc-glymur: Move EVA clocks to critical clock list Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0224/1815] arm64: dts: qcom: sc8280xp: sort reserved memory regions Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0225/1815] bus: qcom-ebi2: Fix clock leak on probe failure Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0226/1815] PCI: qcom: Skip PERST# GPIOs provided by downstream PCIe devices Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0227/1815] wifi: mac80211_hwsim: avoid NULL skb in stop queue drain Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0228/1815] staging: greybus: audio: correct sscanf() return value check Greg Kroah-Hartman
2026-09-12 6:32 ` [PATCH 7.2 0229/1815] staging: sm750fb: gate dualview dataflow using g_dualview Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0230/1815] staging: sm750fb: Add missing Kconfig dependency Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0231/1815] greybus: audio: bound the topology section sizes against the fetched size Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0232/1815] staging: fbtft: Use sysfs_emit_at() to print to sysfs file Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0233/1815] staging: octeon: add missing tasklet_kill in cvm_oct_tx_shutdown Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0234/1815] staging: octeon: add missing napi_disable in cvm_oct_rx_shutdown Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0235/1815] staging: rtl8723bs: fix mismatched free of HalData in rtw_sdio_if1_init() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0236/1815] kbuild: unset sub_make_done before calling kselftest build system Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0237/1815] ALSA: via82xx: Remove unreachable branch in snd_via686_pcm_pointer() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0238/1815] selftests/bpf: libarena: Clean up allocation state before buddy tests Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0239/1815] selftests/bpf: Fix memory leak in msg_alloc_iov error path Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0240/1815] bpf: Reject MEM_ALLOC BTF accesses past object bounds Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0241/1815] s390/bpf: Replace ly instruction with llgf Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0242/1815] selftests/bpf: Fix memory leak in msg_alloc_iov Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0243/1815] selftests/lsm: Fix memory leak in attr_lsm_count Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0244/1815] irqchip/gic-v3-its: Fix memleak in its_probe_one() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0245/1815] irqchip/gic-v3-its: Fix its node leak in gic_acpi_parse_madt_its() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0246/1815] selftests: timers: leap-a-day: Fix -w option and update usage comment Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0247/1815] clocksource: Unregister subsystem on device registration failure Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0248/1815] timekeeping: Unwind aux clock sysfs children on failure Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0249/1815] timers/migration: Fix memory leak in tmigr_setup_groups() error path Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0250/1815] time/namespace: Validate nanosecond field in proc_timens_set_offset() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0251/1815] y2038: uapi: Use 64-bit __kernel_old_timespec::tv_nsec on x32 Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0252/1815] timekeeping: Account for monotonicity adjustment in ntp_error Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0253/1815] arm64: dts: qcom: Add #{address,size}-cells to Chromium-based /firmware Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0254/1815] clk: qcom: gdsc: propagate gdsc_check_status() errors from gdsc_poll_status Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0255/1815] clk: qcom: gdsc: propagate gdsc_enable() failure for ALWAYS_ON domains Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0256/1815] clk: qcom: gdsc: tear down per-domain genpds in gdsc_unregister() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0257/1815] arm64: dts: qcom: sc8280xp-arcata: Fix top USB-C DP alt mode Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0258/1815] arm64: dts: qcom: sm6125-xiaomi-laurel-sprout: Fixup panel compatible Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0259/1815] arm64: dts: qcom: sdm670-google: add lpi reserved gpios Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0260/1815] arm64: dts: qcom: sc8180x-primus: Rename regulator nodes Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0261/1815] arm64: dts: qcom: sc8180x-primus: Describe the display power net Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0262/1815] arm64: dts: qcom: sc8180x-lenovo-flex-5g: Rename regulator nodes Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0263/1815] arm64: dts: qcom: sc8180x-lenovo-flex-5g: Describe the display power net Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0264/1815] clk: qcom: gcc-qcs8300: Use retention for PCIe power domains Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0265/1815] clk: qcom: gcc-qcs8300: Use retention for USB " Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0266/1815] perf record: fix poll storm when monitored threads exit Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0267/1815] perf data convert json: Fix trace_seq memory leak in process_sample_event() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0268/1815] bpf: Reject writes through untrusted BTF pointers Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0269/1815] staging: media: ipu7: fix pm_runtime refcount leak in ipu7_init_fw_code_region_by_sys() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0270/1815] staging: media: ipu7: fix pm_runtime refcount leak in ipu7_resume() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0271/1815] thermal/drivers/rcar: Fix error checking in probe() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0272/1815] usb: typec: ucsi: unregister debugfs entries on teardown Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0273/1815] usb: gadget: r8a66597: avoid double free of ep0_req in probe error path Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0274/1815] udf: Mark LVID buffer as uptodate before marking it dirty Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0275/1815] bpftool: Check EVP_Digest when computing excl_prog_hash Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0276/1815] drm/amdgpu/mes: Fix hung_queue_db_array loop limit for multi-XCC Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0277/1815] perf vendor events amd: Reintroduce deprecated Zen 5 core events Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0278/1815] perf dso: Fix kallsyms DSO detection with fallback logic Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0279/1815] bpf: Fix vmlinux BTF prep race in bpf_get_btf_vmlinux Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0280/1815] efi: fix stale reference to efi_recover_from_page_fault() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0281/1815] bpf: Fix use-after-free on mm_struct in bpf_find_vma() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0282/1815] bus: mhi: ep: Fix device refcount leak in the error path of MHI device creation Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0283/1815] bpf: Introduce jit_required flag and remove bpf_prog_has_kfunc_call() Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0284/1815] bpf: Reject programs with inlined helpers if JIT is not available Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0285/1815] iommu/mediatek-v1: Fix off-by-one in MT2701_LARB_NR_MAX Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0286/1815] bpf: Fix security_bpf_map_create error handling Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0287/1815] iommu/msm: Return -ENOMEM on memory allocation failure in probe Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0288/1815] iommu/amd: Prevent SB IOAPIC from overriding IVRS validation errors Greg Kroah-Hartman
2026-09-12 6:33 ` [PATCH 7.2 0289/1815] iommu/amd: Fix false positive in SB IOAPIC IVRS validation Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0290/1815] arm64: dts: mediatek: tungsten-smarc: Remove unnecessary cells Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0291/1815] leds: pca9532: Fix inverted GPIO output polarity Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0292/1815] leds: st1202: Stop pattern sequence before reprogramming Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0293/1815] leds: st1202: Fix pattern duration prescaler and pattern_clear skip marker Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0294/1815] leds: st1202: Fix spurious pattern sequence start in setup Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0295/1815] leds: st1202: Set all pattern PWM slots to full after clearing pattern Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0296/1815] leds: st1202: Fix brightness having no effect while pattern mode is active Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0297/1815] leds: st1202: Disable channel when brightness is set to zero Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0298/1815] leds: st1202: Validate LED reg property against channel count Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0299/1815] printk: Fix possible console use-after-free Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0300/1815] ACPI: RISC-V: Fix riscv_acpi_irq_get_dep() loop termination Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0301/1815] ACPI: RISC-V: Check acpi_get_handle() status in riscv_acpi_add_prt_dep() Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0302/1815] ACPI: RISC-V: Fix riscv_acpi_add_prt_dep() loop handling Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0303/1815] platform/x86: dell-privacy: Fix race condition Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0304/1815] platform/x86: dell-wmi-base: Fix resource leak on module load failure Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0305/1815] platform/x86: dell-wmi-base: Fix handling of ultra performance key Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0306/1815] platform/x86: lg-laptop: Fix LED resource handling Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0307/1815] bpf: Drop scalar id on sign-extending narrowing stack fills Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0308/1815] remoteproc: qcom_q6v5_adsp: Fix reference leak for device node Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0309/1815] remoteproc: qcom_wcnss: Fix handling the lack of PD regulators in v3 Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0310/1815] bpf: Reject rdonly/rdwr_buf_size kfunc arguments that exceed u32 max Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0311/1815] hwspinlock: propagate errno when registering single lock Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0312/1815] selftests/sched_ext: Fix bpf_link leak on early return in prog_run Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0313/1815] perf capstone: Fix kernel map reference count leak Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0314/1815] platform/x86: asus-wireless: Fail probe when there is no ACPI match Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0315/1815] spi: qcom-geni: Fix missing error check on pm_runtime_get_sync() Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0316/1815] media: platform: amd: use refcount_t instead of atomic_t Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0317/1815] serial: 8250: Clear CON_PRINTBUFFER on port re-registration Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0318/1815] serial: ma35d1: Fix OF node reference leaks in console init Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0319/1815] serial: qcom-geni: do not advance stale DMA completions Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0320/1815] usb: gadget: uac: validate rate list length before storing Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0321/1815] usb: gadget: f_fs: Fix fence cleanup in ffs_dmabuf_transfer() error paths Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0322/1815] usb: gadget: configfs: fix out-of-bounds read of qw_sign Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0323/1815] usb: typec: tcpm: fix EPR AVS APDO maximum voltage decoding Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0324/1815] usb: ljca: bound bank_num in ljca_enumerate_gpio() Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0325/1815] usb: gadget: aspeed_udc: check endpoint DMA allocation Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0326/1815] usb: fix UAF when probe runs concurrent to dyn ID removal Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0327/1815] platform/x86: asus-wmi: fix resource leaks on probe failure Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0328/1815] platform/mellanox: mlxbf-pmc: Check ACPI_COMPANION() against NULL Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0329/1815] platform/surface: acpi-notify: Check ACPI companion before use Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0330/1815] usb: mtu3: allow system suspend during active gadget connection Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0331/1815] usb: renesas_usbhs: Fix power-off ordering on unbind Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0332/1815] usb: typec: ucsi: gaokun: unwind notifier on UCSI register failure Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0333/1815] usb: chipidea: imx: fix missing ret assignment for dev_err_probe Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0334/1815] drm/panel: samsung-s6d16d0: Power off on prepare failure Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0335/1815] perf record: Fix teardown hang on system-wide multi-threaded sessions Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0336/1815] clk: spacemit: k3: fix parent clock of UFS aclk Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0337/1815] perf metricgroup: Fix metric expression copy leaks Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0338/1815] soc: qcom: rpmh-rsc: manage PM notifiers with devres Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0339/1815] bus: qcom-ebi2: use managed resources for clocks and children Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0340/1815] clk: qcom: camcc-sc8280xp: unregister CAMCC_GDSC_CLK Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0341/1815] bpf: Require a BPF cpumask for bpf_cpumask_populate() Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0342/1815] bpf: Mark tracing_multi trampolines as ftrace managed Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0343/1815] wifi: rtw89: 8852a: fix RSSI report when average beacon RSSI is not ready Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0344/1815] iio: accel: dmard09: Implement IIO_CHAN_INFO_SCALE Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0345/1815] RDMA/core: Wait for RCU callbacks before unloading ib_core Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0346/1815] RDMA/mlx5: Drain RCU callbacks during module teardown Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0347/1815] RDMA/ipoib: " Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0348/1815] RDMA/rxe: Avoid reprocessing the current packet after the QP enters the error state Greg Kroah-Hartman
2026-09-12 6:34 ` [PATCH 7.2 0349/1815] drm/msm/dp: add missing drm_edid_connector_update() before add_modes on cached EDID Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0350/1815] Revert "drm/msm: dsi: fix PLL init in bonded mode" Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0351/1815] crypto: ccp - Fix possible deadlock in SEV init failure path Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0352/1815] crypto: ccp - Fix memory leak in SEV INIT_EX path Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0353/1815] hwrng: ks-sa - Fix runtime PM cleanup on registration failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0354/1815] crash_dump: release keyring reference at the correct time Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0355/1815] xfrm6: fix out-of-bounds write in xfrm6_input_addr() when secpath is full Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0356/1815] esp: do not unref managed frag pages in esp_ssg_unref() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0357/1815] ALSA: hpi: Check transport errors during HPI6000 adapter initialization Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0358/1815] pmdomain: bcm: bcm2835: handle genpd provider registration errors Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0359/1815] misc: rtsx_usb: avoid USB I/O in runtime autosuspend Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0360/1815] RDMA/rvt: Return NULL after port allocation failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0361/1815] RDMA/hfi1: Preserve unit 0 on " Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0362/1815] RDMA/hfi1: Free RX data on late probe failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0363/1815] RDMA/hfi1: Stop flushing the global IB workqueue Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0364/1815] RDMA/hfi1: Initialize debugfs after probe completes Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0365/1815] ASoC: apple: mca: increase SERDES reset delay Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0366/1815] isofs: fix out-of-bounds page array access on empty zisofs block Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0367/1815] iommufd/selftest: Avoid selftest dirty bitmap size wrap Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0368/1815] iommufd/selftest: Fix dmabuf leak in iommufd_test_dmabuf_get() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0369/1815] rust: drm: gpuvm: require Send + Sync for the drivers associated data Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0370/1815] media: v4l2-async: Unregister sub-device if asc_list is empty Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0371/1815] tools/sched_ext: scx_flatcg: Fix uninitialized stats on allocation failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0372/1815] fs/resctrl: Prevent use-after-free in rdtgroup_kn_put() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0373/1815] perf record: Return the written size from process_comp_header() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0374/1815] perf record: Fix multiple PERF_RECORD_COMPRESSED2 records per push Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0375/1815] fs/resctrl: Fix UAF from worker threads when domains are removed Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0376/1815] rpmsg: glink: fix deadlock in endpoint destroy during driver detach Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0377/1815] arm64: dts: renesas: rzt2h-n2h-evk: Remove unused MII/GMII pins Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0378/1815] arm64: dts: renesas: r9a09g056: Fix PCIe dma-ranges memory space code Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0379/1815] arm64: dts: renesas: r9a09g047: " Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0380/1815] iommufd: Simplify iommufd_device_remove_vdev() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0381/1815] cxl/test: Rework cxl_type2_mem_init() to use cxl_mock_platform_device_add() Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0382/1815] cxl/memdev: Fix firmware upload exact-fit handling Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0383/1815] cxl/mbox: Break poison list loop on an empty payload Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0384/1815] cxl/pci: Honor -EPROBE_DEFER from component register setup Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0385/1815] cxl/features: Serialize multi-part Get/Set Feature transfers Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0386/1815] cxl/port: Restart port enumeration when a sibling adds the dport first Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0387/1815] hfsplus: validate thread record before delete key rebuild Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0388/1815] wifi: ath12k: fix dp_link_peer dangling references on AP vdev rollback Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0389/1815] wifi: ath12k: fix MLO peer delete race Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0390/1815] wifi: ath12k: fix rx_mpdu_start layout for QCC2072 Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0391/1815] wifi: ath11k: cap out-of-range rx MCS instead of leaving bogus rate Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0392/1815] x86/entry/fred: Encode frame pointer on entry Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0393/1815] firmware: arm_scmi: Publish channel state before callbacks Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0394/1815] firmware: arm_scmi: Unregister device notifier before IDR teardown Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0395/1815] firmware: arm_scmi: Quiesce notifications before teardown Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0396/1815] firmware: arm_scmi: Clean up channels on setup failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0397/1815] firmware: arm_scmi: Free transport channel on IDR failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0398/1815] firmware: arm_scmi: Avoid IDR updates while cleaning channels Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0399/1815] firmware: arm_scmi: Reject out of range DT protocol IDs Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0400/1815] firmware: arm_scmi: Use channel ID for transport teardown Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0401/1815] firmware: arm_scmi: Protect device request lookup with RCU Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0402/1815] firmware: arm_scmi: Drop handle on protocol bind failures Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0403/1815] firmware: arm_scmi: Clear SystemPower flag on create failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0404/1815] firmware: arm_scmi: Fix OF node reference handling Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0405/1815] firmware: arm_scmi: Unwind TX receiver mailbox setup failure Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0406/1815] firmware: arm_scmi: Unwind P2A " Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0407/1815] firmware: arm_scmi: Fix SCMI device destroy lifetimes Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0408/1815] firmware: arm_scmi: Fix transport device teardown lookup Greg Kroah-Hartman
2026-09-12 6:35 ` [PATCH 7.2 0409/1815] cxl/features: Reject Get Feature count larger than the output buffer Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0410/1815] cxl/features: Reject Set Features output buffer smaller than the header Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0411/1815] cxl/features: Clamp Get Feature output size to the remaining buffer Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0412/1815] regulator: adp5055: Fix error code in adp5055_of_parse_cb() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0413/1815] tools/sched_ext: scx_qmap: Fix stale API name in comment Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0414/1815] libnvdimm/labels: Bound the on-media label size before the shift Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0415/1815] dax: fix misleading comment about share/index union in dax_folio_reset_order() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0416/1815] dax/fsdev: fix multi-range offset in memory_failure handler Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0417/1815] dax/fsdev: clear vmemmap_shift when binding static pgmap Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0418/1815] dax/fsdev: dont leave a dangling dev_dax->pgmap on probe failure Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0419/1815] dax/fsdev: clear pgmap ops and owner on unbind Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0420/1815] dax/fsdev: use __va(phys) for kaddr in direct_access Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0421/1815] dax/fsdev: fail probe on invalid pgmap offset Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0422/1815] dax: read holder_ops once in dax_holder_notify_failure() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0423/1815] dax: fix holder_ops race in fs_put_dax() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0424/1815] cpufreq: spear: Fix an IS_ERR() vs NULL bug in spear1340_set_cpu_rate() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0425/1815] PCI: xgene: Drop unnecessary OF node reference Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0426/1815] PCI: keystone: Fix OF node reference leak in init Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0427/1815] irqchip/renesas-irqc: Fix generic interrupt chip leak on remove Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0428/1815] media: ti: vpe: Select V4L2_FWNODE for VIP Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0429/1815] media: i2c: rdacm21: Fix missing media_entity_cleanup() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0430/1815] media: platform: amd: fix unmet dependency for VIDEO_V4L2_SUBDEV_API Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0431/1815] media: bcm2835-unicam: Fix asc leaked in error/remove path Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0432/1815] media: ipu6: Do not free aux device pdata after init Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0433/1815] OPP: Fix cleanup ordering Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0434/1815] drm/amd/display: Fix DM I2C teardown race Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0435/1815] drm/amd/display: Remove unused-but-set variable hubp from Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0436/1815] drm/amd/display: fix wrong register field in dccg35_set_hdmistreamclk_src_new Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0437/1815] drm/amd/display: remove duplicate link_dp_panel_replay.h include Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0438/1815] cpufreq: intel_pstate: Fix setting minimum P-state at init time Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0439/1815] cpufreq: schedutil: Fix self-contradictory comment in sugov_iowait_apply() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0440/1815] remoteproc: qcom_q6v5_mss: Make ssctl_id configurable per platform Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0441/1815] remoteproc: qcom_q6v5_mss: Fix MDM9607 subsystem control instance ID Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0442/1815] remoteproc: qcom: Fix glink->node reference leak in qcom_add_glink_subdev Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0443/1815] perf: evsel: Fix error handling in tp_format lookup Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0444/1815] drm/bridge: tc358767: clamp the reported AUX read size to the request Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0445/1815] x86/mm/pat: Take cpa_lock around large-page collapse Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0446/1815] arm64: dts: qcom: msm8996-xiaomi-gemini: Fix up ti,drv2604 enable GPIO Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0447/1815] arm64: dts: qcom: sc8280xp-x13s: Fix the drive-strength of mclk pin Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0448/1815] arm64: dts: qcom: eliza: Enable first QUPv3 wrapper by default Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0449/1815] arm64: dts: qcom: glymur-crd: merge duplicate &pmh0101_gpios node extensions Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0450/1815] arm64: dts: qcom: ipq5018: Correct CMN PLL reference clock rate Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0451/1815] arm64: qcom: ipq5018: Add GEPHY RX and TX clocks Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0452/1815] arm64: dts: qcom: sm8250: sort out Iris power domains Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0453/1815] arm64: dts: qcom: sm8250: correct frequencies in the Iris OPP table Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0454/1815] arm64: dts: qcom: milos: Add reset for sdhc_2 Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0455/1815] perf sched: Add missing perf_session__delete() Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0456/1815] perf sched: Fix memory leaks in perf sched stats report Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0457/1815] perf sched: Free subcommand string after perf sched stats Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0458/1815] perf jevents: Add more components to the metric sorting order Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0459/1815] clk: qcom: gcc-glymur: Enable runtime PM Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0460/1815] soc: renesas: r8a78000: Drop duplicate "default ARCH_RENESAS" Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0461/1815] drm/solomon: remove unneeded variables in blit functions Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0462/1815] spi: geni-qcom: Fix sticky ret causing wrong return value on invalid proto Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0463/1815] perf stat: Fix duplicate output with --for-each-cgroup Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0464/1815] wifi: iwlwifi: fix counter type in iwl_fwrt_dump_error_logs Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0465/1815] wifi: iwlwifi: mvm: fix off-by-one in TXF key sanitiser Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0466/1815] wifi: iwlwifi: mei: check SAP message length before reading it Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0467/1815] wifi: iwlwifi: guard against division by zero in iwl_dbg_tlv_alloc_fragments Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0468/1815] wifi: iwlwifi: mei: pass correct argument to function Greg Kroah-Hartman
2026-09-12 6:36 ` [PATCH 7.2 0469/1815] gpu: host1x: Avoid double device_add when clients already present Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0470/1815] gpu: host1x: Fix offset calculation in trace_write_gather Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0471/1815] gpu: host1x: Avoid stack over-read in debug output helpers Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0472/1815] drm/msm/adreno: fix use after free on error path in a6xx_gpu_init() Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0473/1815] drm/msm/a6xx: Fix stale rpmh votes after suspend Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0474/1815] drm/msm: Recover HW before retire hung submit Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0475/1815] drm/msm/a6xx: Fix A663 GPUCC register list for state capture Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0476/1815] drm/msm/a6xx: Fix A621 " Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0477/1815] drm/msm/a6xx: Fix IRQ storm during msm_recovery test Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0478/1815] drm/msm: Fix task_struct reference leak in recover_worker Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0479/1815] drm/msm: Only fini scheduler after successful init Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0480/1815] bpf: Sync tail_call_reachable with callee state on entry Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0481/1815] scsi: ufs: core: Avoid possible memory reclaim deadlock in TX EQTR context Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0482/1815] wifi: rtw89: fw: use MAC source for IO offload delay command Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0483/1815] crypto: sl3516 - drop invalid sg_dma_len checks before DMA mapping Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0484/1815] crypto: aspeed - Propagate platform_get_irq() errors Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0485/1815] ACPI: processor: idle: Expand _LPI package sanity checks Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0486/1815] usb: gadget: f_uac1_legacy: remove broken string configfs attributes Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0487/1815] tty: hvc: restrict HVC_DCC to ARMv6+ and ARM64 Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0488/1815] UDF symlink pathComponent header OOB read Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0489/1815] staging: rtl8723bs: fix xmit_frame/xmit_buf leaks on mgnt-frame error paths Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0490/1815] tlclk: if sscanf() fails, fall back to 0, not random value Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0491/1815] gpib: Move stuck SRQ update under lock Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0492/1815] gpib: use static inline instead of extern inline Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0493/1815] uio: Fix stale info pointer in failed registration path Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0494/1815] accessibility: speakup: Fix incorrect string length computation in report_char_chartab_status() Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0495/1815] speakup: keyhelp: guard letter_offsets possible out-of-range indexing Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0496/1815] mei: lb: fix incorrect type in assignment Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0497/1815] misc: pch_phub: Complete enum usage for device identification Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0498/1815] misc: bcm-vk: Use acquire/release for msgq_inited Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0499/1815] misc: rtsx: add missing write register handling Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0500/1815] misc: ad525x_dpot: use driver core groups for sysfs files Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0501/1815] misc: lan966x_pci: depopulate children on populate failure Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0502/1815] cacheinfo: dont propagate DT/ACPI error when arch supplies info (arm64) Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0503/1815] ppdev: prevent overflow when setting port timeout Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0504/1815] ipack: ipoctal: fix UAF, null-ptr-deref, and use-after-free in cleanup on remove Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0505/1815] char: xilinx_hwicap: unregister class on init errors Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0506/1815] vfio: selftests: Avoid VLAs Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0507/1815] vfio/pci: clear vdev->msi_perm after freeing it on init failure Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0508/1815] soc: ti: knav_qmss: Remove debugfs file on teardown Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0509/1815] mtd: intel-dg: Fix runtime PM error path in probe Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0510/1815] mtd: mtdswap: Avoid freeing registered blktrans device twice Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0511/1815] mtd: part: reject MTDPART_OFS_RETAIN in mtd_add_partition() Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0512/1815] perf ui hists: Fix uninitialized stack memory free on pstack allocation failure Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0513/1815] perf build: Fix compiler errors with old capstone Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0514/1815] drm/v3d: Drop unused drm_encoder.h include from v3d_drv.h Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0515/1815] drm/v3d: Extract v3d_job_add_syncobjs() helper Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0516/1815] drm/v3d: Migrate BO reservation locking to DRM exec Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0517/1815] drm/v3d: Introduce struct v3d_submit and convert CL/TFU/CSD ioctls Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0518/1815] drm/v3d: Make v3d_get_cpu_indirect_csd_params() a pure parser Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0519/1815] drm/v3d: Convert submit helpers to operate on struct v3d_submit Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0520/1815] drm/v3d: Associate BOs with every job that accesses them Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0521/1815] drivers: base: Remove statistics group if encryption group not created Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0522/1815] software node: Fix software_node_get_reference_args() with index -1 Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0523/1815] driver core: soc: Unregister bus on early device registration failure Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0524/1815] drm/msm/a6xx: Fix RBBM_CLOCK_CNTL3_TP0 value in a730_hwcg Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0525/1815] arm64: dts: qcom: glymur: Add CX power domain to GCC Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0526/1815] bpf: Reject arena frees below the arena base Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0527/1815] bpf: Disallow interpreter fallback for arena-related insns Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0528/1815] bpf: Disallow interpreter fallback for gotox insn Greg Kroah-Hartman
2026-09-12 6:37 ` [PATCH 7.2 0529/1815] bpf: Disallow interpreter fallback for BPF_ADDR_PERCPU insn Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0530/1815] dmaengine: dw-edma: Terminate all descriptors without callbacks Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0531/1815] dmaengine: dw-edma: Serialize abort state updates Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0532/1815] dmaengine: dw-edma: Serialize channel state checks Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0533/1815] dmaengine: dw-edma: Clear stale requests on termination Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0534/1815] ASoC: meson: Keep link pointers valid on realloc failure Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0535/1815] iio: dac: ad5686: missing NULL check on match data Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0536/1815] phy: starfive: Fix runtime PM cleanup in JH7110 DPHY TX probe Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0537/1815] phy: starfive: Fix runtime PM cleanup in JH7110 DPHY RX probe Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0538/1815] arm64: dts: amlogic: meson-axg: Add missing nand_rb0 pin to nand_all_pins Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0539/1815] arm64: dts: amlogic: meson-axg-s400: enable mipi_pcie_analog_dphy for PCIe Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0540/1815] RDMA/hfi1: Propagate sdma_txinit_ahg() errors Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0541/1815] RDMA/rxe: Validate num_sge/cur_sge before indexing wqe->dma.sge[] Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0542/1815] RDMA/core: Add ib_no_udata_io() helper Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0543/1815] RDMA/bnxt_re: Validate udata before executing commands Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0544/1815] RDMA/srpt: Fix srpt_alloc_rw_ctxs() unwind counters Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0545/1815] kcsan: avoid unintended access checking in NMIs Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0546/1815] arm64: dts: imx8-ss-audio: Fix LPCG clock indices for ASRC0 Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0547/1815] x86/bugs: Dont use cpu-type matching in cpu_vuln_blacklist Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0548/1815] selftests/bpf: Check malloc result with ASSERT_NEQ in test_loader Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0549/1815] selftests/bpf: Check malloc result with ASSERT_NEQ in test_sha256 Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0550/1815] selftests/bpf: Silence array bounds warning in global_map_resize Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0551/1815] selftests/bpf: Silence maybe-uninitialized compiler warning in libarena Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0552/1815] rust: device: make lifetime on `Core` and `CoreInternal` invariant Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0553/1815] samples: rust: debugfs: fix excessive stack use Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0554/1815] irqchip/gic-v3-its: Prevent leak in its_vpe_irq_domain_alloc() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0555/1815] RDMA/nldev: validate dynamic counter attribute length Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0556/1815] ACPI: EC: Avoid _REG disconnect on GPIO IRQ defer Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0557/1815] ACPI: processor: validate MADT IOAPIC entry bounds Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0558/1815] ACPI: PCI: Clear driver_data on all paths that free the acpi_pci_root Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0559/1815] ext4: fix circular lock dependency in ext4_ext_migrate Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0560/1815] ext4: fix out-of-bounds read in ext4_read_inline_dir() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0561/1815] ext4: skip extra isize expansion during mount to prevent deadlock Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0562/1815] platform/x86: acer-wmi: reject missing gaming WMI results Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0563/1815] bpf: Zero queue and stack outputs on lock failure Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0564/1815] selftests/bpf: Fix make install target Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0565/1815] selftests/bpf: Fix lsm_bdev dev_t encoding mismatch Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0566/1815] libbpf: Search /lib64 and /lib in resolve_full_path() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0567/1815] riscv, bpf: Fix memory leak in bpf_jit_free Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0568/1815] riscv, bpf: Fix kernel stack corruption in tailcall with CFI Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0569/1815] bpf, riscv: Fix extable handling for arena load_acquire Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0570/1815] ACPI: battery: Adjust charging status validation check Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0571/1815] virt: arm-cca-guest: use migrate_disable() for attestation token requests Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0572/1815] bpf: Fix offset warn check for bpf_res_spin_lock Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0573/1815] bpf: Preserve unique-field state across nested structs Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0574/1815] bpf: Mark bpf_refcount field as unique Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0575/1815] RDMA/srpt: Pass the mapped task attribute to target_init_cmd() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0576/1815] PCI: j721e: Fix incorrect max_lanes for J7200 Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0577/1815] RDMA/erdma: Fix CEQ tasklet use-after-free on removal Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0578/1815] RDMA/mana_ib: drain QP references after partial table insertion Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0579/1815] RDMA/core: Add rdma_restrack_begin/abort/commit_del() operations Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0580/1815] RDMA/core: Fix use after free in ib_query_qp() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0581/1815] RDMA/core: Fix potential use after free in ib_destroy_cq_user() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0582/1815] RDMA/core: Fix potential use after free in ib_destroy_srq_user() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0583/1815] RDMA/core: Fix potential use after free in counter_release() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0584/1815] RDMA/core: Fix potential use after free in ib_free_cq() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0585/1815] RDMA/core: Fix potential use after free in uverbs_free_dmah() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0586/1815] RDMA/core: Fix potential use after free in ib_dealloc_pd_user() Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0587/1815] firmware: arm_scmi: Fix requested device removal race Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0588/1815] iommu/amd: Fix undefined behavior in devid_write debugfs function Greg Kroah-Hartman
2026-09-12 6:38 ` [PATCH 7.2 0589/1815] iommu/qcom: Remove sysfs device on probe failure path Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0590/1815] iommu/qcom: Fix inverted fault report check in qcom_iommu_fault() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0591/1815] iommu/arm-smmu-v3: Declare eats_s1chk and eats_trans as host-endian u64 Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0592/1815] thermal: intel: int3400: clean up ODVP on probe failures Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0593/1815] ext4: fix ABBA deadlock in ext4_xattr_inode_cache_find() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0594/1815] ext4: clear stale xarray tags on folios skipped during writeback Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0595/1815] ext4: drain in-flight DIO before buffered write fallback Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0596/1815] ext4: use fsdata to track inline data write state and fix race Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0597/1815] ext4: validate readdir offset before accessing dirent Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0598/1815] wifi: ath12k: Advertise multicast Ethernet encapsulation offload support Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0599/1815] wifi: ath12k: Set IEEE80211_OFFLOAD_ENCAP_4ADDR after tx_encap_type vdev param Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0600/1815] wifi: ath12k: advertise ieee_link_id in vdev start MLO params Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0601/1815] wifi: ath12k: fix ML-STA authentication timeout on QCC2072 Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0602/1815] wifi: ath6kl: avoid buffer overreads in WMI event handlers Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0603/1815] wifi: ath12k: switch to name-based reserved memory lookup Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0604/1815] wifi: ath12k: refactor QMI memory assignment Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0605/1815] wifi: ath12k: allocate HOST_DDR and BDF regions after Q6 RO region Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0606/1815] wifi: ath12k: Correctly copy the hint BSSID in WMI scan request Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0607/1815] wifi: ath11k: " Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0608/1815] wifi: ath12k: fix survey indexing across bands Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0609/1815] wifi: ath12k: Avoid buffer overread in ath12k_wmi_op_rx() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0610/1815] wifi: ath11k: Avoid buffer overread in ath11k_wmi_tlv_op_rx() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0611/1815] RDMA/bnxt_re: Clear VM_MAYWRITE on DBR/toggle page mmap Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0612/1815] ext4: fix buffer_head leak in ext4_init_orphan_info Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0613/1815] ext4: check dir entry fits before reading the hash trailer in ext4_search_dir() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0614/1815] ext4: skip tail block zeroing for inline data files Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0615/1815] ARM: dts: allwinner: a10: Fix PMU interrupt Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0616/1815] cpufreq: amd-pstate-ut: Skip tests when amd-pstate driver is not active Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0617/1815] cpufreq/amd-pstate: Fix EPP return type and handle errors during initialization Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0618/1815] cpufreq/amd-pstate: Toggle auto_sel in active mode on shared memory systems Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0619/1815] cpufreq/amd-pstate: handle missing policy in dynamic EPP callbacks Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0620/1815] firmware: arm_scmi: Roll back partial protocol table registration Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0621/1815] firmware: arm_scmi: Unrequest devices if driver registration fails Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0622/1815] bitmap: Properly initialise destination bitmap for scatter & gather test Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0623/1815] riscv: dts: spacemit: set console baud rate on K3 Pico-ITX board Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0624/1815] riscv: dts: spacemit: k1: Split gmac_clk_ref into independent pinctrl groups Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0625/1815] riscv: dts: thead: th1520: remove pclk for I2C1 Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0626/1815] gpu: nova-core: correct RISC-V HALTED field Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0627/1815] perf cs-etm: Flush thread stacks after decoder reset Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0628/1815] perf cs-etm: Avoid truncating AUX buffer sizes to int Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0629/1815] xfrm: Fix skb double-free in xfrm_dev_direct_output() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0630/1815] RDMA/erdma: complete object teardown when the destroy command fails Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0631/1815] PM: hibernate: Fix memory leak in snapshot_write_next() error path Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0632/1815] leds: pca9532: Fix phantom device registration on missing hardware Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0633/1815] clk: sunxi-ng: mux: fix determine helper rate propagation Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0634/1815] ASoC: spacemit: rename clock inputs to match binding Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0635/1815] perf cap: Remove used_root parameter and simplify capability checks Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0636/1815] perf trace: Correct default cpumask formatting to hexadecimal Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0637/1815] drm/tve200: add OF module alias for autoloading Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0638/1815] netfilter: nf_nat_sip: rewind offset when NAT shrinks the packet Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0639/1815] fs/ntfs3: fix out-of-bounds read of INDEX_ROOT in reparse/objid init Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0640/1815] drm/panthor: return PTR_ERR() from devm_drm_dev_alloc() Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0641/1815] exfat: fix valid_size extension over a shared writable mapping Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0642/1815] arm64: dts: rockchip: Add missing hclk for RK3588 eDP0 Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0643/1815] arm64: dts: rockchip: Add missing hclk for RK3588 eDP1 Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0644/1815] arm64: dts: rockchip: Fix Gru WLAN sideband interrupt Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0645/1815] arm64: dts: rockchip: Fix rk3566-bigtreetech-cb2 touchscreen property Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0646/1815] bpf: Fix CFI mismatch in task work callback Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0647/1815] ARM: lpc32xx: only run SoC init on LPC32xx hardware Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0648/1815] bpf: Fix WARNING in bpf_tracing_link_release Greg Kroah-Hartman
2026-09-12 6:39 ` [PATCH 7.2 0649/1815] selftests/bpf: Fix incorrect error checking for pthread_create Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0650/1815] selftests/bpf: Fix missing allocation null checks in test_progs.c Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0651/1815] selftests/bpf: Fix memory leak on subtest_states reallocation Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0652/1815] pinctrl: fix unmet dependencies from missing GPIOLIB Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0653/1815] cxl/region: Fix use-after-free in find_pos_and_ways() error path Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0654/1815] power: reset: reboot-mode: Remove devres based allocations Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0655/1815] riscv: dts: spacemit: improve RTL8211F PHY configuration on K3 Pico-ITX board Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0656/1815] riscv: dts: spacemit: Add enough deassert time for the PHY on PICO ITX Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0657/1815] riscv: dts: spacemit: Add enough deassert time for the PHY on com260 board Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0658/1815] liveupdate: reject nonzero reserved value for SESSION_FINISH Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0659/1815] liveupdate: Reference count outgoing FLB data Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0660/1815] liveupdate: Remember FLB retrieve() status Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0661/1815] pinctrl: mediatek: use devm_gpiochip_add_data() for GPIO chip Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0662/1815] pinctrl: mediatek: free EINT resources on unbind Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0663/1815] tools/build: Allow versioning of all LLVM tools defined in Makefile.include Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0664/1815] riscv: dts: spacemit: Fix phy id check for the phy on pico-itx board Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0665/1815] riscv: dts: spacemit: Fix phy id check for the phy on com260 board Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0666/1815] arm64: RSI: fix field-spanning write warning in attestation token init Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0667/1815] power: supply: sbs-battery: Use a per-device serial number buffer Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0668/1815] scsi: ufs: core: Validate string descriptors Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0669/1815] scsi: ufs: Avoid NULL CQE dereference when reporting invalid tags Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0670/1815] scsi: ufs: core: Validate connected lane counts Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0671/1815] scsi: ufs: rpmb: Validate request frame length before parsing Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0672/1815] scsi: ufs: debugfs: Reserve space for a string terminator Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0673/1815] crypto: keembay - Initialize completion before requesting IRQ Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0674/1815] crypto: keembay - publish OF module alias for OCS AES/SM4 Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0675/1815] RDMA/mlx5: Fix integer overflow of user QP buffer size Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0676/1815] ACPI: bus: Avoid confusing complaints regarding missing _OSC features Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0677/1815] thermal/drivers/airoha: Fix copy paste error on clamp_t low temp Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0678/1815] thermal/drivers/airoha: Fix copy paste error for sen internal Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0679/1815] thermal/drivers/qcom-spmi-adc-tm5: Drop IIO_VAL_INT check in adc_tm5_get_temp Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0680/1815] powercap: intel_rapl_tpmi: Handle PMU registration failure during probe Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0681/1815] isofs: release zisofs block pointer buffer head Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0682/1815] PCI/pwrctrl: tc9563: Fix parsing the integrated Ethernet MAC Endpoint node Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0683/1815] PCI/pwrctrl: tc9563: Power off only the external ports in tc9563_pwrctrl_disable_port() Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0684/1815] clk: mediatek: mt6735: Unregister PLLs on probe failure Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0685/1815] spi: oc-tiny: switch to managed controller allocation Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0686/1815] w1: ds2482: Fix signedness bug in ds2482_w1_triplet() Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0687/1815] sched_ext: Fix exit_cpu accuracy for lockup paths Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0688/1815] sched_ext: Abort directly from the hardlockup handler Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0689/1815] gpu: nova-core: build SetRegistry entries dynamically Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0690/1815] gpu: nova-core: fix packed registry table size Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0691/1815] perf ui hists: In report UI ensure thread is set with reference counting Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0692/1815] perf annotate: Be robust to annotating without a thread Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0693/1815] cpufreq/amd-pstate: Set min_limit_freq based on bios_min_perf Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0694/1815] remoteproc: Allow shutdown of crashed processors Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0695/1815] remoteproc: core: Attach rproc asynchronously in rproc_add() path via schedule_work() Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0696/1815] remoteproc: Prevent crash handling to race with rproc_del() Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0697/1815] remoteproc: qcom: pas: Add late attach support for subsystems Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0698/1815] remoteproc: qcom: q6v5: Request shutdown if crash is triggered host-side Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0699/1815] arm64: dts: qcom: glymur: fix SoCCP memory mappings Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0700/1815] staging: rtl8723bs: use kfree_sensitive() for key material Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0701/1815] fs/ntfs3: reject restart table growth beyond U16_MAX entries Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0702/1815] iommu/tegra241-cmdqv: Publish an LVCMDQ only after it is fully initialized Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0703/1815] iommu/tegra241-cmdqv: Synchronize the error ISR against VINTF (de)init Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0704/1815] iommu/tegra241-cmdqv: Dont run the error ISR before probe sets up vintfs Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0705/1815] iommu/tegra241-cmdqv: Dont fall back to a freed smmu after devm_krealloc() Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0706/1815] iommu/tegra241-cmdqv: Free the error IRQ before tearing down VINTFs Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0707/1815] iommu/tegra241-cmdqv: Require exactly one Stream ID for a vSID Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0708/1815] iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path Greg Kroah-Hartman
2026-09-12 6:40 ` [PATCH 7.2 0709/1815] RDMA/rxe: Fix UAF in ODP init error-handling path Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0710/1815] RDMA/efa: Fix PBL chunk length computation Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0711/1815] media: stm32: dcmi: fix error handling on MDMA pool alloc failure Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0712/1815] wifi: mac80211: fix per-STA profile length in cross-link CSA parsing Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0713/1815] arm64: dts: allwinner: sun50i-a64-pinephone: Fix mpu6050 mount matrix Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0714/1815] clk: tegra: tegra124-emc: put EMC node on register failure Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0715/1815] clk: mediatek: pllfh: Fix IO remapping leak in register_pllfhs error path Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0716/1815] clk: eswin: Zero-initialize stack-allocated clk_init_data Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0717/1815] clk: palmas: Manage external-control prepare with devm Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0718/1815] clk/x86: pmc_atom: add kasprintf return value check Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0719/1815] clk: mediatek: mt8135: Fix inverted gate control for devapc_ck Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0720/1815] PCI: Make pci_match_one_device() match on ID instead of device Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0721/1815] PCI: Fix dyn_id add TOCTOU Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0722/1815] PCI: Fix UAF when probe runs concurrent to dyn ID removal Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0723/1815] clk: rockchip: Fix the fractional part denominator on RK3588/RK3576 PLLs Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0724/1815] clk: rockchip: Fractional PLL coefficient on RK3588/RK3576 is twos complement Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0725/1815] nilfs2: fix infinite loop in nilfs_clean_segments() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0726/1815] nilfs2: prevent out-of-bounds read in super root block parsing Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0727/1815] nilfs2: fix BUG in nilfs_copy_dirty_pages() on dirty state mismatch Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0728/1815] scsi: smartpqi: Fix AIO retry marker cleared by SCSI core between dispatches Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0729/1815] clk: spacemit: k3: fix missing /2 factor in i2s sysclk dividers Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0730/1815] riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 pico-itx board Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0731/1815] riscv: dts: spacemit: Make dtschema recognize the etherent PHY correctly on K3 com260 board Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0732/1815] RDMA/cxgb4: Fix dereg_skb leak and double free in write_tpt_entry() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0733/1815] RDMA/mlx5: Fix stack out-of-bounds read in cc_params debugfs Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0734/1815] RDMA/mlx5: Send cong param changes to the resolved port mdev Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0735/1815] RDMA/cxgb4: free STAG index when TPT entry write fails Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0736/1815] media: staging/ipu7: fix async notifier leak on init error Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0737/1815] IB/isert: reject PDUs declaring more data than was received Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0738/1815] IB/isert: reject login " Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0739/1815] nvmet: fix return status of RMI log page on allocation failure Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0740/1815] nvme-fc: unmap cmd_iu DMA on rsp_iu mapping failure in init_request Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0741/1815] nvme-pci: return error when parsing a quirk string fails Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0742/1815] nvmet: reject out-of-range mdts values in configfs store Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0743/1815] spi: davinci: switch to managed controller allocation Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0744/1815] drm/panthor: Add vm_bind region with kbo range overlap check Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0745/1815] wifi: ath12k: fix overreads in ath12k_wmi_process_csa_switch_count_event() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0746/1815] wifi: ath11k: fix overreads in ath11k_wmi_process_csa_switch_count_event() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0747/1815] wifi: ath12k: validate TLV length in process_tpc_stats() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0748/1815] PCI: starfive: Fix Runtime PM handling and teardown ordering Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0749/1815] PCI: starfive: Fix unchecked pm_runtime_get_sync() in probe Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0750/1815] drm/msm: remove objects from evit list after pinning them Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0751/1815] media: qcom: iris: Fix bitmask test in iris_allow_cmd() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0752/1815] media: qcom: iris: Remove duplicate HFI_PROP_OPB_ENABLE entry Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0753/1815] media: qcom: iris: handle runtime PM resume failure in core deinit Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0754/1815] media: stm32: dcmi: fix some error handling bugs in probe() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0755/1815] s390/vdso: Pass --eh-frame-hdr to the linker Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0756/1815] regulator: tps65185: handle gpiod_get_value_cansleep() error returns Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0757/1815] platform/chrome: cros_ec_debugfs: Clean up console log on probe failure Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0758/1815] platform/chrome: cros_ec_debugfs: Unregister panic notifier Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0759/1815] wifi: rtlwifi: pci: fix error path in rtl_pci_probe() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0760/1815] bus: mhi: host: Flush the posted write after writing to MHI_SOC_RESET_REQ_OFFSET Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0761/1815] bus: mhi: host: Fix controller cleanup on EDL sysfs failure Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0762/1815] md/raid5: protect bitmap batch counters aka seq_flush/seq_write consistency Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0763/1815] md/raid5-ppl: fix use-after-free in ppl_do_flush() Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0764/1815] md/raid5: fix lockless max_nr_stripes reads Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0765/1815] net: airoha: fix ETS QoS stats counter underflow and cross-channel corruption Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0766/1815] md/raid5: protect lockless recovery_offset accesses during reshape Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0767/1815] fanotify: stop permission watchdog when timeout is zero Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0768/1815] tools/nolibc/powerpc: mark ctr and xer as clobbered by system call Greg Kroah-Hartman
2026-09-12 6:41 ` [PATCH 7.2 0769/1815] md: remove REQ_NOWAIT support from raid1/10/456 Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0770/1815] md: recheck spare changes before starting sync Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0771/1815] selftests/zram: fix kernel_gte() for POSIX sh Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0772/1815] Revert "serial: 8250: Clear CON_PRINTBUFFER on port re-registration" Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0773/1815] wifi: ath12k: fix stride mismatch in mac_phy_caps_parse() Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0774/1815] wifi: ath11k: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0775/1815] md/raid1: restrict atomic write limits and handle runtime constraints Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0776/1815] md/raid10: consistently fail atomic writes that require splitting Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0777/1815] PCI: dwc: ep: Clear MSI iATU mapping in dw_pcie_ep_cleanup() Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0778/1815] rcu: Mark accesses to ->rcu_urgent_qs and ->rcu_need_heavy_qs Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0779/1815] arm64: dts: qcom: msm8998: Dont pull-up I2C pins by default in sleep Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0780/1815] arm64: dts: qcom: msm8976-longcheer-l9360: Fix accidental node override Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0781/1815] arm64: dts: qcom: sdm632-motorola-ocean: Fix LED default trigger property Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0782/1815] arm64: dts: qcom: qcs404: Fix DTBS Check errors in usb controller nodes Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0783/1815] clk: qcom: gcc-qcm2290: dont park QUP RCGs upon registration Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0784/1815] soc: qcom: pmic_glink_altmode: Define the TBT extradata properly Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0785/1815] arm64: dts: qcom: glymur-crd: Add FocalTech ft3d81 touchscreen support Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0786/1815] arm64: dts: qcom: sc8280xp-crd: Fix the pin index for misc_3p3_reg_en Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0787/1815] firmware: qcom: scm: add trace events for the SMC call interface Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0788/1815] firmware: qcom: scm: instrument SMC call path with tracepoints Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0789/1815] firmware: qcom: scm: Fix NULL dereference in IRQ handler before __scm is published Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0790/1815] firmware: qcom: scm: Fix reserved memory cleanup on probe failure Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0791/1815] firmware: qcom: scm: Fix tzmem state on probe retry Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0792/1815] block: fix dio leak on metadata mapping error Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0793/1815] arm64: dts: qcom: glymur: Fix PDC IRQ mapping Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0794/1815] arm64: dts: qcom: talos: Fix cpu6 1094.4MHz OPP frequency typo Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0795/1815] arm64: dts: qcom: sm8250-xiaomi-elish: correct the board ID Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0796/1815] arm64: dts: qcom: kaanapali: Fix the PCIe iommu-map entries Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0797/1815] arm64: dts: qcom: kodiak: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0798/1815] arm64: dts: qcom: sar2130p: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0799/1815] arm64: dts: qcom: sc8180x: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0800/1815] arm64: dts: qcom: sdm845: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0801/1815] arm64: dts: qcom: sm8150: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0802/1815] arm64: dts: qcom: sm8250: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0803/1815] arm64: dts: qcom: sm8350: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0804/1815] arm64: dts: qcom: sm8450: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0805/1815] arm64: dts: qcom: sm8550: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0806/1815] arm64: dts: qcom: sm8650: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0807/1815] arm64: dts: qcom: sm8750: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0808/1815] arm64: dts: qcom: talos: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0809/1815] arm64: dts: qcom: lemans: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0810/1815] arm64: dts: qcom: monaco: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0811/1815] arm64: dts: qcom: monaco-monza-som: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0812/1815] arm64: dts: qcom: monaco-evk-ifp-mezzanine: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0813/1815] arm64: dts: qcom: lemans-evk-ifp-mezzanine: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0814/1815] arm64: dts: qcom: qcs6490-radxa-dragon-q6a: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0815/1815] arm64: dts: qcom: qcs6490-thundercomm-minipc-g1iot: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0816/1815] arm64: dts: qcom: qcs6490-rb3gen2: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0817/1815] arm64: dts: qcom: qcs6490-rb3gen2-industrial-mezzanine: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0818/1815] power: supply: isp1704_charger: cancel work on remove Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0819/1815] power: supply: sc2731_charger: " Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0820/1815] bpf: Fix potential UAF in bpf_netns_link_update_prog Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0821/1815] bpf: Fix potential UAF when reading bpf link info Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0822/1815] platform/chrome: lightbar: Limit payload to max packet size Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0823/1815] lib/test_hmm: fail dmirror_fault() when the mirrored mm is gone Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0824/1815] arm64: dts: qcom: eliza: Add fallback compatible for ADSP remoteproc Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0825/1815] clk: qcom: nord: use BRANCH_HALT_SKIP for PHY pipe clocks Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0826/1815] clk: qcom: negcc-nord: use clk_regmap_phy_mux for USB3 pipe clock srcs Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0827/1815] clk: qcom: gcc-nord: mark PCIe link clocks as critical Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0828/1815] clk: qcom: negcc-nord: keep GPU2 CFG clock enabled via critical CBCR Greg Kroah-Hartman
2026-09-12 6:42 ` [PATCH 7.2 0829/1815] clk: qcom: dispcc-qcm2290: Move to the latest common qcom_cc_probe() model Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0830/1815] clk: qcom: dispcc-qcm2290: Enable runtime PM support Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0831/1815] clk: qcom: qcm2290: Set POLL_CFG_GDSCR flag for DISPCC and GPUCC GDSCs Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0832/1815] clk: qcom: qcm2290: Add RETAIN_FF_ENABLE " Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0833/1815] clk: qcom: qcm2290: Update DISPCC and GPUCC GDSC *wait_val values Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0834/1815] clk: qcom: gpucc-qcm2290: Drop pm_clk handling Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0835/1815] clk: qcom: gpucc-qcm2290: Move to the latest common qcom_cc_probe() model Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0836/1815] clk: qcom: gpucc-qcm2290: Keep the critical clocks always-on from probe Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0837/1815] clk: qcom: gpucc-qcm2290: Park RCGs clk source at XO during disable Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0838/1815] clk: qcom: Return expected ENOMEM error on dynamic allocation failure Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0839/1815] md/bitmap: resume array on backlog_store() error path Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0840/1815] md: scope memalloc_noio to allocation critical sections Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0841/1815] iommu/dma: Check atomic pool allocation result directly Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0842/1815] swiotlb: Preserve allocation virtual address for dynamic pools Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0843/1815] i3c: dw: avoid shift-out-of-bounds when DAA assigns no devices Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0844/1815] i3c: master: adi: add OF module alias for autoloading Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0845/1815] fs: annotate inode timestamp accessors Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0846/1815] md/raid1: create serial pool adding rdev to array with serialize_policy=1 Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0847/1815] pinctrl: qcom: shikra: Fix intr_target_width for summary interrupt routing Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0848/1815] locking/lockdep: Fix NULL pointer dereference in __lock_set_class() Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0849/1815] dcache: keep shrink_dcache_for_umount() making progress on busy roots Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0850/1815] iomap: release the folio batch on iomap callback failures Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0851/1815] dma-resv: Fix undefined symbol when CONFIG_DMA_SHARED_BUFFER is disabled Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0852/1815] powerpc: implement get_direction() in cpm2 Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0853/1815] powerpc/44x: Set GPIO chip parent Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0854/1815] powerpc/crash: Fix possible memory leak in update_crash_elfcorehdr() Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0855/1815] misc: vmc_vmci: Fix potential memory leak in vmci_event_subscribe() Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0856/1815] misc: sgi-gru: remove interrupt-context page-table walks Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0857/1815] fanotify: report full event length for FIONREAD Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0858/1815] wifi: mt76: connac: add MT7991A (0x7991) to is_mt7996() Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0859/1815] wifi: mt76: mt76x02: do not WARN on invalid rx descriptor length Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0860/1815] wifi: mt76: fix handling channel context with different bands in mt76_switch_vif_chanctx() Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0861/1815] wifi: mt76: mt792x: stop USB register access after bus hang Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0862/1815] wifi: mt76: mt7921: validate CLC firmware records Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0863/1815] wifi: mt76: mt7915: fix net_fill_forward_path for non-DBDC mt7986 Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0864/1815] wifi: mt76: connac: add NAN connection type Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0865/1815] wifi: mt76: mt7925: add NAN MCU helpers Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0866/1815] wifi: mt76: add init_wiphy callback Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0867/1815] wifi: mt76: mt792x: fix use-after-free in mt76_rx_poll_complete Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0868/1815] wifi: mt76: mt7921: Add PCIe AER handler support to prevent system crash Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0869/1815] wifi: mt76: mt7927: set band index for sniffer mode Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0870/1815] wifi: mt76: mt7925: update clc before setting sar power table Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0871/1815] wifi: mt76: mt7925: fix msg len mismatch between driver and firmware Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0872/1815] wifi: mt76: mt792x: Fix memory leak in SDIO TX path Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0873/1815] wifi: mt76: mt7996: fix EAPOL source BSS for non-MLD stations Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0874/1815] wifi: mt76: mt7996: fix non-MLD station num_sta leak Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0875/1815] wifi: mt76: mt7996: fix capability of EHT-MCS 15 in MRU Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0876/1815] wifi: mt76: fix RX data queuing of RRO 3.0 Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0877/1815] wifi: mt76: mt7996: fix MLD ID in MAC TXD and HIF TXP Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0878/1815] wifi: mt76: fix non-AQL packet accounting for MLO stations Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0879/1815] wifi: mt76: assign link_id when sending probe request during scan Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0880/1815] wifi: mt76: mt7996: validate RX band_idx before dereferencing phys[] Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0881/1815] wifi: mt76: mt7996: set MT76_MCU_RESET before waking MCU waiters on full reset Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0882/1815] wifi: mt76: mt7915: clear wcid mask under mutex after RCU pointer clear Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0883/1815] wifi: mt76: mt7915: avoid nss underflow in mt7915_mcu_get_sta_nss Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0884/1815] wifi: mt76: mt7996: dont report a zero TX bitrate Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0885/1815] wifi: mt76: mt7915: write RX header translation bit to the correct register Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0886/1815] wifi: mt76: fix 4th chain ACK RSSI bitmask in sta_poll Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0887/1815] wifi: mt76: fix stranded frames in mt76_txq_schedule_pending Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0888/1815] wifi: mt76: fix uninitialised RXDMAD_C descriptor info Greg Kroah-Hartman
2026-09-12 6:43 ` [PATCH 7.2 0889/1815] wifi: mt76: fix RXDMAD_C buffer recycling race Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0890/1815] wifi: mt76: mt7915: poll the correct SLP CTRL register for the second adie Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0891/1815] wifi: mt76: check txfree done event on the WED hw path Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0892/1815] wifi: mt76: fix HE DCM max-RU capability encoding Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0893/1815] wifi: mt76: mt7996: bound TLV walk in mt7996_mcu_get_chip_config Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0894/1815] wifi: mt76: fix out-of-bounds access in mmio copy helpers Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0895/1815] wifi: mt76: mt7915: unwind state on add_interface failure Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0896/1815] wifi: mt76: mt7996: hold dev->mt76.mutex while disabling tx worker in SER Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0897/1815] wifi: mt76: decode the full VHT Rx STBC capability field Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0898/1815] wifi: mt76: fix ER-SU 106-tone RU check in RX rate decode Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0899/1815] wifi: mt76: mt7996: reserve space for the CSA-abort countdown TLV Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0900/1815] wifi: mt76: mt7996: dont leak MLD group index on remap alloc failure Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0901/1815] wifi: mt76: cancel reset and rc work on device unregister Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0902/1815] wifi: mt76: report data NSS for STBC frames in RX rate decode Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0903/1815] wifi: mt76: mt7915: use little-endian for bss_info_ra wire fields Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0904/1815] wifi: mt76: mt7996: add missing rdd_idx check when enabling background radar Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0905/1815] wifi: mt76: only consume the WO drop bit on WED v2 devices Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0906/1815] ACPI: processor: Unregister cpufreq notifier on init failure Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0907/1815] drm/msm/dpu: Fix DMA SSPP REC block offsets on DPU v13 Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0908/1815] drm/msm: dont tear down KMS twice when KMS init fails Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0909/1815] drm/msm/dp: reject YUV420-only modes without VSC SDP support Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0910/1815] drm/msm/dp: do not reject wide-bus modes while a YUV420 mode is active Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0911/1815] perf: arm_spe: Make wakeup range check overflow safe Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0912/1815] drm/msm/dpu: Drop sneaky dev_pm_opp_set_rate(0) Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0913/1815] drm/msm/dp: Drop dev_pm_opp_set_rate(0) Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0914/1815] drm/msm/dsi: " Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0915/1815] wifi: ath11k: fix leak in ath11k_service_ready_ext_event() Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0916/1815] ASoC: codecs: tas2783-sdw: Propagate regcache_sync() errors Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0917/1815] ASoC: tas2783-sdw: drop stale regcache on uninitialized re-attach Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0918/1815] ARM: tegra: Fix OF node reference leaks in IRQ init Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0919/1815] arm64: tegra: Fix CMDQV interrupt type on Tegra264 Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0920/1815] regulator: core: use system_freezable_wq for init complete work Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0921/1815] ASoC: SDCA: Add missing stub for sdca_fdl_free_state() Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0922/1815] perf unwind-libdw: Fix unwinding of multi-threaded processes Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0923/1815] perf libdw: Fix outer-frame name resolution and spurious "(inlined)" tag Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0924/1815] perf machine: Fix fd leak on bounds check in maps__set_modules_path_dir() Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0925/1815] perf machine: Fix NULL parent dereference in fork event processing Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0926/1815] perf machine: Guard against NULL strlist in machines__findnew() Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0927/1815] perf machine: Check snprintf truncation " Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0928/1815] perf machine: Dont abort guest map creation on first inaccessible dir Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0929/1815] perf machine: Reset errno before strtol in guest kernel map creation Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0930/1815] perf machine: Free scandir entries " Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0931/1815] perf machine: Check snprintf truncation for guest kallsyms path Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0932/1815] bpf: Reject >8 byte return values on return-reading trampoline paths Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0933/1815] bpf, x86: Fix trampoline stack size for 128-bit arguments Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0934/1815] wifi: mt76: mt7915: unlink TWT flow if the MCU rejects the agreement Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0935/1815] wifi: mt76: mt7996: skip key upload when adding an offchannel link Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0936/1815] wifi: mt76: mt7996: wake MCU waiters before aborting scan in L1 SER Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0937/1815] wifi: mt76: mt7996: free vif links after clearing wcid entries on full reset Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0938/1815] wifi: mt76: mt7996: clear stale link state " Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0939/1815] wifi: mt76: set MT76_SCANNING when starting a hw scan Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0940/1815] wifi: mt76: mt7996: fix MIB TX aggregation counter registers for mt7990 Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0941/1815] wifi: mt76: mt7915: fix double hif2 init on the non-WED path Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0942/1815] wifi: mt76: mt7915: fix ext PHY use-after-free on register error path Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0943/1815] wifi: mt76: mt7915: release hif2 reference on probe IRQ failure Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0944/1815] wifi: mt76: mt7996: fix reg addr remap when addr is 0 Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0945/1815] wifi: mt76: mt7996: do not attach hif2 WED when the main WED attach failed Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0946/1815] wifi: mt76: mt7996: do not leave state behind after a failed WED attach Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0947/1815] wifi: mt76: mt7915: fix chainmask handling for non-dbdc phys on band 1 Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0948/1815] wifi: mt76: mt7915: report RX chain signal for all RX paths Greg Kroah-Hartman
2026-09-12 6:44 ` [PATCH 7.2 0949/1815] wifi: mt76: fix queue assignment for disassoc packets Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0950/1815] wifi: mt76: mt7925: Fix EHT Beamformee SS subfields to meet 802.11be minimum Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0951/1815] wifi: mt76: reject out-of-range link ids in mt76_vif_link() Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0952/1815] wifi: mt76: mt7996: fix out-of-bounds link array access in mt7996_tx() Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0953/1815] wifi: ath12k: fix encrypted EAPOL TX in encap offload mode Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0954/1815] wifi: ath10k: snoc: use memcpy_fromio() for MSA ramdump Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0955/1815] wifi: mt76: mt7996: remove beacon_int_min_gcd from ADHOC interface combinations Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0956/1815] arm64: smp: Fix IPI teardown for GICv5 flow Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0957/1815] arm_mpam: Apply T241-MPAM-6 to 63-bit counters Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0958/1815] arm64/fpsimd: ptrace: Fix inactive SVE and SSVE regsets Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0959/1815] kselftest/arm64: fp-ptrace: Fix checks for " Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0960/1815] arm64: ptrace: Keep orig_x0 in-sync with x0 on syscall entry Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0961/1815] kselftest/arm64: Dont write to P0 in irritator on SME only systems Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0962/1815] iommu/arm-smmu-v3: Convert to use atomic poll timeout Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0963/1815] perf/cxlpmu: Fix 64-bit write to 32-bit HDM filter register Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0964/1815] wifi: mac80211: send TWT teardown to peer after setup TX failure Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0965/1815] wifi: nl80211: clean up color-change beacon data on errors Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0966/1815] wifi: zd1211rw: reject secondary interfaces to prevent conflicts Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0967/1815] wifi: mac80211: skip unused probe response countdown offsets Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0968/1815] perf build: Fix a build error on 32-bit x86 Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0969/1815] wifi: brcmfmac: fix P2P action frame handling without device vif Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0970/1815] wifi: mac80211: disconnect on CSA to channel 0 Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0971/1815] wifi: cfg80211: stop PMSR before P2P and NAN teardown Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0972/1815] bpf: Fix mmap_lock deadlock on arena lock failure Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0973/1815] firmware: coreboot: Validate table bounds Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0974/1815] objtool/klp: Fix module name normalization for paths with dots Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0975/1815] objtool/klp: Normalize Module.symvers paths to module names Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0976/1815] objtool/klp: Fix false module dependencies caused by dead relocs Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0977/1815] objtool/klp: Add .klp.symid for sympos disambiguation Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0978/1815] objtool/klp: Fix symbol resolution for duplicate data symbols Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0979/1815] pinctrl: eswin: Fix Handling of PIN_CONFIG_PERSIST_STATE Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0980/1815] pinctrl: generic: free maps on pinctrl_generic_to_map() failure Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0981/1815] pinctrl: spacemit: validate pins in pinconf callbacks Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0982/1815] powerpc/xive: make xive IPI allocation NULL-safe Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0983/1815] powerpc/xive: add error return value to xive_smp_probe() Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0984/1815] powerpc/xive: propagate IPI init errors to prevent use-after-free Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0985/1815] powerpc/smp: add NULL guard for cause_ipi in smp_muxed_ipi_message_pass Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0986/1815] powerpc/syscall: Fix syscall skip handling for seccomp and ptrace Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0987/1815] powerpc64/bpf: Fix build break in bpf_jit_emit_func_call_rel() Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0988/1815] powerpc64/bpf: Fix build break for arch_bpf_timed_may_goto Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0989/1815] powerpc/irq: Fix missing r2 clobber in PCREL inline assembly Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0990/1815] soc: fsl: qe: properly scan GPIO nodes at startup Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0991/1815] soc: fsl: qe: implement get_direction() Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0992/1815] MIPS: ptrace: Fix syscall skipping via PTRACE_SYSCALL Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0993/1815] serial: amba-pl011: unprepare console clock on unregister Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0994/1815] serial: amba-pl011: keep console clock enabled for atomic writes Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0995/1815] serial: core: do fallible allocations before the console can be registered Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0996/1815] serial: core: clear freed pointers on uart_register_driver() failure Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0997/1815] tty: skip cdev_del() when no cdev is registered Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0998/1815] tty: clear cdev pointer after cdev_add() failure Greg Kroah-Hartman
2026-09-12 6:45 ` [PATCH 7.2 0999/1815] dm-integrity: replace forgeable discard filler with a keyed sector marker Greg Kroah-Hartman
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=20260912065652.069942258@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alice.mei.rogers@gmail.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=leo.yan@linux.dev \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=patches@lists.linux.dev \
--cc=peterz@infradead.org \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tmricht@linux.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox