From 289471984f1c226c9e0e50d31d0db6b3678e6f5a Mon Sep 17 00:00:00 2001 From: Dmitry Osipenko Date: Wed, 24 Mar 2021 00:04:46 +0300 Subject: memory: tegra20: Protect debug code with a lock Simultaneous accesses to MC_STAT h/w shouldn't be allowed since one collection process stomps on another. There is no good reason for polling stats in parallel in practice, nevertheless let's add a protection lock, just for consistency. Signed-off-by: Dmitry Osipenko Link: https://lore.kernel.org/r/20210323210446.24867-2-digetx@gmail.com Signed-off-by: Krzysztof Kozlowski --- drivers/memory/tegra/tegra20.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/memory/tegra') diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c index 4659c0cea30d..2db68a913b7a 100644 --- a/drivers/memory/tegra/tegra20.c +++ b/drivers/memory/tegra/tegra20.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -55,6 +56,8 @@ /* we store collected statistics as a fixed point values */ #define MC_FX_FRAC_SCALE 100 +static DEFINE_MUTEX(tegra20_mc_stat_lock); + struct tegra20_mc_stat_gather { unsigned int pri_filter; unsigned int pri_event; @@ -615,8 +618,12 @@ static int tegra20_mc_stats_show(struct seq_file *s, void *unused) if (!stats) return -ENOMEM; + mutex_lock(&tegra20_mc_stat_lock); + tegra20_mc_collect_stats(mc, stats); + mutex_unlock(&tegra20_mc_stat_lock); + seq_puts(s, "Memory client Events Timeout High priority Bandwidth ARB RW change Successive Page miss\n"); seq_puts(s, "-----------------------------------------------------------------------------------------------------\n"); -- cgit v1.2.3-59-g8ed1b