mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: gregkh@linuxfoundation.org, a.p.zijlstra@chello.nl,
	alexander.shishkin@linux.intel.com, acme@kernel.org,
	mingo@redhat.com, corbet@lwn.net, nicolas.pitre@linaro.org
Cc: adrian.hunter@intel.com, zhang.chunyan@linaro.org,
	mike.leach@arm.com, tor@ti.com, al.grant@arm.com,
	pawel.moll@arm.com, fainelli@broadcom.com,
	linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, mathieu.poirier@linaro.org
Subject: [PATCH V3 17/26] coresight: etb10: moving to local atomic operations
Date: Wed, 11 Nov 2015 15:18:07 -0700	[thread overview]
Message-ID: <1447280296-19147-18-git-send-email-mathieu.poirier@linaro.org> (raw)
In-Reply-To: <1447280296-19147-1-git-send-email-mathieu.poirier@linaro.org>

Moving to use local atomic operations to take advantage of the
lockless implementation, something that will come handy when
the ETB is accessed from the Perf subsystem. Also changing the
name of the variable to something more meaningful.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/hwtracing/coresight/coresight-etb10.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-etb10.c b/drivers/hwtracing/coresight/coresight-etb10.c
index 1301edc44629..09e306361e4f 100644
--- a/drivers/hwtracing/coresight/coresight-etb10.c
+++ b/drivers/hwtracing/coresight/coresight-etb10.c
@@ -10,6 +10,7 @@
  * GNU General Public License for more details.
  */
 
+#include <asm/local.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -71,7 +72,7 @@
  * @csdev:	component vitals needed by the framework.
  * @miscdev:	specifics to handle "/dev/xyz.etb" entry.
  * @spinlock:	only one at a time pls.
- * @in_use:	synchronise user space access to etb buffer.
+ * @reading:	synchronise user space access to etb buffer.
  * @buf:	area of memory where ETB buffer content gets sent.
  * @buffer_depth: size of @buf.
  * @enable:	this ETB is being used.
@@ -84,7 +85,7 @@ struct etb_drvdata {
 	struct coresight_device	*csdev;
 	struct miscdevice	miscdev;
 	spinlock_t		spinlock;
-	atomic_t		in_use;
+	local_t			reading;
 	u8			*buf;
 	u32			buffer_depth;
 	bool			enable;
@@ -277,7 +278,7 @@ static int etb_open(struct inode *inode, struct file *file)
 	struct etb_drvdata *drvdata = container_of(file->private_data,
 						   struct etb_drvdata, miscdev);
 
-	if (atomic_cmpxchg(&drvdata->in_use, 0, 1))
+	if (local_cmpxchg(&drvdata->reading, 0, 1))
 		return -EBUSY;
 
 	dev_dbg(drvdata->dev, "%s: successfully opened\n", __func__);
@@ -313,7 +314,7 @@ static int etb_release(struct inode *inode, struct file *file)
 {
 	struct etb_drvdata *drvdata = container_of(file->private_data,
 						   struct etb_drvdata, miscdev);
-	atomic_set(&drvdata->in_use, 0);
+	local_set(&drvdata->reading, 0);
 
 	dev_dbg(drvdata->dev, "%s: released\n", __func__);
 	return 0;
-- 
1.9.1


  parent reply	other threads:[~2015-11-11 22:19 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-11 22:17 [PATCH V3 00/26] Coresight integration with perf Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 01/26] coresight: etm3x: moving etm_readl/writel to header file Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 02/26] coresight: etm3x: moving sysFS entries to dedicated file Mathieu Poirier
2015-11-11 22:30   ` Arnd Bergmann
2015-11-13 16:17     ` Mathieu Poirier
2015-11-13 16:26       ` Arnd Bergmann
2015-11-11 22:17 ` [PATCH V3 03/26] coresight: etm3x: unlocking tracers in default arch init Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 04/26] coresight: etm3x: splitting struct etm_drvdata Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 05/26] coresight: etm3x: implementing 'cpu_id()' API Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 06/26] coresight: associating path with session rather than tracer Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 07/26] coresight: moving PM runtime operations to core framework Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 08/26] coresight: etm3x: adding operation mode for etm_enable() Mathieu Poirier
2015-11-11 22:17 ` [PATCH V3 09/26] coresight: add API to get sink from path Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 10/26] coresight: etm3x: set progbit to stop trace collection Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 11/26] coresight: etm3x: changing default trace configuration Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 12/26] coresight: etm3x: consolidating initial config Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 13/26] coresight: etm3x: implementing user/kernel mode tracing Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 14/26] coresight: etm3x: adding perf_get/set_config() API Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 15/26] coresight: etm3x: implementing perf_enable/disable() API Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 16/26] perf: changing pmu::setup_aux() parameter to include event Mathieu Poirier
2015-11-11 22:18 ` Mathieu Poirier [this message]
2015-11-11 22:18 ` [PATCH V3 18/26] coresight: adding operation mode for sink->enable() Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 19/26] coresight: etb10: implementing AUX space API Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 20/26] coresight: etm-perf: new PMU driver for ETM tracers Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 21/26] coresight: introducing a global trace ID function Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 22/26] coresight: updating documentation to reflect integration with perf Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 23/26] perf tools: making function set_max_cpu_num() non static Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 24/26] perf tools: adding perf_session to *info_prive_size() Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 25/26] perf tools: making coresight PMU listable Mathieu Poirier
2015-11-11 22:18 ` [PATCH V3 26/26] perf tools: adding coresight etm PMU record capabilities Mathieu Poirier
2015-11-12 10:53 ` [PATCH V3 00/26] Coresight integration with perf Alexander Shishkin

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=1447280296-19147-18-git-send-email-mathieu.poirier@linaro.org \
    --to=mathieu.poirier@linaro.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=al.grant@arm.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=corbet@lwn.net \
    --cc=fainelli@broadcom.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mike.leach@arm.com \
    --cc=mingo@redhat.com \
    --cc=nicolas.pitre@linaro.org \
    --cc=pawel.moll@arm.com \
    --cc=tor@ti.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®