From patchwork Mon Aug 12 13:50:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rafael J. Wysocki" X-Patchwork-Id: 818739 Received: from cloudserver094114.home.pl (cloudserver094114.home.pl [79.96.170.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9AD7153810; Mon, 12 Aug 2024 14:01:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.96.170.134 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723471266; cv=none; b=UvcDFlDGCqNl1JMYzfqIygolsLcQxrcPI5P/AjpB9blAE+O9ozsr7DfAb50SrnpTIKiUgyRBJuGgwmcleqBsHiYNUodKr9hUI14Ebke5Y7BYqzvp+eSon+JTDoBQ5FnIOT3wZzsurFUh+9ghoDWEe0fIOKT/XO6SAazr1nXg5gk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723471266; c=relaxed/simple; bh=SSXMu8X39GKssWyK5Yhq6CP3O+nWOSWLHIjgFXRUNAA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=KVRjtHPE6/CNs5o4maYBo/VaHxmOcUCXTZqhvKCMXyp9qFrevWcu0a5PJ6BTCmDEGzNmlwitUjt9mChYc7IAe26osur+nSOtkVvXComToIfI+61ENQImKdu4baLnmz8iVSj4hp5AM04O0+dyY2N9N14cBP7m1yDTgf/A3CRVO2o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rjwysocki.net; spf=pass smtp.mailfrom=rjwysocki.net; dkim=fail (2048-bit key) header.d=rjwysocki.net header.i=@rjwysocki.net header.b=VDecE5ha reason="signature verification failed"; arc=none smtp.client-ip=79.96.170.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rjwysocki.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rjwysocki.net Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=rjwysocki.net header.i=@rjwysocki.net header.b="VDecE5ha" 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 6.2.0) id 7d5e90ff59b1cf15; Mon, 12 Aug 2024 16:01:03 +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 85F796F0D6A; Mon, 12 Aug 2024 16:01:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rjwysocki.net; s=dkim; t=1723471263; bh=SSXMu8X39GKssWyK5Yhq6CP3O+nWOSWLHIjgFXRUNAA=; h=From:Subject:Date; b=VDecE5haL/KG3ZfVrGQ6wSuFfugYOM4PpUgYs9dvluUphXxoprq2fAH/ej+I2YNSo o/vMHGSuVRXGOo8AfSzPKnM2O9mA6d7E7e+MWjzfxIpnzthiVM+ZGjxEuaSkOkFiDv sSDw+gvC5u/YxeHUbq5uOWYF+72gM4btolvbN8Ac9BAC2jlLsEZyvnvOSf1czgeJKd MJpUhSxbkABAgHFvgPa+GZfZnB0cI5Y5XHEd+AACctK+AxlcoEnj+DPvP406KSWBKQ kl/OvbwWQcaz7yvxzKSDn9GMg3SFVPln4ksVRorVsHKdCUyq63IOJz+/5cfHhgyPVU 32/0FqScq9kgw== From: "Rafael J. Wysocki" To: Linux PM Cc: LKML , Daniel Lezcano , Lukasz Luba , Zhang Rui Subject: [PATCH v2 00/17] thermal: Rework binding cooling devices to trip points Date: Mon, 12 Aug 2024 15:50:15 +0200 Message-ID: <114901234.nniJfEyVGO@rjwysocki.net> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-CLIENT-IP: 195.136.19.94 X-CLIENT-HOSTNAME: 195.136.19.94 X-VADE-SPAMSTATE: spam:low X-VADE-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeftddruddttddgjedtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecujffqoffgrffnpdggtffipffknecuuegrihhlohhuthemucduhedtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenogfuphgrmhfkphculdeftddtmdenucfjughrpefhvfevufffkfgggfgtsehtufertddttdejnecuhfhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqnecuggftrfgrthhtvghrnhepgeffhfdujeelhfdtgeffkeetudfhtefhhfeiteethfekvefgvdfgfeeikeeigfehnecuffhomhgrihhnpehkvghrnhgvlhdrohhrghenucfkphepudelhedrudefiedrudelrdelgeenucfuphgrmhfkphepudelhedrudefiedrudelrdelgeenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepihhnvghtpeduleehrddufeeirdduledrleegpdhhvghlohepkhhrvggrtghhvghrrdhlohgtrghlnhgvthdpmhgrihhlfhhrohhmpedftfgrfhgrvghlucflrdcuhgihshhotghkihdfuceorhhjfiesrhhjfiihshhotghkihdrnhgvtheqpdhnsggprhgtphhtthhopeehpdhrtghpthhtoheplhhinhhugidqphhmsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepuggrnhhivghlrdhlvgiitggrnhhosehlihhnrghrohdrohhrghdprhgtphhtthhopehluhhkrghsiidrlhhusggrsegrrhhmrdgtohhmpdhrtghpthhtoheprhhuihdriihhrghnghesihhnthgvlhdrtghomh X-DCC--Metrics: v370.home.net.pl 1024; Body=15 Fuz1=15 Fuz2=15 Hi Everyone, This is an update of https://lore.kernel.org/linux-pm/3134863.CbtlEUcBR6@rjwysocki.net/#r the cover letter of which was sent separately by mistake: https://lore.kernel.org/linux-pm/CAJZ5v0jo5vh2uD5t4GqBnN0qukMBG_ty33PB=NiEqigqxzBcsw@mail.gmail.com/ It addresses several (arguably minor) issues that have been reported by robots or found by inspection in the v1 and takes review feedback into account. The first 10 patches in the series are not expected to be controversial, even though patch [05/17] requires some extra testing and review (if it turns out to be problematic, it can be deferred without too much hassle). The other 7 patches are driver changes and code simplifications on top of them which may require some more time to process. For this reason, I'm considering handling the first 10 patches somewhat faster, with the possible exception of patch [05/17]. Below is the original cover letter mishandled previously. The code for binding cooling devices to trip points (and unbinding them from trip point) is one of the murkiest pieces of the thermal subsystem. It is convoluted, bloated with unnecessary code doing questionable things, and it works backwards. The idea is to bind cooling devices to trip points in accordance with some information known to the thermal zone owner (thermal driver). This information is not known to the thermal core when the thermal zone is registered, so the driver needs to be involved, but instead of just asking the driver whether or not the given cooling device should be bound to a given trip point, the thermal core expects the driver to carry out all of the binding process including calling functions specifically provided by the core for this purpose which is cumbersome and counter-intuitive. Because the driver has no information regarding the representation of the trip points at the core level, it is forced to walk them (and it has to avoid some locking traps while doing this), or it needs to make questionable assumptions regarding the ordering of the trips in the core. There are drivers doing both these things. But there's more. The size of the binding/unbinding code can be reduced by simply moving some parts of it around. Some checks in it are overkill or redundant. White space is used inconsistently in it. Its locking can be made more straightforward. Moreover, overhead can be reduced, especially in governors, if the lists of thermal instances representing the bindings between cooling devices and trip points are moved from thermal zone objects to trip descriptors. The first 7 patches in the series deal with the minor issues listed above in preparation for a more substantial change which is the introduction of a new thermal operation, called .should_bind(), that will allow the core to do exactly what it needs: as the driver whether or not the given cooling device should be bound to a given trip, in patch [08/17]. Patch [09/17] makes the ACPI thermal driver use .should_bind() instead of the .bind() and .unbind() operations which is a substantial simplification. Patch [10/17] unexports two core functions previously used by the ACPI driver that can be static now. Patches [11-14/17] modify the remaining drivers implementing .bind() and .undind() to use .should_bind() instead of them which results in significant simplifications of the code. The remaining 3 patches carry out cleanups that can be done after all of the previous changes, resulting if further code size reductions. Thanks!