Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp3099956pxx; Sun, 1 Nov 2020 23:01:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJyLI+PyscHLPcrBFMbTA/9wYh3/V765YLkAK/ZLsd9oW9SoBfDK9zv1c11eHCuX+itaeZjj X-Received: by 2002:a05:6402:384:: with SMTP id o4mr15179733edv.387.1604300499244; Sun, 01 Nov 2020 23:01:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604300499; cv=none; d=google.com; s=arc-20160816; b=RNRIBOOwvf3leiEvQOwYkhRjrCi6/FCcXVTUSLLCF+kcHfD0G08rSN/myDSHXeLyEZ pJa96j4IxnyFTlPGa0voVY8YQYCfS+Ubd/S148km6+4gnaTpk7s6I20XXIvgmM97wyuV vFkq4K9g10Z5tZcwcGZ6ldzH1opF2kbzHvo5BJZmi8duc0zy+vyAEoISstXpzn84+da7 VIIrrB2oftvmBlY/b/3GpjS0v3iCO6X2BN47YJmXuDTadrKvD8p2BOScTEt21+8tIx7+ fTGcAc7+5Qj09bz08HgPzs+Lb3w5eohAVlqd/dPG9gMhp/0MMIP1fHCarGMec98wwCs5 06IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=680jJYtj0dinYltk97SujQf+zsOPEEe3d/I6WUB2CxU=; b=mPg4jOTdg9/SzhmcMRzQpdqCKATbUUfm8Re/hrzgwhOjtc+DlOzPNQNU+pzu4y/bU7 dEVFaZy3qKXvYD3yDmH2U2nZxeT7v7LuFFsSBv0W5y5vRruyKaOngmcegShtcCyNfDhd Dj3ApVKi1Df3Qkxc1zUSVx93tverbBv6zFcVfOUak+EemddSXD6cxFpq5Rgw8GR2R0pd ZUgO0m9EBNpjykGYZx7vyPn2nLQ3/RUZsTJmJ6pvy21Rs7wbI9+pUJSFvGsZX8ktCtva Wm+Pi9j4cVlaONHL9ArRqz2arnVUU3oqW2S4sq3AHLAASU1Ujm/xv6njQf/F1I8N4zuM C0yA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=tR3CjwwU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id oz19si5484092ejb.738.2020.11.01.23.01.16; Sun, 01 Nov 2020 23:01:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=tR3CjwwU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727894AbgKBG7u (ORCPT + 99 others); Mon, 2 Nov 2020 01:59:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727743AbgKBG7t (ORCPT ); Mon, 2 Nov 2020 01:59:49 -0500 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6512C0617A6; Sun, 1 Nov 2020 22:59:47 -0800 (PST) Received: by mail-lj1-x242.google.com with SMTP id d24so13792298ljg.10; Sun, 01 Nov 2020 22:59:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=680jJYtj0dinYltk97SujQf+zsOPEEe3d/I6WUB2CxU=; b=tR3CjwwUyLuJDBD9Fv8+rDJR1VDLKhy6gy+RkLEosXGXYnYPAYg4jqN8pdukj9UC01 /lKvQiOa2KjxuEva4vfmOemUQQ0sAaC1WaAuLw+v7cefkMNQTDIoARjrS4eIZ9tMSQC+ /cvCDs51anO/K+fKGSjHRkP6iWeEQVNs5WWfhyIy8YWMPxcJMLUj3GWZ7imzyOHWqwtu Y9XVKzOE4exUr6nHNItzcpSyl1R9qaGRn6RIPbH0/tV/1/eIkE3joda2i5d4sWcY9o2T asNwGDZgqbvbZEOIM5wksjzz9TiOfIYQ4IMThWcZiOzOJzEEhBnZMLiBOq3DLna5EOHw SVPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=680jJYtj0dinYltk97SujQf+zsOPEEe3d/I6WUB2CxU=; b=poxiAidZBsw3G/z0IZ31G+ntRj1qaEzoH1++Y1wuV34b+KVX1K51L93v62Rhf6MTjC LIHXz0kxfsm3AVkvZRquMwfepRQAcGdmy9uR+okpTa/W0M5/svUxIxraItShWCqXTHbj vGAl7QQ/Tbvg0YyqpOefSOBs8tWqC55i+4YGCk6iDNYLXlCxd0BFvICIK4ZgEdytwfuv HvAEzIv2ieLt77izfcX4k/OabvAXeqr1nVjc54MGcoHBkCjoqho0JF6zxcujqIAQBoWi qj6wVTFVWtFGNLJOXsXbn3dNaf21BEPDhzlPKCd6xFa5sHoZRYyUMJTp15GPmjjuAwTB q2/g== X-Gm-Message-State: AOAM533kNgBz84KZ18Id4l9TYSaexXhS6EaluP4S50M97nweSvWqseE9 9H7Gq/n131j2cb5XskE+HP7cJFoa/lHt+qB942s1t6y9Mhg= X-Received: by 2002:a2e:7a0a:: with SMTP id v10mr6454589ljc.13.1604300386422; Sun, 01 Nov 2020 22:59:46 -0800 (PST) MIME-Version: 1.0 References: <20201026234905.1022767-1-sashal@kernel.org> <20201026234905.1022767-75-sashal@kernel.org> In-Reply-To: <20201026234905.1022767-75-sashal@kernel.org> From: Linu Cherian Date: Mon, 2 Nov 2020 12:29:34 +0530 Message-ID: Subject: Re: [PATCH AUTOSEL 5.9 075/147] coresight: Make sysfs functional on topologies with per core sink To: Sasha Levin Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, Greg Kroah-Hartman , Coresight ML , linux-arm-kernel , Linu Cherian Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 ? 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