From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756581AbbI3LS5 (ORCPT ); Wed, 30 Sep 2015 07:18:57 -0400 Received: from mga11.intel.com ([192.55.52.93]:9798 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754981AbbI3LSz (ORCPT ); Wed, 30 Sep 2015 07:18:55 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,612,1437462000"; d="scan'208";a="816238140" From: Alexander Shishkin To: Mathieu Poirier , gregkh@linuxfoundation.org, a.p.zijlstra@chello.nl, acme@kernel.org, mingo@redhat.com, corbet@lwn.net Cc: adrian.hunter@intel.com, zhang.chunyan@linaro.org, mike.leach@arm.com, tor@ti.com, al.grant@arm.com, pawel.moll@arm.com, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH 03/20] coresight: etm3x: implementing 'cpu_id()' API In-Reply-To: <1442593594-10665-4-git-send-email-mathieu.poirier@linaro.org> References: <1442593594-10665-1-git-send-email-mathieu.poirier@linaro.org> <1442593594-10665-4-git-send-email-mathieu.poirier@linaro.org> User-Agent: Notmuch/0.20.2 (http://notmuchmail.org) Emacs/24.5.1 (x86_64-pc-linux-gnu) Date: Wed, 30 Sep 2015 14:16:42 +0300 Message-ID: <87h9mcjgx1.fsf@ashishki-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mathieu Poirier writes: > Adding an interface to lookup the CPU a tracer has been affined > to along with a source operation allowing external customers to > access it. > > Signed-off-by: Mathieu Poirier > --- > drivers/hwtracing/coresight/coresight-etm3x.c | 14 ++++++++++++++ > include/linux/coresight.h | 3 +++ > 2 files changed, 17 insertions(+) > > diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c b/drivers/hwtracing/coresight/coresight-etm3x.c > index a44bc3532585..4ce9cfc06e93 100644 > --- a/drivers/hwtracing/coresight/coresight-etm3x.c > +++ b/drivers/hwtracing/coresight/coresight-etm3x.c > @@ -441,6 +441,19 @@ static void etm_config_enable(void *info) > spin_unlock(&drvdata->spinlock); > } > > +static int etm_cpu_id(struct coresight_device *csdev) > +{ > + int cpu; > + unsigned long flags; > + struct etm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); > + > + spin_lock_irqsave(&drvdata->spinlock, flags); > + cpu = drvdata->cpu; > + spin_unlock_irqrestore(&drvdata->spinlock, flags); Why do you need a spinlock here? Afaict, it never changes and if it would, things would go really bad really fast. Regards, -- Alex