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>
Tue, 21 Jul 2020 13:48:39 +0000 (15:48 +0200)
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>
drivers/hwtracing/coresight/coresight-etm4x.c

index 2290f41f0074dde1da155d7357b133818ce5f84b..2d732af8b3e78d13cd192a250ac8fa75ad4df8d0 100644 (file)
@@ -511,6 +511,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);