Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5698689rwl; Tue, 11 Apr 2023 08:49:26 -0700 (PDT) X-Google-Smtp-Source: AKy350bJt9bRvHgJnUoUU0or2WTqNa6Srg5DKG9p9tUva8Ad1wR9jq+2PlcEjllf31Vd5b1D4FFA X-Received: by 2002:a05:6a20:6014:b0:db:f682:65ed with SMTP id r20-20020a056a20601400b000dbf68265edmr15453037pza.61.1681228166369; Tue, 11 Apr 2023 08:49:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681228166; cv=none; d=google.com; s=arc-20160816; b=pKFe3JPNApvmAO4heB9DWlJpNCW1ulxEU4i5koV8jeA9r0GlwBoMjf3iokmvBzZ3sM sfImrP3cmOJ5rBWu1scot2mWxCdZrPQw7iOLBMP9j4IEVzOZPD2AL005uNFU/znzCI7B SKQZtL0wgVXXdNUF/oNNLk9tvsWpqMqwWnTImS1M2xDoQSTFHnqQLfANe+xhh+QzsKtZ kMK22A7h+X7jUhnIbVWlmfJdN6SaIGHTkg5mQhZjBCQNCYPkaXZbH0PWutPMxAafLhb2 UrfOhiQPUH8AyoOJ8qe5aUfYDesKMD7xALM3jBgIRyK4xNvuHNmZNfq2VWVix9ERlNwA 5NHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=PotHTiTns43Lz5riVxiJIGGucWg1Z0EdIdFjfkLAeYo=; b=vN91PO7cVib4VL2yEO3wvPXNL0Y5tz9Do8MO/+7ftva+nJ2VPIrMo2J4sVofaa0BlZ pzDvrUf3EDJBQSSWJ1S8uTPEFbYekSahVstctcukB8cmjCa6XXep+WsXKZx2oyzV20s8 OlzWjhjgpFd+z8SdmTxpE2OG7ejIzqq02uQiJJsTEqeREwBhNr3/LqHpVBQmwB7iLT5k uzk7KKJvWN1qzU7tTQksbeJyeT6U3aTbvI4Rw9I0OVc2DHtjCcYDjjpjejsB7zYvgz58 ywqGuWYlmwyG2JMSDjNiU226+DS33QkogrWN3eI6EkRrF6HyK+xTCUhQp7j+4mkSBStH ylAg== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y76-20020a62644f000000b0062e14211e54si447133pfb.240.2023.04.11.08.49.14; Tue, 11 Apr 2023 08:49:26 -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 S230111AbjDKPjf (ORCPT + 99 others); Tue, 11 Apr 2023 11:39:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229437AbjDKPjf (ORCPT ); Tue, 11 Apr 2023 11:39:35 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B601D110; Tue, 11 Apr 2023 08:39:33 -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 93718D75; Tue, 11 Apr 2023 08:40:17 -0700 (PDT) Received: from [10.57.20.231] (unknown [10.57.20.231]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DDE873F73F; Tue, 11 Apr 2023 08:39:29 -0700 (PDT) Message-ID: <9994acf8-e0bc-55ce-9012-e36ef3b8ddab@arm.com> Date: Tue, 11 Apr 2023 17:39:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH 05/17] trace: energy_model: Add trace event for EM runtime modifications Content-Language: en-US To: Lukasz Luba , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rafael@kernel.org Cc: 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, ionela.voinescu@arm.com, rostedt@goodmis.org, mhiramat@kernel.org References: <20230314103357.26010-1-lukasz.luba@arm.com> <20230314103357.26010-6-lukasz.luba@arm.com> From: Pierre Gondois In-Reply-To: <20230314103357.26010-6-lukasz.luba@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.5 required=5.0 tests=NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=unavailable 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 Hello Lukasz, Just a suggestion, maybe it would be good to trace the CPUs affected by the modification. It is possible to retrieve this information by going to /sys/kernel/debug/energy_model/xxx/cpus, but might be simpler when parsing a trace. Regards, Pierre On 3/14/23 11:33, Lukasz Luba wrote: > 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.