From patchwork Tue Oct 18 13:56:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 4186 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp1981212wrs; Tue, 18 Oct 2022 07:11:21 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4gtuM+zjyfE7I6dDuBnQ5qoOp6YQINFin+fh1tx+9gxAGlLmVxxZUG4pyxBfS/TjXkKlDr X-Received: by 2002:a05:6402:220e:b0:458:b857:85b3 with SMTP id cq14-20020a056402220e00b00458b85785b3mr2882872edb.379.1666102281510; Tue, 18 Oct 2022 07:11:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666102281; cv=none; d=google.com; s=arc-20160816; b=Un+JQ3U6frXAiAViRQnOH2i/g55c7rCV+yzytEbdwQlgnLKrU2yuJRm7fLhdbVqwLq q+LmQ5soONicmlJtVgEdRwL76n62dJsGsfjq00BfyuTZj8Wnxn/9jb7bp2z32d5Gtexd rg5SZZlhm/IUMlVeMCX0FP+a3PFuvBShkJIiw056i6HDLKlcxI9eTB6ISi0bh7PlD3Yy mXL2iOfZ3yz5dZH221jbqvPfsVeYyEPXbvM5bNYYiUBWamcg3x5rBmb1Qb+5xFPmN2mj GwJ+FVZsXuIgKnr0l3yO7w8fEJeOySuWvF6l14jWQfiuSB7PyYf5jG6kct3Vm9xx4hcp raiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=fsnfoSKA6PqpPiyf9tFOCgSo+ftNuL4oCbpkCc9Xvls=; b=UmXPMBv1vjDI97hPEoanhT8QVsKtGFE3YAC7upx40xpUohzkPhvbJh71O2LZ9DbE8H 0yXpf46Juk0+xgCpYG7Ymi8Tsdsf+am+cTd9v1sgP/kvpYcIWYoy8IQXPJrJcQrpFKdo 02M4727smEK7mK055RZ1k4mtIeuKLg0ZEG/kH4UkIsEb/0gtOZIbS7KD99E4XTnyU8La bS5WPMcghmm6ul5Sxnf+zX3uDRUoz8ZdnA/MKLrrP7/6+eDiKzEpUK5qN4pLcMRIEa9Z P32zx8oeHdCDF4KvAOJ844W4eboREgzdrIvglITAxQ9w2OOo9HENCCq6otzPdDjlslX3 KctQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=O9J2Qrtd; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b="uKi/F2UJ"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hq38-20020a1709073f2600b0078bb4d5db86si11134748ejc.77.2022.10.18.07.10.51; Tue, 18 Oct 2022 07:11:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=O9J2Qrtd; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b="uKi/F2UJ"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229879AbiJRN4v (ORCPT + 99 others); Tue, 18 Oct 2022 09:56:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43764 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231277AbiJRN4s (ORCPT ); Tue, 18 Oct 2022 09:56:48 -0400 Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A671BA933; Tue, 18 Oct 2022 06:56:48 -0700 (PDT) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 4B148320025E; Tue, 18 Oct 2022 09:56:47 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Tue, 18 Oct 2022 09:56:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm3; t=1666101406; x= 1666187806; bh=fsnfoSKA6PqpPiyf9tFOCgSo+ftNuL4oCbpkCc9Xvls=; b=O 9J2QrtdWOwMskqlZIfsyAgC96ySS3/l4XDV1cugaa38mia1CNJ87c34hatIpZQa0 F41QR5T6xqlWOv5HTWmba2WILGh6H525OXIt94kftmNJqmZ61l4jqm3isZFi124z jTZOMAWDcFX7fRK8bh1nFN9/PQm1evPhH2Jclc9aodpDRk9tT02Efiq6nzAVoaQY jeEip7W6ZA7Ah4mZDYXoAIZZHGxRIJR6XOfnTDEopBvg9CwJH6C+IktVY7BQTfLQ IwOyTIwiYadXkEtayJt26FN0cQSy4ga6l1f6ElBVnNJw8wRfMu9RrQqaW+RVXxtn c0Nh3l6KgJjIMHwyfHMew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1666101406; x= 1666187806; bh=fsnfoSKA6PqpPiyf9tFOCgSo+ftNuL4oCbpkCc9Xvls=; b=u Ki/F2UJPey+RA+T8e3PolgiTr45mSbX1/e6QtcQjnnJUEnv1z9R0eXj25/So1+aB FK5EBRkEpBk8skQt2GNvKJgTaVvV5fGz09b4Zzkh5BXm3jSqBbMiyHV8emCGMkvd fM3vygxDmnxqAc6WwxPT52kioud94AYy6IbQixd0WIMLy8ThrXjV63/QbHw76sTK w8g0AyQtWIX1UTjAOquSKf6N/CkhhneHvRQdmQE1BHM5l30vRwP/4DaT+CAFMuVO Cz8kk8s8yk6Oxt78cS9QU7hmHI1N3Fn5w1/yGcagCQrnMsBcfLKmvqSiOLrNmSRn XeCWJ+VBVhEaaxD0Ec1tQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeelvddggeduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephfffufggtgfgkfhfjgfvvefosehtkeertdertdejnecuhfhrohhmpeforgig ihhmvgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrf grthhtvghrnhepudduudfhveejteefgedvffdvvedvjedugedukeejhedtlefhffevtefh jeeltdevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 18 Oct 2022 09:56:46 -0400 (EDT) From: Maxime Ripard Date: Tue, 18 Oct 2022 15:56:41 +0200 Subject: [PATCH 1/2] clk: Store clk_core for clk_rate_request MIME-Version: 1.0 Message-Id: <20221018-clk-rate-request-tracing-v1-1-6f3aa0b0b9de@cerno.tech> References: <20221018-clk-rate-request-tracing-v1-0-6f3aa0b0b9de@cerno.tech> In-Reply-To: <20221018-clk-rate-request-tracing-v1-0-6f3aa0b0b9de@cerno.tech> To: Stephen Boyd , Michael Turquette , Masami Hiramatsu , Steven Rostedt Cc: linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.11.0-dev-7da52 X-Developer-Signature: v=1; a=openpgp-sha256; l=1284; i=maxime@cerno.tech; h=from:subject:message-id; bh=AYGQC7GGn2o5RgdrGzjQcgRH3xJ2WggTZl8TnSrp+Kw=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMl+G2ZJvAwpzE3dVtNl4B64Ie1qIG+ZzyxLj37+w3Ol9ve8 a/XqKGVhEONikBVTZIkRNl8Sd2rW6042vnkwc1iZQIYwcHEKwEQyUhgZ/maZFTRPD81Ivhd3xFdceb rXgpCvfbddN537mLRjl5lKESPD1TlqL055S7ZoJXd/ZtuROuFO3jbhPIee58ybDd0Lwg/zAQA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747034865845512879?= X-GMAIL-MSGID: =?utf-8?q?1747034865845512879?= Signed-off-by: Maxime Ripard --- drivers/clk/clk.c | 1 + include/linux/clk-provider.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 11c41d987ff4..bc6f964cb676 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -1468,6 +1468,7 @@ static void clk_core_init_rate_req(struct clk_core * const core, if (!core) return; + req->core = core; req->rate = rate; clk_core_get_boundaries(core, &req->min_rate, &req->max_rate); diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 267cd06b54a0..842e72a5348f 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -44,6 +44,7 @@ struct dentry; * * Should be initialized by calling clk_hw_init_rate_request(). * + * @core: Pointer to the struct clk_core affected by this request * @rate: Requested clock rate. This field will be adjusted by * clock drivers according to hardware capabilities. * @min_rate: Minimum rate imposed by clk users. @@ -55,6 +56,7 @@ struct dentry; * */ struct clk_rate_request { + struct clk_core *core; unsigned long rate; unsigned long min_rate; unsigned long max_rate; From patchwork Tue Oct 18 13:56:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 4188 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp1981604wrs; Tue, 18 Oct 2022 07:12:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7/3du/qgOsOTRRjrOjHn65Nj8tU53iDF5qdo0SByKQYVhlc5S9PWLISfYYiaLn5Oxj6O6q X-Received: by 2002:a17:907:6d0d:b0:78d:f5a9:fe81 with SMTP id sa13-20020a1709076d0d00b0078df5a9fe81mr2624313ejc.628.1666102322229; Tue, 18 Oct 2022 07:12:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666102322; cv=none; d=google.com; s=arc-20160816; b=sURv37J3eXyGyZeIsUJpLbyHuwC6l2FK6/Dybt44jK8oYXpcFjIGdqsl4p38janRS7 2pBlkptM0HlpMBZyeyJqrcziITqhdsdZ2BXqNaffO/hnGVI89a9BBSGPlGzOpixk32ND 7eEp6I4UGU6m9apv1qFdmDgjFwxY7AMMoLW73paAlqGnCpfQ7QozSZCQ0ovRIq0g+pnw OgLMBoNslXIauApLCd5qog9LJRorP9KHDfcjaZ9+7KSl1yYXyiTdDHR676/kNnE8FmcN Oj3Ga9EvtrjEUEg1AATyzqCbAmsK6ZD+VEHsBW9fCOn6Wj0+yvaBPySdEdKrqE7EAOj7 5iNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :feedback-id:dkim-signature:dkim-signature; bh=lTFkOoPNy5YkswWbKm4XWBhCI/IUy0uNzHm95cxOg84=; b=darPiSd9G6JRZI3sWusy+XheTv9Hxd/35eUtIsxZO0Wf2fOuWBTFds1Cwq4m8twgCv WYoZJaW9akShOJ36wdLTtO/UfutJ7F3KiwBER6PNALpjeOY8VFveDpsyFMRAEJ1kPMGi vR73tSLxu3m2vcTOhkxv6Szym1bZ2sxaeibpg0YC8D9kApxGIqbgOaxOFd6nUPJiPTE4 IqtJqPtIYsfSdpDrnMuexJPKUg/NNBX42s8IWlYvH6AHHktxdXmGAYPRQJUTNunuEsX/ 0LCkZpw1qC8yy94tMGhr4jM6CRrNnH3c30jafb4rek4KJFAhxeMAtfCJBqOQr35gwhzg 1Wew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=ru6D59nt; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=M47x+8DV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s11-20020a056402014b00b0045ca331c2ebsi10262927edu.232.2022.10.18.07.11.35; Tue, 18 Oct 2022 07:12:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm3 header.b=ru6D59nt; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=M47x+8DV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231328AbiJRN47 (ORCPT + 99 others); Tue, 18 Oct 2022 09:56:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230378AbiJRN4x (ORCPT ); Tue, 18 Oct 2022 09:56:53 -0400 Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C211AD0189; Tue, 18 Oct 2022 06:56:51 -0700 (PDT) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 2B6F9320034E; Tue, 18 Oct 2022 09:56:50 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 18 Oct 2022 09:56:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm3; t=1666101409; x= 1666187809; bh=lTFkOoPNy5YkswWbKm4XWBhCI/IUy0uNzHm95cxOg84=; b=r u6D59ntsFAHj50dRkjBOP8gpaJD5soqeN2eV+GXOsBYRPuLe6JjuQWGa2HenDG7M 58fzQotzvQA9m31O+yeGEY/Q36pShusK10VdaJ2aYAHF5DtnlOjbdA+WnEaOVzIy 8zGeuJY56N1D8HyLlmqBUfLKrhoD9lpEXttj2vf02iyAMNp25lYTI6O6ByCHIBRq ra3dUm+1GNLeoZNqxFvuAfcyYg9I6w4PnG0jOE4ewkHEF/G79Sn1qbpoRHkWkedw MZsPvuurI3ct/kWa4534cTkcG/oOrhUBYmRUBXHblwle90zs8PBUD0wtG5iTgg+W zcrcuRAgfA5DWzRMQ7l+w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1666101409; x= 1666187809; bh=lTFkOoPNy5YkswWbKm4XWBhCI/IUy0uNzHm95cxOg84=; b=M 47x+8DVUJx2G+K68cZd16MqzWK2faVXinP4OaN9YlSXjoi7MD08CN/dRXmUwQZv1 8eFEJJQ9fwWo6IPAD5VaBJ43pzHxba9tUi5+rMegvp5nT5/2jdbyFwO035hdWSil YrGVYba2RslcI1unB0KJCi7Gx7VlQ21d6WGDKBBVEHwM8G7KrNu5Aasb8TRYXzub J4UA5Vi4Na/I3CfCEcByb5PaCb8qF0vqQrRlMNiscQUO/IfTPod6/r1UVAKRUp82 QMx2OpyTS5vb4Xm8rMj3tHxJxfTHivd2gwSLiCbN7vQI2Yes4YkIw6iZUWv1IMO3 13q7xrLP6ZnUl/JgjVdVA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeelvddggedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephfffufggtgfgkfhfjgfvvefosehtkeertdertdejnecuhfhrohhmpeforgig ihhmvgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrf grthhtvghrnhepudduudfhveejteefgedvffdvvedvjedugedukeejhedtlefhffevtefh jeeltdevnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 18 Oct 2022 09:56:49 -0400 (EDT) From: Maxime Ripard Date: Tue, 18 Oct 2022 15:56:42 +0200 Subject: [PATCH 2/2] clk: Add trace events for rate requests MIME-Version: 1.0 Message-Id: <20221018-clk-rate-request-tracing-v1-2-6f3aa0b0b9de@cerno.tech> References: <20221018-clk-rate-request-tracing-v1-0-6f3aa0b0b9de@cerno.tech> In-Reply-To: <20221018-clk-rate-request-tracing-v1-0-6f3aa0b0b9de@cerno.tech> To: Stephen Boyd , Michael Turquette , Masami Hiramatsu , Steven Rostedt Cc: linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.11.0-dev-7da52 X-Developer-Signature: v=1; a=openpgp-sha256; l=5614; i=maxime@cerno.tech; h=from:subject:message-id; bh=BkBIerSMdamyC64SYrDzkQInjQFkK6FdirzCXmlc5f4=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMl+G2Y168b/4sg92il058KHGQlu71hVfpiIyc6wcW2RlU1b NoW3o5SFQYyLQVZMkSVG2HxJ3KlZrzvZ+ObBzGFlAhnCwMUpABNR+MLIsMOfdf2KKYWK61gsX11vul fSmH3r+xRZU1mlHm3eiOvTNjEybDtSvY692nXFSt685AfGq2J8JocHOQda8VeGOs/mYFnLDgA= X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747034908716052662?= X-GMAIL-MSGID: =?utf-8?q?1747034908716052662?= It is currently fairly difficult to follow what clk_rate_request are issued, and how they have been modified once done. Indeed, there's multiple paths that can be taken, some functions are recursive and will just forward the request to its parent, etc. Adding a lot of debug prints is just not very convenient, so let's add trace events for the clock requests, one before they are submitted and one after they are returned. That way we can simply toggle the tracing on without modifying the kernel code and without affecting performances or the kernel logs too much. Signed-off-by: Maxime Ripard Reviewed-by: Steven Rostedt (Google) --- drivers/clk/clk.c | 31 +++++++++++++++++++++++++++++++ include/trace/events/clk.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index bc6f964cb676..343c50e7e214 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -603,10 +603,15 @@ int clk_mux_determine_rate_flags(struct clk_hw *hw, } clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate); + + trace_clk_rate_request_start(&parent_req); + ret = clk_core_round_rate_nolock(parent, &parent_req); if (ret) return ret; + trace_clk_rate_request_done(&parent_req); + best = parent_req.rate; } else if (parent) { best = clk_core_get_rate_nolock(parent); @@ -630,10 +635,15 @@ int clk_mux_determine_rate_flags(struct clk_hw *hw, struct clk_rate_request parent_req; clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate); + + trace_clk_rate_request_start(&parent_req); + ret = clk_core_round_rate_nolock(parent, &parent_req); if (ret) continue; + trace_clk_rate_request_done(&parent_req); + parent_rate = parent_req.rate; } else { parent_rate = clk_core_get_rate_nolock(parent); @@ -1551,10 +1561,15 @@ static int clk_core_round_rate_nolock(struct clk_core *core, struct clk_rate_request parent_req; clk_core_forward_rate_req(core, req, core->parent, &parent_req, req->rate); + + trace_clk_rate_request_start(&parent_req); + ret = clk_core_round_rate_nolock(core->parent, &parent_req); if (ret) return ret; + trace_clk_rate_request_done(&parent_req); + req->best_parent_rate = parent_req.rate; req->rate = parent_req.rate; @@ -1605,10 +1620,14 @@ unsigned long clk_hw_round_rate(struct clk_hw *hw, unsigned long rate) clk_core_init_rate_req(hw->core, &req, rate); + trace_clk_rate_request_start(&req); + ret = clk_core_round_rate_nolock(hw->core, &req); if (ret) return 0; + trace_clk_rate_request_done(&req); + return req.rate; } EXPORT_SYMBOL_GPL(clk_hw_round_rate); @@ -1637,8 +1656,12 @@ long clk_round_rate(struct clk *clk, unsigned long rate) clk_core_init_rate_req(clk->core, &req, rate); + trace_clk_rate_request_start(&req); + ret = clk_core_round_rate_nolock(clk->core, &req); + trace_clk_rate_request_done(&req); + if (clk->exclusive_count) clk_core_rate_protect(clk->core); @@ -2130,10 +2153,14 @@ static struct clk_core *clk_calc_new_rates(struct clk_core *core, clk_core_init_rate_req(core, &req, rate); + trace_clk_rate_request_start(&req); + ret = clk_core_determine_round_nolock(core, &req); if (ret < 0) return NULL; + trace_clk_rate_request_done(&req); + best_parent_rate = req.best_parent_rate; new_rate = req.rate; parent = req.best_parent_hw ? req.best_parent_hw->core : NULL; @@ -2329,8 +2356,12 @@ static unsigned long clk_core_req_round_rate_nolock(struct clk_core *core, clk_core_init_rate_req(core, &req, req_rate); + trace_clk_rate_request_start(&req); + ret = clk_core_round_rate_nolock(core, &req); + trace_clk_rate_request_done(&req); + /* restore the protection */ clk_core_rate_restore_protect(core, cnt); diff --git a/include/trace/events/clk.h b/include/trace/events/clk.h index e19edc63ee95..b19f5a549219 100644 --- a/include/trace/events/clk.h +++ b/include/trace/events/clk.h @@ -264,6 +264,49 @@ DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle_complete, TP_ARGS(core, duty) ); +DECLARE_EVENT_CLASS(clk_rate_request, + + TP_PROTO(struct clk_rate_request *req), + + TP_ARGS(req), + + TP_STRUCT__entry( + __string( name, req->core ? req->core->name : "none") + __field(unsigned long, min ) + __field(unsigned long, max ) + __string( pname, req->best_parent_hw ? clk_hw_get_name(req->best_parent_hw) : "none" ) + __field(unsigned long, prate ) + ), + + TP_fast_assign( + __assign_str(name, req->core ? req->core->name : "none"); + __assign_str(pname, req->best_parent_hw ? clk_hw_get_name(req->best_parent_hw) : "none"); + __entry->min = req->min_rate; + __entry->max = req->max_rate; + __entry->prate = req->best_parent_rate; + ), + + TP_printk("%s min %lu max %lu, parent %s (%lu)", __get_str(name), + (unsigned long)__entry->min, + (unsigned long)__entry->max, + __get_str(pname), + (unsigned long)__entry->prate) +); + +DEFINE_EVENT(clk_rate_request, clk_rate_request_start, + + TP_PROTO(struct clk_rate_request *req), + + TP_ARGS(req) +); + +DEFINE_EVENT(clk_rate_request, clk_rate_request_done, + + TP_PROTO(struct clk_rate_request *req), + + TP_ARGS(req) +); + #endif /* _TRACE_CLK_H */ /* This part must be outside protection */