From patchwork Fri Nov 1 13:00:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georgi Djakov X-Patchwork-Id: 178303 Delivered-To: patch@linaro.org Received: by 2002:a92:409a:0:0:0:0:0 with SMTP id d26csp453671ill; Fri, 1 Nov 2019 06:00:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzafw4UXz6MhqR2yZTngZ8TZHSqnOwt1OpH7Kq3GM/6rIhTkafEt3Ahw495QfYQoJZBx5Oi X-Received: by 2002:a05:6402:60d:: with SMTP id n13mr12395586edv.218.1572613244913; Fri, 01 Nov 2019 06:00:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572613244; cv=none; d=google.com; s=arc-20160816; b=gbDTp2gKQhSLblNUcnUzBMf3CGLJIQex0uSgPue2TlUI/sdXweiT/sNJGjvmeATkkQ jgUdLizwCVwAfJIs0uDVh68Nhgp3YGI57Bn9UEXvhnlSIdlNq/qGNpujBbNYFNp37L2G 6qcgadEzc5+Ab624XR+zLwYVs16G/t7//YGBl4zxKRgEkQWBZL1hn+DxaxXqpZB1Isdu lQB70Z/GOpnLEKXZcVelhxb+FBMEB1A7Q2eRgKS+Yncm90ghSHsfUilyy4NAiiQwfGoG y/yjyCcoj0A3D89nSS3sP3cQ+9pK83TBGrKarblantd8fhuPUq6mn0LuK7E5tS3MoveP qcVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7ux6o8Ncrgfjd9hT9inKPay1u+1v9WsFB/qk1kBdey4=; b=rxyC410lu1J6L0KFiL0YRddktOPrdRJkuZDCVJw2aS6UKV7rOhWwbRWIewlJVK6Q8X ymZzI3OIrfSKS5Jh1EBgEVDM0HrzBZgWo2gb5mf7Ns10yLQm4T5URAbQUU4/XMeo5oKz 7jsN0JBSY30MJQhrsmMZmw75m8z2Z00CjL9v67VCbfhrKbEEzKpjw1+XttVUiPB7ZCAA X5GTveNwSQfKHW0FwK5CLJXBS+DQGU5akNhAeTv4VtOKNn9eAdrdUijyGCiibIJIodMK tc694B9RJPYlVyv07gUwC8EBgDN5z8iLR6kcMISdCyfAoEu6pWVICRNIUJgJU1ZfByIq rJrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CTKLIytn; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i17si6301120eja.138.2019.11.01.06.00.44; Fri, 01 Nov 2019 06:00:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CTKLIytn; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726953AbfKANAl (ORCPT + 10 others); Fri, 1 Nov 2019 09:00:41 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:35392 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726939AbfKANAk (ORCPT ); Fri, 1 Nov 2019 09:00:40 -0400 Received: by mail-wm1-f68.google.com with SMTP id 8so1989882wmo.0 for ; Fri, 01 Nov 2019 06:00:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7ux6o8Ncrgfjd9hT9inKPay1u+1v9WsFB/qk1kBdey4=; b=CTKLIytn7ZTjITu7BzPyvUo9TrjzAxCK7D9g0LWLpfABh3mg3wOEt2dDeKYe3NC5K3 NDfD8U9F0Vc9h3bulWoAp8VdhDmNvDasPBFq3y2ENx9dC0ZpxuYi1OWuq+CVrFjetyj4 S6oLIS5rxMNIUGK9h1Noo0i1G4NAE8ZC8A/BoJJAl03Umjl8w3RWQCvW6T8tjVeHf7Lw ehGkVwo8laANr6Ilbmt+scU0l40+hY6LQ1vB4++/iaUb+H12OdoRfAQYvYAyi0xEJy6s vst3FbrJ+lD7d21A07SwpYnLXz09JHNbWyXn2spBIGM8C4WApvkB+F43M02X06oT9mZy ojaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7ux6o8Ncrgfjd9hT9inKPay1u+1v9WsFB/qk1kBdey4=; b=Rb42bmcxxrmFEDzjHdgB5X84HsM3pNTnZWzXF/mUkdel6HVo+ROHB6tqHzeM3SPTLq xfsTlmbJTrUSCsqNUqU8ATv9i1TVcES+gE59CzU0ixklVRGgLwpxXwFGTbHCANDSd2y7 4lEgiyBzMcWs5t7wAMNz7DoUoEgyzYFAeINdSLF+lov7YCDFNxUMhtjLsbKcDvDO0TBv oxcnGM55ih5yiU+45/zZsFb+oqTZaSg+e1MouUe2o7jDqpQQa4QaQJmjf5yINBPPQGyX ZEgZiKO2WRnxIk76k8zi97jqrrdsggoYml3dd1d19Oa6fPbpLpJzaBUnG2N1UozWyYJa i4wQ== X-Gm-Message-State: APjAAAUaYUQzEs++9u/8LwmWTRf/ac4XJHU8npLnDojOxaAvWAjja5UB NT4Z7zOz6Y9KZEYK7DOLVqU497bFwGE= X-Received: by 2002:a1c:c90c:: with SMTP id f12mr9719141wmb.97.1572613237769; Fri, 01 Nov 2019 06:00:37 -0700 (PDT) Received: from localhost.localdomain ([212.45.67.2]) by smtp.googlemail.com with ESMTPSA id x7sm14208476wrg.63.2019.11.01.06.00.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Nov 2019 06:00:36 -0700 (PDT) From: Georgi Djakov To: linux-pm@vger.kernel.org, rostedt@goodmis.org, mingo@redhat.com Cc: bjorn.andersson@linaro.org, vincent.guittot@linaro.org, daidavid1@codeaurora.org, okukatla@codeaurora.org, evgreen@chromium.org, mka@chromium.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Georgi Djakov Subject: [PATCH v2 3/3] interconnect: Add basic tracepoints Date: Fri, 1 Nov 2019 15:00:31 +0200 Message-Id: <20191101130031.27996-4-georgi.djakov@linaro.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191101130031.27996-1-georgi.djakov@linaro.org> References: <20191101130031.27996-1-georgi.djakov@linaro.org> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The tracepoints can help with understanding the system behavior of a given interconnect path when the consumer drivers change their bandwidth demands. This might be interesting when we want to monitor the requested interconnect bandwidth for each client driver. The paths may share the same nodes and this will help to understand "who and when is requesting what". All this is useful for subsystem drivers developers and may also provide hints when optimizing the power and performance profile of the system. Signed-off-by: Georgi Djakov --- MAINTAINERS | 1 + drivers/interconnect/core.c | 7 +++ include/trace/events/interconnect.h | 81 +++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 include/trace/events/interconnect.h diff --git a/MAINTAINERS b/MAINTAINERS index a69e6db80c79..16f28fa515f2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8522,6 +8522,7 @@ F: drivers/interconnect/ F: include/dt-bindings/interconnect/ F: include/linux/interconnect-provider.h F: include/linux/interconnect.h +F: include/trace/events/interconnect.h INVENSENSE MPU-3050 GYROSCOPE DRIVER M: Linus Walleij diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c index df44ef713db5..15e11e22ddf7 100644 --- a/drivers/interconnect/core.c +++ b/drivers/interconnect/core.c @@ -26,6 +26,9 @@ static LIST_HEAD(icc_providers); static DEFINE_MUTEX(icc_lock); static struct dentry *icc_debugfs_dir; +#define CREATE_TRACE_POINTS +#include + static void icc_summary_show_one(struct seq_file *s, struct icc_node *n) { if (!n) @@ -435,6 +438,8 @@ int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw) /* aggregate requests for this node */ aggregate_requests(node); + + trace_icc_set_bw(path, node, i, avg_bw, peak_bw); } ret = apply_constraints(path); @@ -453,6 +458,8 @@ int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw) mutex_unlock(&icc_lock); + trace_icc_set_bw_end(path, ret); + return ret; } EXPORT_SYMBOL_GPL(icc_set_bw); diff --git a/include/trace/events/interconnect.h b/include/trace/events/interconnect.h new file mode 100644 index 000000000000..64b646aa7bd3 --- /dev/null +++ b/include/trace/events/interconnect.h @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2019, Linaro Ltd. + * Author: Georgi Djakov + */ + +#if !defined(_TRACE_INTERCONNECT_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_INTERCONNECT_H + +#include + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM interconnect + +#include "../../../drivers/interconnect/internal.h" + +TRACE_EVENT(icc_set_bw, + + TP_PROTO(struct icc_path *p, struct icc_node *n, int i, + u32 avg_bw, u32 peak_bw), + + TP_ARGS(p, n, i, avg_bw, peak_bw), + + TP_STRUCT__entry( + __string(path_name, p->name) + __string(dev, dev_name(p->reqs[i].dev)) + __string(node_name, n->name) + __field(u32, avg_bw) + __field(u32, peak_bw) + __field(u32, node_avg_bw) + __field(u32, node_peak_bw) + ), + + TP_fast_assign( + __assign_str(path_name, p->name); + __assign_str(dev, dev_name(p->reqs[i].dev)); + __assign_str(node_name, n->name); + __entry->avg_bw = avg_bw; + __entry->peak_bw = peak_bw; + __entry->node_avg_bw = n->avg_bw; + __entry->node_peak_bw = n->peak_bw; + ), + + TP_printk("path=%s dev=%s node=%s avg_bw=%u peak_bw=%u agg_avg=%u agg_peak=%u", + __get_str(path_name), + __get_str(dev), + __get_str(node_name), + __entry->avg_bw, + __entry->peak_bw, + __entry->node_avg_bw, + __entry->node_peak_bw) +); + +TRACE_EVENT(icc_set_bw_end, + + TP_PROTO(struct icc_path *p, int ret), + + TP_ARGS(p, ret), + + TP_STRUCT__entry( + __string(path_name, p->name) + __string(dev, dev_name(p->reqs[0].dev)) + __field(int, ret) + ), + + TP_fast_assign( + __assign_str(path_name, p->name); + __assign_str(dev, dev_name(p->reqs[0].dev)); + __entry->ret = ret; + ), + + TP_printk("path=%s dev=%s ret=%d", + __get_str(path_name), + __get_str(dev), + __entry->ret) +); + +#endif /* _TRACE_INTERCONNECT_H */ + +/* This part must be outside protection */ +#include