diff --git a/drivers/devfreq/arm-memlat-mon.c b/drivers/devfreq/arm-memlat-mon.c index 76848106d828..37ebff621d17 100644 --- a/drivers/devfreq/arm-memlat-mon.c +++ b/drivers/devfreq/arm-memlat-mon.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2021, The Linux Foundation. All rights reserved. */ #define pr_fmt(fmt) "arm-memlat-mon: " fmt @@ -174,11 +174,13 @@ static inline void read_event(struct event_data *event) return; if (!per_cpu(cpu_is_idle, event->pevent->cpu) && - !per_cpu(cpu_is_hp, event->pevent->cpu)) + !per_cpu(cpu_is_hp, event->pevent->cpu)) { total = perf_event_read_value(event->pevent, &enabled, &running); - else + event->cached_total_count = total; + } else { total = event->cached_total_count; + } event->last_delta = total - event->prev_count; event->prev_count = total; } diff --git a/drivers/soc/qcom/msm_performance.c b/drivers/soc/qcom/msm_performance.c index 1f32d8a48b8c..cb0c138da1a6 100644 --- a/drivers/soc/qcom/msm_performance.c +++ b/drivers/soc/qcom/msm_performance.c @@ -560,10 +560,12 @@ static inline void msm_perf_read_event(struct event_data *event) } if (!per_cpu(cpu_is_idle, event->pevent->cpu) && - !per_cpu(cpu_is_hp, event->pevent->cpu)) + !per_cpu(cpu_is_hp, event->pevent->cpu)) { total = perf_event_read_value(event->pevent, &enabled, &running); - else + event->cached_total_count = total; + } else { total = event->cached_total_count; + } ev_count = total - event->prev_count; event->prev_count = total;