From patchwork Tue Mar 14 10:33:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Luba X-Patchwork-Id: 69481 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp1678503wrd; Tue, 14 Mar 2023 03:38:34 -0700 (PDT) X-Google-Smtp-Source: AK7set9/6h2qesoi97wb13lnkRy7rxbycnFJ5euy29gRZYKrKi8TrwDQvA5/E7zgr6ZVzxXaW293 X-Received: by 2002:aa7:9568:0:b0:623:258:1446 with SMTP id x8-20020aa79568000000b0062302581446mr7568446pfq.15.1678790314084; Tue, 14 Mar 2023 03:38:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678790314; cv=none; d=google.com; s=arc-20160816; b=NiAkK7fEiUyU9e+9tD6nrbQmrwO8kyQThmsEwgSqIEItmxGMZruBEUXuqmyEjwyXiY TOLpjJtCZDenEOOJ8YqI0Fig5IX4KYadwsNjMF2CB5GoXj73HljFlBwHyXgVC3adEzKy OOn5/Fz1LADpdow8zOew+r9YmwUurTcA+wgNID6v8knUaUYwIPFQMlZNIfyv+L+5U78F C4ycoaQ2bshDnQwgGSuCUtH+dNZJKr3s0SYgEZFcwhBDS3XwE7hJCMiDLSaH/E1exFOz TCEqrsNKwCPnNZpQ8DZBe8Jt6fJ3A7ZHuWAbYjK0nCr2GqBNc8cU9ygAf25v+cm+qR2O SEww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=3Hxdglakj/pkjvCiB/TJmaUxHXFhjzMtR3aFxtOehqM=; b=fz1JYEXekHcy8c3Nv+v21HwnaB8fderabK8d083+hPWHAJvLB8xwom5bnKV5MyFQBS radJws9Vb/3eC4CNLcrKuXdXzCNzjdJfMrMldp6u3JkPHxdoHlMuwc6i15bjWB+qT+i5 J4rXrhtOVCZAjJ//U1yyTTLrv7oTXG2xWEmi4KdX7afJ9l0gktjWMT5bhgWCqzC/OjpD NEeNnjR2CyzIFMgQHS9DKWedPnRns6rPBANtHKIeVhQaNopch3tL0tJ1edB+5Baffv6H lHav5AoyaGUL30YEuf0TI61NMzwPhkAhgZnv2qOh4BN2CXxkOJjdsr9e9WVkIJhlRJ17 b6wg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x8-20020aa79568000000b00624de0ad130si1892502pfq.276.2023.03.14.03.38.21; Tue, 14 Mar 2023 03:38:34 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231207AbjCNKgR (ORCPT + 99 others); Tue, 14 Mar 2023 06:36:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229977AbjCNKfw (ORCPT ); Tue, 14 Mar 2023 06:35:52 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3F00C1B3; Tue, 14 Mar 2023 03:35:14 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F1EF5168F; Tue, 14 Mar 2023 03:35:12 -0700 (PDT) Received: from e123648.arm.com (unknown [10.57.19.101]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 7C7E33F71A; Tue, 14 Mar 2023 03:34:26 -0700 (PDT) From: Lukasz Luba To: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rafael@kernel.org Cc: lukasz.luba@arm.com, dietmar.eggemann@arm.com, rui.zhang@intel.com, amit.kucheria@verdurent.com, amit.kachhap@gmail.com, daniel.lezcano@linaro.org, viresh.kumar@linaro.org, len.brown@intel.com, pavel@ucw.cz, Pierre.Gondois@arm.com, ionela.voinescu@arm.com, rostedt@goodmis.org, mhiramat@kernel.org Subject: [PATCH 05/17] trace: energy_model: Add trace event for EM runtime modifications Date: Tue, 14 Mar 2023 10:33:45 +0000 Message-Id: <20230314103357.26010-6-lukasz.luba@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230314103357.26010-1-lukasz.luba@arm.com> References: <20230314103357.26010-1-lukasz.luba@arm.com> X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE 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?1760339232440894597?= X-GMAIL-MSGID: =?utf-8?q?1760339232440894597?= The Energy Model (EM) supports runtime modifications. Track the changes in order to do post-processing analysis. Don't use arrays in the trace event, since they are not properly supported by the tools. Instead use simple "unroll" with emitting the trace event for each EM array entry with proper ID information. The older debugging mechanism which was the simple debugfs which dumping the EM content won't be sufficient for the modifiable EM purpose. This trace event mechanism would address the needs. Signed-off-by: Lukasz Luba --- include/trace/events/energy_model.h | 46 +++++++++++++++++++++++++++++ kernel/power/energy_model.c | 3 ++ 2 files changed, 49 insertions(+) create mode 100644 include/trace/events/energy_model.h diff --git a/include/trace/events/energy_model.h b/include/trace/events/energy_model.h new file mode 100644 index 000000000000..f70babeb5dde --- /dev/null +++ b/include/trace/events/energy_model.h @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM energy_model + +#if !defined(_TRACE_ENERGY_MODEL_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ENERGY_MODEL_H + +#include + +TRACE_EVENT(em_perf_state, + TP_PROTO(const char *dev_name, int nr_perf_states, int state, + unsigned long ps_frequency, unsigned long ps_power, + unsigned long ps_cost, unsigned long ps_flags), + + TP_ARGS(dev_name, nr_perf_states, state, ps_frequency, ps_power, ps_cost, + ps_flags), + + TP_STRUCT__entry( + __string(name, dev_name) + __field(int, num_states) + __field(int, state) + __field(unsigned long, frequency) + __field(unsigned long, power) + __field(unsigned long, cost) + __field(unsigned long, flags) + ), + + TP_fast_assign( + __assign_str(name, dev_name); + __entry->num_states = nr_perf_states; + __entry->state = state; + __entry->frequency = ps_frequency; + __entry->power = ps_power; + __entry->cost = ps_cost; + __entry->flags = ps_flags; + ), + + TP_printk("dev_name=%s nr_perf_states=%d state=%d frequency=%lu power=%lu cost=%lu flags=%lu", + __get_str(name), __entry->num_states, __entry->state, + __entry->frequency, __entry->power, __entry->cost, + __entry->flags) +); +#endif /* _TRACE_ENERGY_MODEL_H */ + +/* This part must be outside protection */ +#include diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c index 937e98a71ed5..3b778743ba89 100644 --- a/kernel/power/energy_model.c +++ b/kernel/power/energy_model.c @@ -17,6 +17,9 @@ #include #include +#define CREATE_TRACE_POINTS +#include + /* * Mutex serializing the registrations of performance domains and letting * callbacks defined by drivers sleep.