From patchwork Fri Jan 27 10:40:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 49183 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp763932wrn; Fri, 27 Jan 2023 02:43:50 -0800 (PST) X-Google-Smtp-Source: AK7set9gEAOzZ5pwUMAWmq/zPycspa9XJOiSQ/sIBCjr2U8enZHHs5kOlHrzyBQRcUTe1ryIm8+q X-Received: by 2002:a05:6a20:8b1e:b0:b8:a4e7:7940 with SMTP id l30-20020a056a208b1e00b000b8a4e77940mr5282800pzh.11.1674816230379; Fri, 27 Jan 2023 02:43:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674816230; cv=none; d=google.com; s=arc-20160816; b=nRwq5qDzHYLZAheJT6H1FMQc3bPB6m4sVGfDtbqj+IFZXywlMMSxlP4yh/P7gZ3wor 6zmFro/fOMOmRX25ybFpZ3ZB1J8kcLUSxGGIO38QJzn7CS1XE4LRFvyX8DCa7XbaFkpU LG92k1QvKShOLOzwNWEY/s55Ec7unz3vpBmJzhpHul4efXK+sI61hmM9hRniZeUAKKSd 4QMe41wo+00WjUqkeKiqSc8WPJMaHfYYdm/cIu8pbAN6jb9MtNAOgNBL3S7wK/fSbj5F x3vXfN6HAe40H1KJg0dNeAPNC0p0zvedg9dPSGL4NeztBfoVKuDVoWKkBmzy9/ZOGER/ OF2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=VsoS+HLMRIQitJW5cLuMou8qpfRBnFIRf9XZouh1e9Q=; b=Ld63j8w8nO0Dsn59khbJYzHfZAo8pey3t9GZfpYdFpB6kS0xF/nE+xMY2uxb3dxW4J XQP2A0xVo1qorHSevD9GMC5JS0fEKjYJ57sOAO6GuugHwCDVvCdXFDJdCxpuceWa/98c Kk1w8U2Ak/UIrAowq+005h/2NyLDJ9pWWxci/3cF8c2+szcKX7jIojlno+OSGarbv7uu 5ue+LbgWbAa+smLFJo8T6V2zMNRiNEEoDJectQUEr89RlKUpa7jmSnqRsG6ZJ23O2D6X JuUViOMuoXdd4p6CQL0sOnD7KRO+fOY/yLEc9qsAA4lmHdg3+OMGZpTGoj0zwdeuULoP 5J3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LO+sAoyM; 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=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j2-20020a056a00234200b0059260eeafeesi2405167pfj.31.2023.01.27.02.43.38; Fri, 27 Jan 2023 02:43:50 -0800 (PST) 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=@linaro.org header.s=google header.b=LO+sAoyM; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232560AbjA0Klo (ORCPT + 99 others); Fri, 27 Jan 2023 05:41:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232445AbjA0Klb (ORCPT ); Fri, 27 Jan 2023 05:41:31 -0500 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70D8887353 for ; Fri, 27 Jan 2023 02:40:59 -0800 (PST) Received: by mail-wr1-x42b.google.com with SMTP id t18so4592023wro.1 for ; Fri, 27 Jan 2023 02:40:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=VsoS+HLMRIQitJW5cLuMou8qpfRBnFIRf9XZouh1e9Q=; b=LO+sAoyMEwdNEnHWYaJlKEDGIbwLsEP/ebM803ORYTt0D1wWGXQWE1WBxnR1wz694Q 6I2JzsmrVmtFbXDXHT/9+E3jUbMfVHCF0EsD7aKRHo/s1JKRfrmqHwgD6BYPbdy+VBLf 4ej96pIguY293PjvbWcAHtpb8e3PjD3ITHtbx7HQZabQvv7zV+eIhtRsKIX2mxsynJzh 906Itbpo2L3Y3oCZ5mfqUKDSc9dghK3F+bGvejJ6i/XllOhHLnTAuyVkCfFxEgwG5CoU XrOiUs02/Q6TEEWVXkFB/e4UgtBOuQD0lKZL4O8gpVQqoO57RoXpGL21ESOyw3UJ5TNQ YxbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VsoS+HLMRIQitJW5cLuMou8qpfRBnFIRf9XZouh1e9Q=; b=6CJSF8gd094yQGnB3Q9voNPDy4EsjjDy+E/98J80Vkqtd19SKYws0bam0KIgO92vYs arSO8UogFLajvdnNhzZ5eLd3mBCgBrdWvAdQMCE4RLxAwsvSJt7nhewBnTaYIf0n9cw8 bm9ZEcnEa16u38sKRNbR7KXD42qGJrXc6TV8pWrylTjePjlxSxuY2yKDC700qjX6VvgY Zem68mIDOyNYsb3pEfxTJZg7kDzZFTvjVM0Axy1k7/iQhcEDMeCxvADbt4zAUY2kzncI gydYAs0G+uQUvd+GOhKNQW6HM6DjIhrtqziWt6sZvZjeXnGWYcowfAEpkldj9GhWGilf Zr0g== X-Gm-Message-State: AFqh2kqJKF7Ur0OjBWw6SEQ7JDKMTfmDNcOAcq+mdI3gmsnu6qvZIP06 ssu0zIDgaSSpVEaxcnP0ZTVYoUB6ajyUOQe/ X-Received: by 2002:a05:6000:5c2:b0:2bb:eb3d:8d20 with SMTP id bh2-20020a05600005c200b002bbeb3d8d20mr32723282wrb.43.1674816057617; Fri, 27 Jan 2023 02:40:57 -0800 (PST) Received: from hackbox.lan ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id e21-20020a5d5955000000b002b57bae7174sm3613089wri.5.2023.01.27.02.40.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 02:40:57 -0800 (PST) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman Cc: Bjorn Andersson , Andy Gross , Konrad Dybcio , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov , Stephen Boyd Subject: [RFC PATCH v2 1/2] PM: domains: Skip disabling unused domains if provider has sync_state Date: Fri, 27 Jan 2023 12:40:53 +0200 Message-Id: <20230127104054.895129-1-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756130592516701305?= X-GMAIL-MSGID: =?utf-8?q?1756172103552248179?= Currently, there are cases when a domain needs to remain enabled until the consumer driver probes. Sometimes such consumer drivers may be built as modules. Since the genpd_power_off_unused is called too early for such consumer driver modules to get a chance to probe, the domain, since it is unused, will get disabled. On the other hand, the best time for an unused domain to be disabled is on the provider's sync_state callback. So, if the provider has registered a sync_state callback, assume the unused domains for that provider will be disabled on its sync_state callback. Also provide a generic sync_state callback which disables all the domains unused for the provider that registers it. Signed-off-by: Abel Vesa --- This approach has been applied for unused clocks as well. With this patch merged in, all the providers that have sync_state callback registered will leave the domains enabled unless the provider's sync_state callback explicitly disables them. So those providers will need to add the disabling part to their sync_state callback. On the other hand, the platforms that have cases where domains need to remain enabled (even if unused) until the consumer driver probes, will be able, with this patch in, to run without the pd_ignore_unused kernel argument, which seems to be the case for most Qualcomm platforms, at this moment. The v1 is here: https://lore.kernel.org/all/20230126234013.3638425-1-abel.vesa@linaro.org/ Changes since v1: * added a generic sync state callback to be registered by providers in order to disable the unused domains on their sync state. Also mentioned this in the commit message. drivers/base/power/domain.c | 17 ++++++++++++++++- include/linux/pm_domain.h | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 84662d338188..c2a5f77c01f3 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1099,7 +1099,8 @@ static int __init genpd_power_off_unused(void) mutex_lock(&gpd_list_lock); list_for_each_entry(genpd, &gpd_list, gpd_list_node) - genpd_queue_power_off_work(genpd); + if (!dev_has_sync_state(genpd->provider->dev)) + genpd_queue_power_off_work(genpd); mutex_unlock(&gpd_list_lock); @@ -1107,6 +1108,20 @@ static int __init genpd_power_off_unused(void) } late_initcall(genpd_power_off_unused); +void genpd_power_off_unused_sync_state(struct device *dev) +{ + struct generic_pm_domain *genpd; + + mutex_lock(&gpd_list_lock); + + list_for_each_entry(genpd, &gpd_list, gpd_list_node) + if (genpd->provider->dev == dev) + genpd_queue_power_off_work(genpd); + + mutex_unlock(&gpd_list_lock); +} +EXPORT_SYMBOL_GPL(genpd_power_off_unused_sync_state); + #ifdef CONFIG_PM_SLEEP /** diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index f776fb93eaa0..1fd5aa500c81 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -351,6 +351,7 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev, unsigned int index); struct device *genpd_dev_pm_attach_by_name(struct device *dev, const char *name); +void genpd_power_off_unused_sync_state(struct device *dev); #else /* !CONFIG_PM_GENERIC_DOMAINS_OF */ static inline int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) @@ -419,6 +420,8 @@ struct generic_pm_domain *of_genpd_remove_last(struct device_node *np) { return ERR_PTR(-EOPNOTSUPP); } + +static inline genpd_power_off_unused_sync_state(struct device *dev) {} #endif /* CONFIG_PM_GENERIC_DOMAINS_OF */ #ifdef CONFIG_PM From patchwork Fri Jan 27 10:40:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 49184 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp764165wrn; Fri, 27 Jan 2023 02:44:26 -0800 (PST) X-Google-Smtp-Source: AMrXdXvsl+myLcmCeiOQPN2n37G158uqjo+v1XC9JIPHTKzv6JMuaNlP2AOJgK/AslZJY4koEKqi X-Received: by 2002:a17:907:c307:b0:816:ef2a:631a with SMTP id tl7-20020a170907c30700b00816ef2a631amr45648833ejc.31.1674816265954; Fri, 27 Jan 2023 02:44:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674816265; cv=none; d=google.com; s=arc-20160816; b=xrkQZzzbxngG45h+PNVkpjErOKlAdalNeozpgDUGBMb7xc96ZZQ660CEGs/FSVA2M8 2d28VyR+sn31beUtnsQazdmtweI2Vi/OPHxGrjgozN/KFts1tBdTbUNpj0ZNwBlnmJRb yYg/LfUfgkcJCVWocz0Xv9yBNbpGHocN/n58Qze1EU7iQw3G7nFqypS3dO0lmClocOtV 1h5YChH7MHMzhoOEZ4L/ypX0VsxITArlXVhuo7AqECMaVurX7pWhe2Wvo/CGduJVuVWd 1/OiH4UlL3UinQ9Byjg+LnWHusHagz7qtS7HTffBF7exdIySNC4Q0uHDwRPU7kHH2V/k +fKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8ndsWZlMYJtLnCMyPNKqHVtE/EpqIzhsLhwbLZ4yPv4=; b=0dzxErke3M3Y4O9HIjRDHqM7uneO0IoDHq3RFIcQA2+YRB8ueCuuWGgxblzJysLSAZ PWem1fIlmNQmwKG4jZxrSwRyfOBnPJoHhhLlmta4lp5yp4iI7UNWItPsGHW6dE9NyAs5 Y0xodiVJrLsbAOQSod+A8jCUDLBButaKeLWTWF0Wzw8tK7QV5E8dDyg4RF8HTnF04Z0r GfcK0Bcj5rzXwZnzE37/vqAXa5D51D8dAkqMIfgIyLJW184y2sYwuHXcNj5YNl6K7R3S t9ea3SXQ6n1ib8TcA5xALmrUeAlJHJi+tGIpuLqxQbT//43XNhqJ4Na94lYUtqqcpD4G zeCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pcaxpn5G; 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=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 9-20020a17090602c900b0087783a6727dsi4692550ejk.790.2023.01.27.02.44.02; Fri, 27 Jan 2023 02:44:25 -0800 (PST) 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=@linaro.org header.s=google header.b=pcaxpn5G; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232372AbjA0Klu (ORCPT + 99 others); Fri, 27 Jan 2023 05:41:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232330AbjA0Kle (ORCPT ); Fri, 27 Jan 2023 05:41:34 -0500 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 02F708736D for ; Fri, 27 Jan 2023 02:41:02 -0800 (PST) Received: by mail-wr1-x432.google.com with SMTP id r2so4556850wrv.7 for ; Fri, 27 Jan 2023 02:41:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8ndsWZlMYJtLnCMyPNKqHVtE/EpqIzhsLhwbLZ4yPv4=; b=pcaxpn5GMKc3hkUSiYbL+KXIkk1Q1jNEiF+bU+AlkY+STYO3YlRvQm4CL21G4uTads F/E/cizCK4pB4IQlFZKWr8aSp4CCedzSP2kphFS6FM/wvN0Luquv6iGCXd/tWJXY8GX0 9bsSectbf3oqAaCTzIoEYNOIW56UR0X/8PYQARIfXV3J6PsZGKoS4sdm8p/QY1N1D3ql ANEzBvnGxND2hKbLMo4bOSELPxRaJfYjp0wgi2if4zc7TbN9VBlnFQRJG7ZLNUG1v3Ry 3ySwzcl03uohRgHU0KFYDSwcLQMlZVBi3c5g87Yg1c3Pa1hIZAmjGNgfwY+HwgaM/H+0 +TMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8ndsWZlMYJtLnCMyPNKqHVtE/EpqIzhsLhwbLZ4yPv4=; b=LeGMOQmhEdwhXJFJTyiUk/tOXn+5sbgeGkgdkKzv6PAvnncvYbIN3zVqQc9GjHrgsd K15LochWm5ej4ijPdOLf1FWcTN/lOl46CxzFIQz22I3Juv6y0j7tR9SOgMLGB+DmEe3u exTywEjYGGdadEPoA7gCQU7Tva02f9zdmJSYqRewr5ch/rCkNBJwkxJAT6mA3PGQBGye d6b6zsoIIX4JpPRTR4t9O/VyoNDATyYTtZ5/zsWF5Mgn8xadH0+hULhvPEFZjL9D4Ii0 issKl2qzkCEfXBxd0dZvc4wCYav1qKJ8C6XPSIAijcKtGBtLrhP3Yk2+AP70IR5BL+cn p6JQ== X-Gm-Message-State: AFqh2kpSGQwaPGoscle+j6btz805Ba6Dw50OWB1A7Kd25AQHUfVc59F4 qpFdWjEbENKYRmA3RoebwVbk2A== X-Received: by 2002:a05:6000:8d:b0:2be:3a6a:f565 with SMTP id m13-20020a056000008d00b002be3a6af565mr25744279wrx.38.1674816058948; Fri, 27 Jan 2023 02:40:58 -0800 (PST) Received: from hackbox.lan ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id e21-20020a5d5955000000b002b57bae7174sm3613089wri.5.2023.01.27.02.40.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 02:40:58 -0800 (PST) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman Cc: Bjorn Andersson , Andy Gross , Konrad Dybcio , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov , Stephen Boyd Subject: [RFC PATCH v2 2/2] soc: qcom: rmphpd: Call the genpd unused power off sync state callback Date: Fri, 27 Jan 2023 12:40:54 +0200 Message-Id: <20230127104054.895129-2-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230127104054.895129-1-abel.vesa@linaro.org> References: <20230127104054.895129-1-abel.vesa@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756172141058089185?= X-GMAIL-MSGID: =?utf-8?q?1756172141058089185?= Genpd provides a generic sync state callback for disabling unused domains for a specific provider identified by its device. Call that generic callback from the existing sync state callback in order to disable all RPMh PD unused domains when all the consumers have probed. Signed-off-by: Abel Vesa --- This patch was not part of v1. Added to this patchset for context. drivers/soc/qcom/rpmhpd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c index f20e2a49a669..8b341cb97546 100644 --- a/drivers/soc/qcom/rpmhpd.c +++ b/drivers/soc/qcom/rpmhpd.c @@ -832,6 +832,8 @@ static void rpmhpd_sync_state(struct device *dev) dev_err(dev, "failed to sync %s\n", pd->res_name); } mutex_unlock(&rpmhpd_lock); + + genpd_power_off_unused_sync_state(dev); } static struct platform_driver rpmhpd_driver = {