perf: add arch-dependent counter_mask_check function

A later version would probably want to check some mask for arm64...

Change-Id: I67e13a852c3ed406fbf8ae1688539b9e069c0e81
Fujitsu: POSTK_DEBUG_ARCH_DEP_87
This commit is contained in:
Dominique Martinet
2019-01-29 11:38:48 +09:00
parent 03cadbcba2
commit 238f563e88
4 changed files with 21 additions and 12 deletions

View File

@ -3901,16 +3901,14 @@ void perf_start(struct mc_perf_event *event)
struct mc_perf_event *leader = event->group_leader, *sub;
counter_id = leader->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
perf_counter_set(leader);
counter_mask |= 1UL << counter_id;
}
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
counter_id = sub->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
perf_counter_set(sub);
counter_mask |= 1UL << counter_id;
}
@ -3929,15 +3927,13 @@ perf_reset(struct mc_perf_event *event)
struct mc_perf_event *leader = event->group_leader, *sub;
counter_id = leader->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
ihk_mc_perfctr_reset(counter_id);
}
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
counter_id = sub->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
ihk_mc_perfctr_reset(counter_id);
}
}
@ -3951,15 +3947,13 @@ perf_stop(struct mc_perf_event *event)
struct mc_perf_event *leader = event->group_leader, *sub;
counter_id = leader->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
counter_mask |= 1UL << counter_id;
}
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
counter_id = sub->counter_id;
if ((1UL << counter_id & PERF_COUNTERS_MASK) |
(1UL << counter_id & FIXED_PERF_COUNTERS_MASK)) {
if (ihk_mc_perf_counter_mask_check(1UL << counter_id)) {
counter_mask |= 1UL << counter_id;
}
}