All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suzuki K Poulose <suzuki.poulose@arm.com>
To: mathieu.poirier@linaro.org, zhang.chunyan@linaro.org
Cc: pratikp@codeaurora.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, gregkh@linuxfoundation.org,
	stable@vger.kernel.org
Subject: [PATCH] coresight: STM: Balance enable/disable
Date: Tue, 10 Jan 2017 11:21:55 +0000	[thread overview]
Message-ID: <1484047315-14407-1-git-send-email-suzuki.poulose@arm.com> (raw)

The stm is automatically enabled when an application sets the policy
via ->link() call back by using coresight_enable(), which keeps the
refcount of the current users of the STM. However, the unlink() callback
issues stm_disable() directly, which leaves the STM turned off, without
the coresight layer knowing about it. This prevents any further uses
of the STM hardware as the coresight layer still thinks the STM is
turned on and doesn't issue an stm_enable(). Even manually enabling
the STM via sysfs can't really enable the hw.

e.g,

$ echo 1 > $CS_DEVS/$ETR/enable_sink
$ mkdir -p $CONFIG_FS/stp-policy/$source.0/stm_test/
$ echo 32768 65535 > $CONFIG_FS/stp-policy/$source.0/stm_test/channels
$ echo 64 > $CS_DEVS/$source/traceid
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffffa95fa000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.1
597+1 records in
597+1 records out
305920 bytes (306 kB) copied, 0.399952 s, 765 kB/s
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffff7e9e2000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.2
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.0232083 s, 0.0 kB/s

Note that we don't get any data from the ETR for the second session.

Also dmesg shows :

[   77.520458] coresight-tmc 20800000.etr: TMC-ETR enabled
[   77.537097] coresight-replicator etr_replicator@20890000: REPLICATOR enabled
[   77.558828] coresight-replicator main_replicator@208a0000: REPLICATOR enabled
[   77.581068] coresight-funnel 208c0000.main_funnel: FUNNEL inport 0 enabled
[   77.602217] coresight-tmc 20840000.etf: TMC-ETF enabled
[   77.618422] coresight-stm 20860000.stm: STM tracing enabled
[  139.554252] coresight-stm 20860000.stm: STM tracing disabled
 # End of first tracing session
[  146.351135] coresight-tmc 20800000.etr: TMC read start
[  146.514486] coresight-tmc 20800000.etr: TMC read end
 # Note that the STM is not turned on via stm_generic_link()->coresight_enable()
 # and hence none of the components are turned on.
[  152.479080] coresight-tmc 20800000.etr: TMC read start
[  152.542632] coresight-tmc 20800000.etr: TMC read end

This patch balances the unlink operation by using the coresight_disable(),
keeping the coresight layer in sync with the hardware state.

Fixes: commit 237483aa5cf43 ("coresight: stm: adding driver for CoreSight STM component")
Cc: Pratik Patel <pratikp@codeaurora.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: stable@vger.kernel.org # 4.7+
Reported-by: Robert Walker <robert.walker@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
 drivers/hwtracing/coresight/coresight-stm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-stm.c b/drivers/hwtracing/coresight/coresight-stm.c
index 3524452..57b7330 100644
--- a/drivers/hwtracing/coresight/coresight-stm.c
+++ b/drivers/hwtracing/coresight/coresight-stm.c
@@ -356,7 +356,7 @@ static void stm_generic_unlink(struct stm_data *stm_data,
 	if (!drvdata || !drvdata->csdev)
 		return;
 
-	stm_disable(drvdata->csdev, NULL);
+	coresight_disable(drvdata->csdev);
 }
 
 static phys_addr_t
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: suzuki.poulose@arm.com (Suzuki K Poulose)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] coresight: STM: Balance enable/disable
Date: Tue, 10 Jan 2017 11:21:55 +0000	[thread overview]
Message-ID: <1484047315-14407-1-git-send-email-suzuki.poulose@arm.com> (raw)

The stm is automatically enabled when an application sets the policy
via ->link() call back by using coresight_enable(), which keeps the
refcount of the current users of the STM. However, the unlink() callback
issues stm_disable() directly, which leaves the STM turned off, without
the coresight layer knowing about it. This prevents any further uses
of the STM hardware as the coresight layer still thinks the STM is
turned on and doesn't issue an stm_enable(). Even manually enabling
the STM via sysfs can't really enable the hw.

e.g,

$ echo 1 > $CS_DEVS/$ETR/enable_sink
$ mkdir -p $CONFIG_FS/stp-policy/$source.0/stm_test/
$ echo 32768 65535 > $CONFIG_FS/stp-policy/$source.0/stm_test/channels
$ echo 64 > $CS_DEVS/$source/traceid
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffffa95fa000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.1
597+1 records in
597+1 records out
305920 bytes (306 kB) copied, 0.399952 s, 765 kB/s
$ ./stm_app
Sending 64000 byte blocks of pattern 0 at 0us intervals
Success to map channel(32768~32783) to 0xffff7e9e2000
Sending on channel 32768
$ dd if=/dev/$ETR of=~/trace.bin.2
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.0232083 s, 0.0 kB/s

Note that we don't get any data from the ETR for the second session.

Also dmesg shows :

[   77.520458] coresight-tmc 20800000.etr: TMC-ETR enabled
[   77.537097] coresight-replicator etr_replicator at 20890000: REPLICATOR enabled
[   77.558828] coresight-replicator main_replicator at 208a0000: REPLICATOR enabled
[   77.581068] coresight-funnel 208c0000.main_funnel: FUNNEL inport 0 enabled
[   77.602217] coresight-tmc 20840000.etf: TMC-ETF enabled
[   77.618422] coresight-stm 20860000.stm: STM tracing enabled
[  139.554252] coresight-stm 20860000.stm: STM tracing disabled
 # End of first tracing session
[  146.351135] coresight-tmc 20800000.etr: TMC read start
[  146.514486] coresight-tmc 20800000.etr: TMC read end
 # Note that the STM is not turned on via stm_generic_link()->coresight_enable()
 # and hence none of the components are turned on.
[  152.479080] coresight-tmc 20800000.etr: TMC read start
[  152.542632] coresight-tmc 20800000.etr: TMC read end

This patch balances the unlink operation by using the coresight_disable(),
keeping the coresight layer in sync with the hardware state.

Fixes: commit 237483aa5cf43 ("coresight: stm: adding driver for CoreSight STM component")
Cc: Pratik Patel <pratikp@codeaurora.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Chunyan Zhang <zhang.chunyan@linaro.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: stable at vger.kernel.org # 4.7+
Reported-by: Robert Walker <robert.walker@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
 drivers/hwtracing/coresight/coresight-stm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-stm.c b/drivers/hwtracing/coresight/coresight-stm.c
index 3524452..57b7330 100644
--- a/drivers/hwtracing/coresight/coresight-stm.c
+++ b/drivers/hwtracing/coresight/coresight-stm.c
@@ -356,7 +356,7 @@ static void stm_generic_unlink(struct stm_data *stm_data,
 	if (!drvdata || !drvdata->csdev)
 		return;
 
-	stm_disable(drvdata->csdev, NULL);
+	coresight_disable(drvdata->csdev);
 }
 
 static phys_addr_t
-- 
2.7.4

             reply	other threads:[~2017-01-10 11:22 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-10 11:21 Suzuki K Poulose [this message]
2017-01-10 11:21 ` [PATCH] coresight: STM: Balance enable/disable Suzuki K Poulose
2017-01-10 17:36 ` Mathieu Poirier
2017-01-10 17:36   ` Mathieu Poirier
2017-01-11 11:41   ` Chunyan Zhang
2017-01-11 11:41     ` Chunyan Zhang
2017-01-11 11:41     ` Chunyan Zhang
2017-01-11 13:59     ` Suzuki K Poulose
2017-01-11 13:59       ` Suzuki K Poulose
2017-01-11 13:59       ` Suzuki K Poulose
2017-01-13  2:10       ` Chunyan Zhang
2017-01-13  2:10         ` Chunyan Zhang
2017-01-13  2:10         ` Chunyan Zhang
2017-01-13 16:48 ` Mathieu Poirier
2017-01-13 16:48   ` Mathieu Poirier
2017-01-13 16:48   ` Mathieu Poirier
2017-01-13 17:11   ` Suzuki K Poulose
2017-01-13 17:11     ` Suzuki K Poulose
2017-01-13 17:11     ` Suzuki K Poulose
2017-01-16 17:50     ` Mathieu Poirier
2017-01-16 17:50       ` Mathieu Poirier
2017-01-16 17:50       ` Mathieu Poirier
2017-01-16 18:00 Suzuki K Poulose
2017-01-16 18:00 ` Suzuki K Poulose
2017-01-19 11:40 ` Greg KH
2017-01-19 11:40   ` Greg KH
2017-01-19 13:55   ` Suzuki K Poulose
2017-01-19 13:55     ` Suzuki K Poulose

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1484047315-14407-1-git-send-email-suzuki.poulose@arm.com \
    --to=suzuki.poulose@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=pratikp@codeaurora.org \
    --cc=stable@vger.kernel.org \
    --cc=zhang.chunyan@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.