|
@@ -1168,19 +1168,17 @@ int tmc_read_prepare_etr(struct tmc_drvdata *drvdata)
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- /* Don't interfere if operated from Perf */
|
|
|
- if (drvdata->mode == CS_MODE_PERF) {
|
|
|
- ret = -EINVAL;
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
- /* If sysfs_buf is NULL the trace data has been read already */
|
|
|
+ /*
|
|
|
+ * We can safely allow reads even if the ETR is operating in PERF mode,
|
|
|
+ * since the sysfs session is captured in mode specific data.
|
|
|
+ * If drvdata::sysfs_data is NULL the trace data has been read already.
|
|
|
+ */
|
|
|
if (!drvdata->sysfs_buf) {
|
|
|
ret = -EINVAL;
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- /* Disable the TMC if we are trying to read from a running session */
|
|
|
+ /* Disable the TMC if we are trying to read from a running session. */
|
|
|
if (drvdata->mode == CS_MODE_SYSFS)
|
|
|
tmc_etr_disable_hw(drvdata);
|
|
|
|