From 92735374a16196d19ae7ff3c32c6cf5ec9561657 Mon Sep 17 00:00:00 2001 From: Stephen Dickey Date: Thu, 30 Apr 2020 17:08:37 -0700 Subject: [PATCH] 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 --- drivers/devfreq/arm-memlat-mon.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/devfreq/arm-memlat-mon.c b/drivers/devfreq/arm-memlat-mon.c index 0d1134a9bb8d..2b4598ba0f0f 100644 --- a/drivers/devfreq/arm-memlat-mon.c +++ b/drivers/devfreq/arm-memlat-mon.c @@ -115,6 +115,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; @@ -180,8 +181,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 = @@ -202,7 +206,9 @@ 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]); + cpu_grp->read_event_cpu = -1; } } } @@ -743,6 +749,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) {