2021-03-23 21:07:37

by Dmitry Osipenko

[permalink] [raw]
Subject: [PATCH v1 1/2] memory: tegra20: Correct comment to MC_STAT registers writes

The code was changed multiple times and the comment to MC_STAT
registers writes became slightly outdated. The MC_STAT programming
now isn't hardcoded to the "bandwidth" mode, let's clarify this in
the comment.

Signed-off-by: Dmitry Osipenko <[email protected]>
---
drivers/memory/tegra/tegra20.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c
index 14caf5b9324c..4659c0cea30d 100644
--- a/drivers/memory/tegra/tegra20.c
+++ b/drivers/memory/tegra/tegra20.c
@@ -451,9 +451,8 @@ static void tegra20_mc_stat_gather(struct tegra20_mc_stat *stat)
control_1 = tegra20_mc_stat_gather_control(&stat->gather1);

/*
- * Reset statistic gathers state, select bandwidth mode for the
- * statistics collection mode and set clocks counter saturation
- * limit to maximum.
+ * Reset statistic gathers state, select statistics collection mode
+ * and set clocks counter saturation limit to maximum.
*/
mc_writel(mc, 0x00000000, MC_STAT_CONTROL);
mc_writel(mc, control_0, MC_STAT_EMC_CONTROL_0);
--
2.30.2


2021-03-24 07:30:09

by Dmitry Osipenko

[permalink] [raw]
Subject: [PATCH v1 2/2] 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 <[email protected]>
---
drivers/memory/tegra/tegra20.c | 7 +++++++
1 file changed, 7 insertions(+)

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");

--
2.30.2

2021-03-25 17:24:41

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] memory: tegra20: Correct comment to MC_STAT registers writes

24.03.2021 00:04, Dmitry Osipenko пишет:
> The code was changed multiple times and the comment to MC_STAT
> registers writes became slightly outdated. The MC_STAT programming
> now isn't hardcoded to the "bandwidth" mode, let's clarify this in
> the comment.
>
> Signed-off-by: Dmitry Osipenko <[email protected]>
> ---
> drivers/memory/tegra/tegra20.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c
> index 14caf5b9324c..4659c0cea30d 100644
> --- a/drivers/memory/tegra/tegra20.c
> +++ b/drivers/memory/tegra/tegra20.c
> @@ -451,9 +451,8 @@ static void tegra20_mc_stat_gather(struct tegra20_mc_stat *stat)
> control_1 = tegra20_mc_stat_gather_control(&stat->gather1);
>
> /*
> - * Reset statistic gathers state, select bandwidth mode for the
> - * statistics collection mode and set clocks counter saturation
> - * limit to maximum.
> + * Reset statistic gathers state, select statistics collection mode
> + * and set clocks counter saturation limit to maximum.
> */
> mc_writel(mc, 0x00000000, MC_STAT_CONTROL);
> mc_writel(mc, control_0, MC_STAT_EMC_CONTROL_0);
>

Krzysztof, please feel free to squash these 2 minor follow up patches
into the original patch which added the the debug support, if you prefer
this way more. I happened to notice these small itches only after you
already picked up the previous patch.

2021-03-26 07:38:43

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] memory: tegra20: Correct comment to MC_STAT registers writes

On Wed, 24 Mar 2021 00:04:45 +0300, Dmitry Osipenko wrote:
> The code was changed multiple times and the comment to MC_STAT
> registers writes became slightly outdated. The MC_STAT programming
> now isn't hardcoded to the "bandwidth" mode, let's clarify this in
> the comment.

Applied, thanks!

[1/2] memory: tegra20: Correct comment to MC_STAT registers writes
(no commit info)
[2/2] memory: tegra20: Protect debug code with a lock
(no commit info)

Best regards,
--
Krzysztof Kozlowski <[email protected]>

2021-03-26 07:40:11

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] memory: tegra20: Correct comment to MC_STAT registers writes

On 25/03/2021 18:20, Dmitry Osipenko wrote:
> 24.03.2021 00:04, Dmitry Osipenko пишет:
>> The code was changed multiple times and the comment to MC_STAT
>> registers writes became slightly outdated. The MC_STAT programming
>> now isn't hardcoded to the "bandwidth" mode, let's clarify this in
>> the comment.
>>
>> Signed-off-by: Dmitry Osipenko <[email protected]>
>> ---
>> drivers/memory/tegra/tegra20.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c
>> index 14caf5b9324c..4659c0cea30d 100644
>> --- a/drivers/memory/tegra/tegra20.c
>> +++ b/drivers/memory/tegra/tegra20.c
>> @@ -451,9 +451,8 @@ static void tegra20_mc_stat_gather(struct tegra20_mc_stat *stat)
>> control_1 = tegra20_mc_stat_gather_control(&stat->gather1);
>>
>> /*
>> - * Reset statistic gathers state, select bandwidth mode for the
>> - * statistics collection mode and set clocks counter saturation
>> - * limit to maximum.
>> + * Reset statistic gathers state, select statistics collection mode
>> + * and set clocks counter saturation limit to maximum.
>> */
>> mc_writel(mc, 0x00000000, MC_STAT_CONTROL);
>> mc_writel(mc, control_0, MC_STAT_EMC_CONTROL_0);
>>
>
> Krzysztof, please feel free to squash these 2 minor follow up patches
> into the original patch which added the the debug support, if you prefer
> this way more. I happened to notice these small itches only after you
> already picked up the previous patch.

No problem, in general I prefer to have incremental improvements.

Best regards,
Krzysztof

2021-03-26 13:24:24

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] memory: tegra20: Correct comment to MC_STAT registers writes

26.03.2021 10:38, Krzysztof Kozlowski пишет:
> On 25/03/2021 18:20, Dmitry Osipenko wrote:
>> 24.03.2021 00:04, Dmitry Osipenko пишет:
>>> The code was changed multiple times and the comment to MC_STAT
>>> registers writes became slightly outdated. The MC_STAT programming
>>> now isn't hardcoded to the "bandwidth" mode, let's clarify this in
>>> the comment.
>>>
>>> Signed-off-by: Dmitry Osipenko <[email protected]>
>>> ---
>>> drivers/memory/tegra/tegra20.c | 5 ++---
>>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c
>>> index 14caf5b9324c..4659c0cea30d 100644
>>> --- a/drivers/memory/tegra/tegra20.c
>>> +++ b/drivers/memory/tegra/tegra20.c
>>> @@ -451,9 +451,8 @@ static void tegra20_mc_stat_gather(struct tegra20_mc_stat *stat)
>>> control_1 = tegra20_mc_stat_gather_control(&stat->gather1);
>>>
>>> /*
>>> - * Reset statistic gathers state, select bandwidth mode for the
>>> - * statistics collection mode and set clocks counter saturation
>>> - * limit to maximum.
>>> + * Reset statistic gathers state, select statistics collection mode
>>> + * and set clocks counter saturation limit to maximum.
>>> */
>>> mc_writel(mc, 0x00000000, MC_STAT_CONTROL);
>>> mc_writel(mc, control_0, MC_STAT_EMC_CONTROL_0);
>>>
>>
>> Krzysztof, please feel free to squash these 2 minor follow up patches
>> into the original patch which added the the debug support, if you prefer
>> this way more. I happened to notice these small itches only after you
>> already picked up the previous patch.
>
> No problem, in general I prefer to have incremental improvements.

Thank you.