From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49403C00A89 for ; Mon, 2 Nov 2020 17:29:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EDB032225E for ; Mon, 2 Nov 2020 17:29:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="IlK8VBmv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727663AbgKBR3f (ORCPT ); Mon, 2 Nov 2020 12:29:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727221AbgKBR3f (ORCPT ); Mon, 2 Nov 2020 12:29:35 -0500 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58D41C0617A6 for ; Mon, 2 Nov 2020 09:29:35 -0800 (PST) Received: by mail-pf1-x444.google.com with SMTP id 72so4998161pfv.7 for ; Mon, 02 Nov 2020 09:29:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=p/DEdqfzjHqREFiiQ64DzLAqMoklspJdVfF8M1QhzKo=; b=IlK8VBmv+2S4zFzKyOyhA5i2aI+QNJOQiCtjAsPuDj0QKs+j/LCVO+nUPRyqryqFFB 6zvVk9hjXuOWgnyNlZEHbdKQcNnoW4WKNdocORFPgcUNSU8n0BH9Kdn7j3IRrGrBo4IM Xa8h1LFCHeiovv41XVGiHSRZL9yNkA0OVcys5Fz3396NLUTgMeejL+9/DoKi/7j9Sn47 w6lBu7XMlIatXT8139sFwH3yLJ9pCSPvIqn7YnzuXPezAh5x40vm1HB310nhZu/7VqLW QN/fwVqwiyfiSENWEgFaWXOPUKty5KVis5vhxeV2l7AdkcGNTp4IPovC4+L6ahyAnYHE 4dLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=p/DEdqfzjHqREFiiQ64DzLAqMoklspJdVfF8M1QhzKo=; b=RrzCN09lmWPsGptvqUh3NjY7gG7JvPEMLbud5i1ANVOxFmeS/wEMdEVSpsTAjmlhQb h/rrB3ZK+My+lU2w10Zxg7I5xwIn/kAxvSz5vCSSq3Oy1rCsT9GeTk3A+TzD/+ICePZ4 jwWOnXXB4RgHwHZLH/MpNWAY/e1OsbnM/aX7PD700DK2ZU5op8obkaq8jWt/Iah/y4nl MnSUsdGF27ajl4qBbgZy6C+rLkQcy8Gf+82v79Roq8esWHreVCwrvZ+4LAx/WwsxffBL DdrEpi54BVki2cw9HqIcAsHu2TLB6bMxnKPfsGfmn/3AVM/jyL79mCRjVdJUh3RjxKS0 Pwnw== X-Gm-Message-State: AOAM532cC4IKV4SzLwkRVpA6YmiAgpp2tfJyHc1bSkHDwlO+UchXGDiX 0DOOlDbjfxSL1spYsXeIrjYpCw== X-Google-Smtp-Source: ABdhPJx532e13/KUkQ+mVSrMvCQCWuokkeyADaha7+OUrMcyX0L0pOI5gUSS0AQrUNzkwrsRubANdg== X-Received: by 2002:a65:4b84:: with SMTP id t4mr13900931pgq.138.1604338174656; Mon, 02 Nov 2020 09:29:34 -0800 (PST) Received: from xps15 (S0106002369de4dac.cg.shawcable.net. [68.147.8.254]) by smtp.gmail.com with ESMTPSA id u14sm2904349pfc.87.2020.11.02.09.29.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Nov 2020 09:29:33 -0800 (PST) Date: Mon, 2 Nov 2020 10:29:31 -0700 From: Mathieu Poirier To: Linu Cherian Cc: Sasha Levin , linux-kernel@vger.kernel.org, stable@vger.kernel.org, Greg Kroah-Hartman , Coresight ML , linux-arm-kernel , Linu Cherian Subject: Re: [PATCH AUTOSEL 5.9 075/147] coresight: Make sysfs functional on topologies with per core sink Message-ID: <20201102172931.GC2749502@xps15> References: <20201026234905.1022767-1-sashal@kernel.org> <20201026234905.1022767-75-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 02, 2020 at 12:29:34PM +0530, Linu Cherian wrote: > Hi, > > Upstream commit, > > commit bb1860efc817c18fce4112f25f51043e44346d1b > Author: Linu Cherian > Date: Wed Sep 16 13:17:34 2020 -0600 > > > > > coresight: etm: perf: Sink selection using sysfs is deprecated > > > need to go along with this, else there will be build breakage. > This applies for 5.4, 5.8 and 5.9 > > Mathieu, could you please ACK ? Top posting makes it very difficult to follow what is going on. Based on your above comment Sasha has probably dropped this patch. The best way to proceed is likely to send a patchset to stable with all the required patches. Thanks, Mathieu > > Please let me know if i need to send the patch to > stable@vger.kernel.org separately. > Thanks. > > > > > On Tue, Oct 27, 2020 at 5:20 AM Sasha Levin wrote: > > > > From: Linu Cherian > > > > [ Upstream commit 6d578258b955fc8888e1bbd9a8fefe7b10065a84 ] > > > > Coresight driver assumes sink is common across all the ETMs, > > and tries to build a path between ETM and the first enabled > > sink found using bus based search. This breaks sysFS usage > > on implementations that has multiple per core sinks in > > enabled state. > > > > To fix this, coresight_get_enabled_sink API is updated to > > do a connection based search starting from the given source, > > instead of bus based search. > > With sink selection using sysfs depecrated for perf interface, > > provision for reset is removed as well in this API. > > > > Signed-off-by: Linu Cherian > > [Fixed indentation problem and removed obsolete comment] > > Signed-off-by: Mathieu Poirier > > Link: https://lore.kernel.org/r/20200916191737.4001561-15-mathieu.poirier@linaro.org > > Signed-off-by: Greg Kroah-Hartman > > Signed-off-by: Sasha Levin > > --- > > drivers/hwtracing/coresight/coresight-priv.h | 3 +- > > drivers/hwtracing/coresight/coresight.c | 62 +++++++++----------- > > 2 files changed, 29 insertions(+), 36 deletions(-) > > > > diff --git a/drivers/hwtracing/coresight/coresight-priv.h b/drivers/hwtracing/coresight/coresight-priv.h > > index f2dc625ea5856..5fe773c4d6cc5 100644 > > --- a/drivers/hwtracing/coresight/coresight-priv.h > > +++ b/drivers/hwtracing/coresight/coresight-priv.h > > @@ -148,7 +148,8 @@ static inline void coresight_write_reg_pair(void __iomem *addr, u64 val, > > void coresight_disable_path(struct list_head *path); > > int coresight_enable_path(struct list_head *path, u32 mode, void *sink_data); > > struct coresight_device *coresight_get_sink(struct list_head *path); > > -struct coresight_device *coresight_get_enabled_sink(bool reset); > > +struct coresight_device * > > +coresight_get_enabled_sink(struct coresight_device *source); > > struct coresight_device *coresight_get_sink_by_id(u32 id); > > struct coresight_device * > > coresight_find_default_sink(struct coresight_device *csdev); > > diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c > > index e9c90f2de34ac..bb4f9e0a5438d 100644 > > --- a/drivers/hwtracing/coresight/coresight.c > > +++ b/drivers/hwtracing/coresight/coresight.c > > @@ -540,50 +540,46 @@ struct coresight_device *coresight_get_sink(struct list_head *path) > > return csdev; > > } > > > > -static int coresight_enabled_sink(struct device *dev, const void *data) > > +static struct coresight_device * > > +coresight_find_enabled_sink(struct coresight_device *csdev) > > { > > - const bool *reset = data; > > - struct coresight_device *csdev = to_coresight_device(dev); > > + int i; > > + struct coresight_device *sink; > > > > if ((csdev->type == CORESIGHT_DEV_TYPE_SINK || > > csdev->type == CORESIGHT_DEV_TYPE_LINKSINK) && > > - csdev->activated) { > > - /* > > - * Now that we have a handle on the sink for this session, > > - * disable the sysFS "enable_sink" flag so that possible > > - * concurrent perf session that wish to use another sink don't > > - * trip on it. Doing so has no ramification for the current > > - * session. > > - */ > > - if (*reset) > > - csdev->activated = false; > > + csdev->activated) > > + return csdev; > > > > - return 1; > > + /* > > + * Recursively explore each port found on this element. > > + */ > > + for (i = 0; i < csdev->pdata->nr_outport; i++) { > > + struct coresight_device *child_dev; > > + > > + child_dev = csdev->pdata->conns[i].child_dev; > > + if (child_dev) > > + sink = coresight_find_enabled_sink(child_dev); > > + if (sink) > > + return sink; > > } > > > > - return 0; > > + return NULL; > > } > > > > /** > > - * coresight_get_enabled_sink - returns the first enabled sink found on the bus > > - * @deactivate: Whether the 'enable_sink' flag should be reset > > - * > > - * When operated from perf the deactivate parameter should be set to 'true'. > > - * That way the "enabled_sink" flag of the sink that was selected can be reset, > > - * allowing for other concurrent perf sessions to choose a different sink. > > + * coresight_get_enabled_sink - returns the first enabled sink using > > + * connection based search starting from the source reference > > * > > - * When operated from sysFS users have full control and as such the deactivate > > - * parameter should be set to 'false', hence mandating users to explicitly > > - * clear the flag. > > + * @source: Coresight source device reference > > */ > > -struct coresight_device *coresight_get_enabled_sink(bool deactivate) > > +struct coresight_device * > > +coresight_get_enabled_sink(struct coresight_device *source) > > { > > - struct device *dev = NULL; > > - > > - dev = bus_find_device(&coresight_bustype, NULL, &deactivate, > > - coresight_enabled_sink); > > + if (!source) > > + return NULL; > > > > - return dev ? to_coresight_device(dev) : NULL; > > + return coresight_find_enabled_sink(source); > > } > > > > static int coresight_sink_by_id(struct device *dev, const void *data) > > @@ -988,11 +984,7 @@ int coresight_enable(struct coresight_device *csdev) > > goto out; > > } > > > > - /* > > - * Search for a valid sink for this session but don't reset the > > - * "enable_sink" flag in sysFS. Users get to do that explicitly. > > - */ > > - sink = coresight_get_enabled_sink(false); > > + sink = coresight_get_enabled_sink(csdev); > > if (!sink) { > > ret = -EINVAL; > > goto out; > > -- > > 2.25.1 > > > > _______________________________________________ > > CoreSight mailing list > > CoreSight@lists.linaro.org > > https://lists.linaro.org/mailman/listinfo/coresight From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41168C00A89 for ; Mon, 2 Nov 2020 17:30:10 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9227F21D91 for ; Mon, 2 Nov 2020 17:30:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="nWbopRKh"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="IlK8VBmv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9227F21D91 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=PSZsyregm0M9Na0xZIXfja4vCeRTXKmRp21bzE6VU58=; b=nWbopRKhJVA2Rl/sJoquks/RL MsMhLIhkgUi22VzdPKC9huBhBa+wbdoVXCgnL6tIH19U81EvBs8MoLTqsqWehOxlaZ7b4ZvXH/QTH 0fAXLeiq/7WvHQhiIj1jn1exaZMlhVSyGULcPNU0e7xZxtB7elWhkwNDI+c9dnc0ncRfGlPnC1GR3 OAaYDff7yHwNtw15bQHuCezCraufp9uYFd2+pJJE5Q1vPvqtYepI93ksWuM+LX7dqdXNGenyXs9Th QgoUvaIp8F0zwkigNKdno2ijUHJePBawMuz7gBN2iYuwK2HZ3xuLGAEHgDw1DQdJb8jW4UE/V7AXl UUckUe+lg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kZdeJ-0000jJ-Gj; Mon, 02 Nov 2020 17:29:43 +0000 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kZdeD-0000gv-KA for linux-arm-kernel@lists.infradead.org; Mon, 02 Nov 2020 17:29:40 +0000 Received: by mail-pg1-x541.google.com with SMTP id g12so11373541pgm.8 for ; Mon, 02 Nov 2020 09:29:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=p/DEdqfzjHqREFiiQ64DzLAqMoklspJdVfF8M1QhzKo=; b=IlK8VBmv+2S4zFzKyOyhA5i2aI+QNJOQiCtjAsPuDj0QKs+j/LCVO+nUPRyqryqFFB 6zvVk9hjXuOWgnyNlZEHbdKQcNnoW4WKNdocORFPgcUNSU8n0BH9Kdn7j3IRrGrBo4IM Xa8h1LFCHeiovv41XVGiHSRZL9yNkA0OVcys5Fz3396NLUTgMeejL+9/DoKi/7j9Sn47 w6lBu7XMlIatXT8139sFwH3yLJ9pCSPvIqn7YnzuXPezAh5x40vm1HB310nhZu/7VqLW QN/fwVqwiyfiSENWEgFaWXOPUKty5KVis5vhxeV2l7AdkcGNTp4IPovC4+L6ahyAnYHE 4dLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=p/DEdqfzjHqREFiiQ64DzLAqMoklspJdVfF8M1QhzKo=; b=deAULvjmeuwPeGv2r1ZQrEZPAGI1fMDq+Ryi09VY8XJyoQoIAoK/MnTpeZtP1abs8S iJurAfcbS+tncQe8orpd8eIcBd8cpQq0h3A1sBgBVC/rhqcKw/ESQroOvMkDIkrf8RNG YK3z2iikY3lfgu6ayMehZZbZDlZ+SqOiZUzmQTwft/HLIXMr8V/mLqhfBkZfEhKFZCEc tBZgBNPtFPSm5WaResx1dirB3nPo1+fl3ZkTxyo4s85mqNye892PE79w/SfZX3P7mBti tSg/6vFVIoVc35tOOyXN3JrUhGdAjRKGO+wWxoodaHk+7kxkTXEjzdTXIRezEoy5jAKy y6qA== X-Gm-Message-State: AOAM532EPtBqdUA++mvBgfWfWMtSkUaHetplIn7i55VdQXMUrzumxeOS v9+81olBuK36kl5EV208SCxYYA== X-Google-Smtp-Source: ABdhPJx532e13/KUkQ+mVSrMvCQCWuokkeyADaha7+OUrMcyX0L0pOI5gUSS0AQrUNzkwrsRubANdg== X-Received: by 2002:a65:4b84:: with SMTP id t4mr13900931pgq.138.1604338174656; Mon, 02 Nov 2020 09:29:34 -0800 (PST) Received: from xps15 (S0106002369de4dac.cg.shawcable.net. [68.147.8.254]) by smtp.gmail.com with ESMTPSA id u14sm2904349pfc.87.2020.11.02.09.29.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Nov 2020 09:29:33 -0800 (PST) Date: Mon, 2 Nov 2020 10:29:31 -0700 From: Mathieu Poirier To: Linu Cherian Subject: Re: [PATCH AUTOSEL 5.9 075/147] coresight: Make sysfs functional on topologies with per core sink Message-ID: <20201102172931.GC2749502@xps15> References: <20201026234905.1022767-1-sashal@kernel.org> <20201026234905.1022767-75-sashal@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201102_122937_737071_A0138C9B X-CRM114-Status: GOOD ( 39.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sasha Levin , Greg Kroah-Hartman , Coresight ML , linux-kernel@vger.kernel.org, stable@vger.kernel.org, Linu Cherian , linux-arm-kernel Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Nov 02, 2020 at 12:29:34PM +0530, Linu Cherian wrote: > Hi, > > Upstream commit, > > commit bb1860efc817c18fce4112f25f51043e44346d1b > Author: Linu Cherian > Date: Wed Sep 16 13:17:34 2020 -0600 > > > > > coresight: etm: perf: Sink selection using sysfs is deprecated > > > need to go along with this, else there will be build breakage. > This applies for 5.4, 5.8 and 5.9 > > Mathieu, could you please ACK ? Top posting makes it very difficult to follow what is going on. Based on your above comment Sasha has probably dropped this patch. The best way to proceed is likely to send a patchset to stable with all the required patches. Thanks, Mathieu > > Please let me know if i need to send the patch to > stable@vger.kernel.org separately. > Thanks. > > > > > On Tue, Oct 27, 2020 at 5:20 AM Sasha Levin wrote: > > > > From: Linu Cherian > > > > [ Upstream commit 6d578258b955fc8888e1bbd9a8fefe7b10065a84 ] > > > > Coresight driver assumes sink is common across all the ETMs, > > and tries to build a path between ETM and the first enabled > > sink found using bus based search. This breaks sysFS usage > > on implementations that has multiple per core sinks in > > enabled state. > > > > To fix this, coresight_get_enabled_sink API is updated to > > do a connection based search starting from the given source, > > instead of bus based search. > > With sink selection using sysfs depecrated for perf interface, > > provision for reset is removed as well in this API. > > > > Signed-off-by: Linu Cherian > > [Fixed indentation problem and removed obsolete comment] > > Signed-off-by: Mathieu Poirier > > Link: https://lore.kernel.org/r/20200916191737.4001561-15-mathieu.poirier@linaro.org > > Signed-off-by: Greg Kroah-Hartman > > Signed-off-by: Sasha Levin > > --- > > drivers/hwtracing/coresight/coresight-priv.h | 3 +- > > drivers/hwtracing/coresight/coresight.c | 62 +++++++++----------- > > 2 files changed, 29 insertions(+), 36 deletions(-) > > > > diff --git a/drivers/hwtracing/coresight/coresight-priv.h b/drivers/hwtracing/coresight/coresight-priv.h > > index f2dc625ea5856..5fe773c4d6cc5 100644 > > --- a/drivers/hwtracing/coresight/coresight-priv.h > > +++ b/drivers/hwtracing/coresight/coresight-priv.h > > @@ -148,7 +148,8 @@ static inline void coresight_write_reg_pair(void __iomem *addr, u64 val, > > void coresight_disable_path(struct list_head *path); > > int coresight_enable_path(struct list_head *path, u32 mode, void *sink_data); > > struct coresight_device *coresight_get_sink(struct list_head *path); > > -struct coresight_device *coresight_get_enabled_sink(bool reset); > > +struct coresight_device * > > +coresight_get_enabled_sink(struct coresight_device *source); > > struct coresight_device *coresight_get_sink_by_id(u32 id); > > struct coresight_device * > > coresight_find_default_sink(struct coresight_device *csdev); > > diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c > > index e9c90f2de34ac..bb4f9e0a5438d 100644 > > --- a/drivers/hwtracing/coresight/coresight.c > > +++ b/drivers/hwtracing/coresight/coresight.c > > @@ -540,50 +540,46 @@ struct coresight_device *coresight_get_sink(struct list_head *path) > > return csdev; > > } > > > > -static int coresight_enabled_sink(struct device *dev, const void *data) > > +static struct coresight_device * > > +coresight_find_enabled_sink(struct coresight_device *csdev) > > { > > - const bool *reset = data; > > - struct coresight_device *csdev = to_coresight_device(dev); > > + int i; > > + struct coresight_device *sink; > > > > if ((csdev->type == CORESIGHT_DEV_TYPE_SINK || > > csdev->type == CORESIGHT_DEV_TYPE_LINKSINK) && > > - csdev->activated) { > > - /* > > - * Now that we have a handle on the sink for this session, > > - * disable the sysFS "enable_sink" flag so that possible > > - * concurrent perf session that wish to use another sink don't > > - * trip on it. Doing so has no ramification for the current > > - * session. > > - */ > > - if (*reset) > > - csdev->activated = false; > > + csdev->activated) > > + return csdev; > > > > - return 1; > > + /* > > + * Recursively explore each port found on this element. > > + */ > > + for (i = 0; i < csdev->pdata->nr_outport; i++) { > > + struct coresight_device *child_dev; > > + > > + child_dev = csdev->pdata->conns[i].child_dev; > > + if (child_dev) > > + sink = coresight_find_enabled_sink(child_dev); > > + if (sink) > > + return sink; > > } > > > > - return 0; > > + return NULL; > > } > > > > /** > > - * coresight_get_enabled_sink - returns the first enabled sink found on the bus > > - * @deactivate: Whether the 'enable_sink' flag should be reset > > - * > > - * When operated from perf the deactivate parameter should be set to 'true'. > > - * That way the "enabled_sink" flag of the sink that was selected can be reset, > > - * allowing for other concurrent perf sessions to choose a different sink. > > + * coresight_get_enabled_sink - returns the first enabled sink using > > + * connection based search starting from the source reference > > * > > - * When operated from sysFS users have full control and as such the deactivate > > - * parameter should be set to 'false', hence mandating users to explicitly > > - * clear the flag. > > + * @source: Coresight source device reference > > */ > > -struct coresight_device *coresight_get_enabled_sink(bool deactivate) > > +struct coresight_device * > > +coresight_get_enabled_sink(struct coresight_device *source) > > { > > - struct device *dev = NULL; > > - > > - dev = bus_find_device(&coresight_bustype, NULL, &deactivate, > > - coresight_enabled_sink); > > + if (!source) > > + return NULL; > > > > - return dev ? to_coresight_device(dev) : NULL; > > + return coresight_find_enabled_sink(source); > > } > > > > static int coresight_sink_by_id(struct device *dev, const void *data) > > @@ -988,11 +984,7 @@ int coresight_enable(struct coresight_device *csdev) > > goto out; > > } > > > > - /* > > - * Search for a valid sink for this session but don't reset the > > - * "enable_sink" flag in sysFS. Users get to do that explicitly. > > - */ > > - sink = coresight_get_enabled_sink(false); > > + sink = coresight_get_enabled_sink(csdev); > > if (!sink) { > > ret = -EINVAL; > > goto out; > > -- > > 2.25.1 > > > > _______________________________________________ > > CoreSight mailing list > > CoreSight@lists.linaro.org > > https://lists.linaro.org/mailman/listinfo/coresight _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel