diff options
author | Dmitry Osipenko <digetx@gmail.com> | 2021-03-24 00:04:46 +0300 |
---|---|---|
committer | Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> | 2021-04-01 19:58:22 +0200 |
commit | 289471984f1c226c9e0e50d31d0db6b3678e6f5a (patch) | |
tree | d01b55ecc1dde7f67c75f6154192a3ecd9ae7baa /drivers/memory/tegra/tegra20.c | |
parent | 7ebb09db5b265701b70a4c8980513825dbc57584 (diff) |
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 <digetx@gmail.com>
Link: https://lore.kernel.org/r/20210323210446.24867-2-digetx@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Diffstat (limited to 'drivers/memory/tegra/tegra20.c')
-rw-r--r-- | drivers/memory/tegra/tegra20.c | 7 |
1 files changed, 7 insertions, 0 deletions
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 <linux/bitfield.h> #include <linux/delay.h> +#include <linux/mutex.h> #include <linux/of_device.h> #include <linux/slab.h> #include <linux/string.h> @@ -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"); |