summaryrefslogtreecommitdiffstats
path: root/drivers/hwtracing
diff options
context:
space:
mode:
authorTingwei Zhang <tingwei@codeaurora.org>2020-09-28 10:35:07 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-09-28 19:47:41 +0200
commitf2ccc7b7bfa91b5cad5a4d57b269f6d7bbafd67d (patch)
tree24f77bc4c0090acb603ac03ef85c32b27b5837ef /drivers/hwtracing
parentcab280bf3533c72f95ebdb65ce534b5cdc4729dc (diff)
downloadlinux-f2ccc7b7bfa91b5cad5a4d57b269f6d7bbafd67d.tar.bz2
coresight: cti: Don't disable ect device if it's not enabled
If associated ect device is not enabled at first place, disable routine should not be called. Add ect_enabled flag to check whether ect device is enabled. Fix the issue in below case. Ect device is not available when associated coresight device enabled and the association is established after coresight device is enabled. Signed-off-by: Mike Leach <mike.leach@linaro.org> Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Link: https://lore.kernel.org/r/20200928163513.70169-20-mathieu.poirier@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hwtracing')
-rw-r--r--drivers/hwtracing/coresight/coresight.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c
index b8b0a20e93c9..711beb92166a 100644
--- a/drivers/hwtracing/coresight/coresight.c
+++ b/drivers/hwtracing/coresight/coresight.c
@@ -244,13 +244,18 @@ coresight_control_assoc_ectdev(struct coresight_device *csdev, bool enable)
if (!ect_csdev)
return 0;
+ if ((!ect_ops(ect_csdev)->enable) || (!ect_ops(ect_csdev)->disable))
+ return 0;
if (enable) {
- if (ect_ops(ect_csdev)->enable)
- ect_ret = ect_ops(ect_csdev)->enable(ect_csdev);
+ ect_ret = ect_ops(ect_csdev)->enable(ect_csdev);
+ if (!ect_ret)
+ csdev->ect_enabled = true;
} else {
- if (ect_ops(ect_csdev)->disable)
+ if (csdev->ect_enabled) {
ect_ret = ect_ops(ect_csdev)->disable(ect_csdev);
+ csdev->ect_enabled = false;
+ }
}
/* output warning if ECT enable is preventing trace operation */