]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
coresight: etmv4: Counter values not saved on disable
authorMike Leach <mike.leach@linaro.org>
Thu, 16 Jul 2020 17:57:39 +0000 (11:57 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Aug 2020 06:26:40 +0000 (08:26 +0200)
[ Upstream commit 8fa43700f69703f995ea715b76be6fabdd2f05de ]

The counter value registers change during operation, however this change
is not reflected in the values seen by the user in sysfs.

This fixes the issue by reading back the values on disable.

Signed-off-by: Mike Leach <mike.leach@linaro.org>
Fixes: 2e1cdfe184b52 ("coresight-etm4x: Adding CoreSight ETM4x driver")
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20200716175746.3338735-11-mathieu.poirier@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/hwtracing/coresight/coresight-etm4x.c

index 0c35cd5e0d1d9e3c04b3b86c484979c298570c2c..007d7c6e91f480f3b821e05e2e71394a7e57950c 100644 (file)
@@ -507,6 +507,12 @@ static void etm4_disable_hw(void *info)
                        readl_relaxed(drvdata->base + TRCSSCSRn(i));
        }
 
+       /* read back the current counter values */
+       for (i = 0; i < drvdata->nr_cntr; i++) {
+               config->cntr_val[i] =
+                       readl_relaxed(drvdata->base + TRCCNTVRn(i));
+       }
+
        coresight_disclaim_device_unlocked(drvdata->base);
 
        CS_LOCK(drvdata->base);