]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Coresight: Set correct cs_mode for dummy source to fix disable issue
authorJie Gan <quic_jiegan@quicinc.com>
Mon, 12 Aug 2024 04:28:44 +0000 (12:28 +0800)
committerSuzuki K Poulose <suzuki.poulose@arm.com>
Mon, 19 Aug 2024 15:32:06 +0000 (16:32 +0100)
The coresight_disable_source_sysfs function should verify the
mode of the coresight device before disabling the source.
However, the mode for the dummy source device is always set to
CS_MODE_DISABLED, resulting in the check consistently failing.
As a result, dummy source cannot be properly disabled.

Configure CS_MODE_SYSFS/CS_MODE_PERF during the enablement.
Configure CS_MODE_DISABLED during the disablement.

Fixes: 9d3ba0b6c056 ("Coresight: Add coresight dummy driver")
Signed-off-by: Jie Gan <quic_jiegan@quicinc.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20240812042844.2890115-1-quic_jiegan@quicinc.com
drivers/hwtracing/coresight/coresight-dummy.c

index ac70c0b491bebd647dd3f44a32f42731e2413e90..dab389a5507c1166b300094b8487d7d37f79ec8d 100644 (file)
@@ -23,6 +23,9 @@ DEFINE_CORESIGHT_DEVLIST(sink_devs, "dummy_sink");
 static int dummy_source_enable(struct coresight_device *csdev,
                               struct perf_event *event, enum cs_mode mode)
 {
+       if (!coresight_take_mode(csdev, mode))
+               return -EBUSY;
+
        dev_dbg(csdev->dev.parent, "Dummy source enabled\n");
 
        return 0;
@@ -31,6 +34,7 @@ static int dummy_source_enable(struct coresight_device *csdev,
 static void dummy_source_disable(struct coresight_device *csdev,
                                 struct perf_event *event)
 {
+       coresight_set_mode(csdev, CS_MODE_DISABLED);
        dev_dbg(csdev->dev.parent, "Dummy source disabled\n");
 }