perf/core: Remove perf_event::group_entry
Now that all the grouping is done with RB trees, we no longer need group_entry and can replace the whole thing with sibling_list. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexey Budankov <alexey.budankov@linux.intel.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: David Carrillo-Cisneros <davidcc@google.com> Cc: Dmitri Prokhorov <Dmitry.Prohorov@intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Kan Liang <kan.liang@intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Valery Cherepennikov <valery.cherepennikov@intel.com> Cc: Vince Weaver <vincent.weaver@maine.edu> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
此提交包含在:
@@ -536,7 +536,7 @@ static bool dsu_pmu_validate_group(struct perf_event *event)
|
||||
memset(fake_hw.used_mask, 0, sizeof(fake_hw.used_mask));
|
||||
if (!dsu_pmu_validate_event(event->pmu, &fake_hw, leader))
|
||||
return false;
|
||||
list_for_each_entry(sibling, &leader->sibling_list, group_entry) {
|
||||
list_for_each_entry(sibling, &leader->sibling_list, sibling_list) {
|
||||
if (!dsu_pmu_validate_event(event->pmu, &fake_hw, sibling))
|
||||
return false;
|
||||
}
|
||||
|
@@ -311,7 +311,7 @@ validate_group(struct perf_event *event)
|
||||
if (!validate_event(event->pmu, &fake_pmu, leader))
|
||||
return -EINVAL;
|
||||
|
||||
list_for_each_entry(sibling, &leader->sibling_list, group_entry) {
|
||||
list_for_each_entry(sibling, &leader->sibling_list, sibling_list) {
|
||||
if (!validate_event(event->pmu, &fake_pmu, sibling))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@@ -82,8 +82,7 @@ static bool hisi_validate_event_group(struct perf_event *event)
|
||||
counters++;
|
||||
}
|
||||
|
||||
list_for_each_entry(sibling, &event->group_leader->sibling_list,
|
||||
group_entry) {
|
||||
list_for_each_entry(sibling, &event->group_leader->sibling_list, sibling_list) {
|
||||
if (is_software_event(sibling))
|
||||
continue;
|
||||
if (sibling->pmu != event->pmu)
|
||||
|
@@ -535,7 +535,7 @@ static int l2_cache_event_init(struct perf_event *event)
|
||||
}
|
||||
|
||||
list_for_each_entry(sibling, &event->group_leader->sibling_list,
|
||||
group_entry)
|
||||
sibling_list)
|
||||
if (sibling->pmu != event->pmu &&
|
||||
!is_software_event(sibling)) {
|
||||
dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
|
||||
@@ -572,7 +572,7 @@ static int l2_cache_event_init(struct perf_event *event)
|
||||
}
|
||||
|
||||
list_for_each_entry(sibling, &event->group_leader->sibling_list,
|
||||
group_entry) {
|
||||
sibling_list) {
|
||||
if ((sibling != event) &&
|
||||
!is_software_event(sibling) &&
|
||||
(L2_EVT_GROUP(sibling->attr.config) ==
|
||||
|
@@ -468,7 +468,7 @@ static bool qcom_l3_cache__validate_event_group(struct perf_event *event)
|
||||
counters = event_num_counters(event);
|
||||
counters += event_num_counters(leader);
|
||||
|
||||
list_for_each_entry(sibling, &leader->sibling_list, group_entry) {
|
||||
list_for_each_entry(sibling, &leader->sibling_list, sibling_list) {
|
||||
if (is_software_event(sibling))
|
||||
continue;
|
||||
if (sibling->pmu != event->pmu)
|
||||
|
@@ -950,7 +950,7 @@ static int xgene_perf_event_init(struct perf_event *event)
|
||||
return -EINVAL;
|
||||
|
||||
list_for_each_entry(sibling, &event->group_leader->sibling_list,
|
||||
group_entry)
|
||||
sibling_list)
|
||||
if (sibling->pmu != event->pmu &&
|
||||
!is_software_event(sibling))
|
||||
return -EINVAL;
|
||||
|
新增問題並參考
封鎖使用者