BACKPORT: devfreq: memlat: track cpu during ipi to cluster

Will aid debugging lockups in perf_event_read_value()
track the cpu being ipi'd.

Change-Id: Ia948f31bb2d91bca6144c0c50f8f66bd9c1459fe
Signed-off-by: Stephen Dickey <dickey@codeaurora.org>
Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com>
This commit is contained in:
Stephen Dickey 2020-04-30 17:08:37 -07:00 committed by spakkkk
parent bbe528de02
commit de090849fd

View File

@ -128,6 +128,7 @@ struct memlat_cpu_grp {
cpumask_t cpus;
unsigned int common_ev_ids[NUM_COMMON_EVS];
struct cpu_data *cpus_data;
int read_event_cpu;
ktime_t last_update_ts;
unsigned long last_ts_delta_us;
@ -184,8 +185,11 @@ static void update_counts(struct memlat_cpu_grp *cpu_grp)
struct cpu_data *cpu_data = to_cpu_data(cpu_grp, cpu);
struct event_data *common_evs = cpu_data->common_evs;
for (i = 0; i < NUM_COMMON_EVS; i++)
for (i = 0; i < NUM_COMMON_EVS; i++) {
cpu_grp->read_event_cpu = cpu;
read_event(&common_evs[i]);
cpu_grp->read_event_cpu = -1;
}
if (!common_evs[STALL_IDX].pevent)
common_evs[STALL_IDX].last_delta =
@ -209,12 +213,15 @@ static void update_counts(struct memlat_cpu_grp *cpu_grp)
for_each_cpu(cpu, &mon->cpus) {
unsigned int mon_idx =
cpu - cpumask_first(&mon->cpus);
cpu_grp->read_event_cpu = cpu;
read_event(&mon->miss_ev[mon_idx]);
if (mon->wb_ev_id && mon->access_ev_id) {
read_event(&mon->wb_ev[mon_idx]);
read_event(&mon->access_ev[mon_idx]);
}
cpu_grp->read_event_cpu = -1;
}
}
}
@ -564,6 +571,8 @@ static int memlat_cpu_grp_probe(struct platform_device *pdev)
return -ENODEV;
}
cpu_grp->read_event_cpu = -1;
num_mons = of_get_available_child_count(dev->of_node);
if (!num_mons) {