From patchwork Thu Oct 12 18:23:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rafael J. Wysocki" X-Patchwork-Id: 733612 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92595C46CA1 for ; Thu, 12 Oct 2023 18:35:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442006AbjJLSfJ (ORCPT ); Thu, 12 Oct 2023 14:35:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35434 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1441952AbjJLSfI (ORCPT ); Thu, 12 Oct 2023 14:35:08 -0400 Received: from cloudserver094114.home.pl (cloudserver094114.home.pl [79.96.170.134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9B31CF; Thu, 12 Oct 2023 11:35:06 -0700 (PDT) Received: from localhost (127.0.0.1) (HELO v370.home.net.pl) by /usr/run/smtp (/usr/run/postfix/private/idea_relay_lmtp) via UNIX with SMTP (IdeaSmtpServer 5.2.0) id 272b597e78663fd7; Thu, 12 Oct 2023 20:35:05 +0200 Received: from kreacher.localnet (unknown [195.136.19.94]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by cloudserver094114.home.pl (Postfix) with ESMTPSA id 81206666870; Thu, 12 Oct 2023 20:35:04 +0200 (CEST) From: "Rafael J. Wysocki" To: Linux PM Cc: LKML , Daniel Lezcano , Srinivas Pandruvada , Zhang Rui , Lukasz Luba Subject: [PATCH v2 0/6] thermal: core: Pass trip pointers to governor .throttle() callbacks Date: Thu, 12 Oct 2023 20:23:43 +0200 Message-ID: <5734364.DvuYhMxLoT@kreacher> MIME-Version: 1.0 X-CLIENT-IP: 195.136.19.94 X-CLIENT-HOSTNAME: 195.136.19.94 X-VADE-SPAMSTATE: clean X-VADE-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvkedriedtgdduudeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecujffqoffgrffnpdggtffipffknecuuegrihhlohhuthemucduhedtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefhvfevufffkfgggfgtsehtufertddttdejnecuhfhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqnecuggftrfgrthhtvghrnhepgeffhfdujeelhfdtgeffkeetudfhtefhhfeiteethfekvefgvdfgfeeikeeigfehnecuffhomhgrihhnpehkvghrnhgvlhdrohhrghenucfkphepudelhedrudefiedrudelrdelgeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduleehrddufeeirdduledrleegpdhhvghlohepkhhrvggrtghhvghrrdhlohgtrghlnhgvthdpmhgrihhlfhhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqpdhnsggprhgtphhtthhopeeipdhrtghpthhtoheplhhinhhugidqphhmsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepuggrnhhivghlrdhlvgiitggrnhhosehlihhnrghrohdrohhrghdprhgtphhtthhopehsrhhinhhivhgrshdrphgrnhgu rhhuvhgruggrsehlihhnuhigrdhinhhtvghlrdgtohhmpdhrtghpthhtoheprhhuihdriihhrghnghesihhnthgvlhdrtghomhdprhgtphhtthhopehluhhkrghsiidrlhhusggrsegrrhhmrdgtohhm X-DCC--Metrics: v370.home.net.pl 1024; Body=6 Fuz1=6 Fuz2=6 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Hi All, This is a v2 of https://lore.kernel.org/linux-pm/13365827.uLZWGnKmhe@kreacher/ which only slightly updates 2 patches and adds some tags, so the cover letter below is still applicable: While working on https://lore.kernel.org/linux-pm/4846448.GXAFRqVoOG@kreacher/ I started to change thermal governors so as to reduce the usage of trip indices in them. At that time, I was concerned that they could not be replaced with trip pointers overall, because they were needed in certain situations (tracing, debug messages, userspace governor) and computing them whenever they were needed would be extra overhead with relatively weak justification. In the meantime, however, I realized that for a given trip pointer, it is actually trivial to compute the corresponding index: it is sufficient to subtract the start of the trips[] table in the thermal zone containing the trip from that trip pointer for this purpose. Patch [1/6] modifies thermal_zone_trip_id() in accordance with this observation. Now that the cost of computing a trip index for a given trip pointer and thermal zone is not a concern any more, the governors can be generally switched over to using trip pointers for representing trips. One of the things they need to do sometimes, though, is to iterate over trips in a given thermal zone (the core needs to do that too, of course) and for_each_thermal_trip() is somewhat inconvenient for this purpose, because it requires callback functions to be defined and in some cases new data types need to be introduced just in order to use it. For this reason, patch [2/6] adds a macro for iterating over trip points in a given thermal zone with the help of a trip pointer and changes for_each_thermal_trip() to use that macro internally. Patches [3-5/6] change individual governors to prepare them for using trip pointers everywhere for representing trips, except for the trip argument of the .throttle() callback and patch [6/6] finally changes the .throttle() callback definition so that it takes a trip pointer as the argument representing the trip. Please refer to the individual patch changelogs for details. Thanks!