From: Dmitry Osipenko Date: Tue, 23 Mar 2021 21:04:46 +0000 (+0300) Subject: memory: tegra20: Protect debug code with a lock X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=289471984f1c226c9e0e50d31d0db6b3678e6f5a;p=linux.git 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 --- diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c index 4659c0cea30d9..2db68a913b7af 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");