From patchwork Wed Jun 21 14:40:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 111056 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp4420402vqr; Wed, 21 Jun 2023 07:49:16 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4FbylsC280sw/r9/RW7ZQYXsq0dwOawUESqEUCpay8ijgyDvo4GjK48RbkyQ0JJJvbmpTz X-Received: by 2002:a05:6a00:398d:b0:668:93e7:6800 with SMTP id fi13-20020a056a00398d00b0066893e76800mr9705417pfb.14.1687358955816; Wed, 21 Jun 2023 07:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687358955; cv=none; d=google.com; s=arc-20160816; b=s9EMJdEccRT0VqWn45d1rHQT5OHjD7tVvKOb1uN70zMJcIn/1sxoC1qoONWQfPZmoX RbdGJFH4ZX88JuxjmcWNv5RhNGZhvksOJ4Ziu1Vg8mH4d+m064t3QnApL91q7zvyqE+Y NFpwk6RKY8fMIVavb/syaZmyqjHcOCw+HVhmca4+Q/7t3fstUfOUFRhXVrEz9ZPQ7giT Qcrc9cbiWehcoxld3x7zWL81LA8mw7PPTd5jSxHBslBlmfUV89xOcQUNLYAhZE/E7jzH IzA7b+uEfY4pdb5uVi/G+B1jD3B01LMtZ7lP84dQjhJrvmghdwvqDa1bZsWj+AvGcMiV 7pyw== 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=BIB5wlsg1EGijWyF8j75rKQgBWBiWi5YkvKjCqAmdlA=; b=Q1SiE9H9h3j4u/eGePPBv8HjG+qPrkcFN8RVqhEVLlgKdECkyI4Q0uYDZUrPYz3tZd NDubV+W9mJRyJEZG6Js2qQt5HbOrNq1x9AeFSu6XWxK2w9v2c22CWfDdlqfPwfS62GUr 8FTWPExsWhqH+zMHBZ0XF7Tedm8YHyXGRt/m2HcWx68UslQk5qlrGgJ0RL/IxMZXRzqb K27+E1jsWjdvm2IpoR3h41PfoGSHeS/moA9gVagRF/tBCjvxNRkNjiE83mojsCBIOp2Y i4T9QV+Tg5DQ1TUhH33uQ7nOIR2pUhZXV11HtJUJH4j6kc8H/qtWiXFpRlS1lZM5G7pD sJOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=hZPbxCk9; 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 j26-20020a637a5a000000b0054faf6007efsi4200248pgn.156.2023.06.21.07.49.01; Wed, 21 Jun 2023 07:49:15 -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; dkim=pass header.i=@linaro.org header.s=google header.b=hZPbxCk9; 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 S231183AbjFUOka (ORCPT + 99 others); Wed, 21 Jun 2023 10:40:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230352AbjFUOk1 (ORCPT ); Wed, 21 Jun 2023 10:40:27 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A1291738 for ; Wed, 21 Jun 2023 07:40:26 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2b470330145so59577301fa.3 for ; Wed, 21 Jun 2023 07:40:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1687358424; x=1689950424; 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=BIB5wlsg1EGijWyF8j75rKQgBWBiWi5YkvKjCqAmdlA=; b=hZPbxCk9XomiOQ86nLsKa9dg5VwY4wVkkRVEU+cDxbFEM+K8+b0BMrhwJnpdzq/0pz rCuE1hbYh8VV0GTWXM14TwPmqPvBWkle4n8WBK542wPk8521nEWj7NkXJcMaDrjttFam V4yR5DFCFFIcXklM/60ZbdaFtySrXICV+vjlfsokVGWjDPFVHyUQ3Y1qlqIXnRl97aV/ PLJkgb4n/lyGB9ibzT/VKBGZjLzaKarEAa6mAzHVeLR84tiestjLMnguFe8NI5QSWaBH leJnf2t9e+JPvcDCnoLkpHreNi/SOk8+ICal1qavMc32+jOF/InGmEPhs9dJ3JlgGBnI 41tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687358424; x=1689950424; 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=BIB5wlsg1EGijWyF8j75rKQgBWBiWi5YkvKjCqAmdlA=; b=kSOw1hOn1yHgTA5cu5XrgsXW94H05cpl7FJWh+MqsLNcuoIxOKT1Ma4UI8DWvi4eas CXm6JTQJn36XaLCQSKsS2a8OhmN4Ey2EFYaYZ4/CNy98gfmenjP29mSVS73XVapOFGs5 JfMIumTR0Olq6rJgFToY+3dSVGYQG/5IOWK93ty8GcBrzb6RSXpjFO+fQrgrzkchXUME pZPSLczZeYqbUmoYMd+Ke9RttnfgEP+UhE51DIP3yPidBLyYPX9NG9N+DiDY2m199sla f2AGDrPgTko7mHdnsb5ZCq016fMNs94ZkQIDxfAhcNSdJ6CQn/h8JtoKCcem4OhbDjns IBVA== X-Gm-Message-State: AC+VfDwhWSVAbHE8nl38gnc3iXTGmZQxIDR/kieqUoVrOn0d3g3v0XEM 9quBZ/ubuwjEBjMSmD1GzannuQ== X-Received: by 2002:a2e:b16d:0:b0:2b4:7875:dd98 with SMTP id a13-20020a2eb16d000000b002b47875dd98mr6627839ljm.23.1687358424498; Wed, 21 Jun 2023 07:40:24 -0700 (PDT) Received: from hackbox.lan ([82.79.124.17]) by smtp.gmail.com with ESMTPSA id l13-20020a056402344d00b0051879c4f598sm2689505edc.66.2023.06.21.07.40.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jun 2023 07:40:23 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman , Saravana Kannan Cc: Bjorn Andersson , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov Subject: [RFC PATCH v5 1/4] driver core: Add dev_set_drv_sync_state() Date: Wed, 21 Jun 2023 17:40:16 +0300 Message-Id: <20230621144019.3219858-2-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621144019.3219858-1-abel.vesa@linaro.org> References: <20230621144019.3219858-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,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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?1769324104499193430?= X-GMAIL-MSGID: =?utf-8?q?1769324104499193430?= From: Saravana Kannan This can be used by frameworks to set the sync_state() helper functions for drivers that don't already have them set. Signed-off-by: Saravana Kannan Acked-by: Greg Kroah-Hartman --- include/linux/device.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index 66c13965153d..bae11928ef7e 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -995,6 +995,18 @@ static inline bool dev_has_sync_state(struct device *dev) return false; } +static inline int dev_set_drv_sync_state(struct device *dev, + void (*fn)(struct device *dev)) +{ + if (!dev || !dev->driver) + return 0; + if (dev->driver->sync_state && dev->driver->sync_state != fn) + return -EBUSY; + if (!dev->driver->sync_state) + dev->driver->sync_state = fn; + return 0; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { From patchwork Wed Jun 21 14:40:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 111106 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp4439652vqr; Wed, 21 Jun 2023 08:15:31 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4SZIyhoi6ELXfg2grifGQahaej7+Xke7VoFJjLgFguHhQP9bqava+ckuHWRZgLb7N9OhH0 X-Received: by 2002:a17:902:f816:b0:1ae:89a:a4 with SMTP id ix22-20020a170902f81600b001ae089a00a4mr18905502plb.8.1687360530176; Wed, 21 Jun 2023 08:15:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687360530; cv=none; d=google.com; s=arc-20160816; b=R71sNmXuGeli6lexSklEsEhYUlQYLC0MeR89zzFk/UZMkkP3nrI1AobeoB8594ipws eKF9OJt3FNTUoQykl/gE2R82cEL5sVxDKOyROEMX7jH8Mu33fj6qQASksOd1yvEbA+CV VrGx6qND5fJmAt0K1Ekxfu0lXyIqfzTlyKxYaT3idmsb6S7TWYWHcnMOdl/l3MkruF01 KhFj2NU1DYa4yao84xyCtoTswZU3vF23HLHWUuwMCCeOdciSn0xl+AQQKKKEhVJmlv01 uGTQOYA/Q94ZizT6Jr/MJtSScZrxroyF9Yert8sVwfSHQi5CR5wZ/dyv010pOKwEH4kk 8J/w== 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=2W3Kf4ey7QY4pTA3JpFMV/TNECBh7Gq30HfrcLuf2lU=; b=fTJi9IpT/s/GQezIrGkj00NjUvf31w+973s49+D/ooyqRRRQ/0QX1ahY7e7xUMCF7K ZrxroIaQdU9XlC91zeLG5OhKtQv5aDiDltGmrgUwjKLiC5rUbxORGm97HNbQz+99cqlI R7aFaHP55DXMNvSC9+iBW4yhs60xHZWT3WLAq01NnTIzEnsk8sl6o+ZjqtThqzaFAUHT cAZEIUwHyhTSmlGHbHxzxK+H8nx9lg96PWIjLyap17yXc9uY4qYs1zpWd8CHCi5IcBSI T1JdPW9Nhw2m1rCplJDneLIJbq7t4k9p3pC3SxYhmPItQEgRR5qK3nJGlhH+86dgOfU8 YfUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=qvokshYU; 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 m21-20020a170902d19500b001afada38c64si3865921plb.302.2023.06.21.08.15.16; Wed, 21 Jun 2023 08:15:30 -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; dkim=pass header.i=@linaro.org header.s=google header.b=qvokshYU; 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 S231327AbjFUOkf (ORCPT + 99 others); Wed, 21 Jun 2023 10:40:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230506AbjFUOk2 (ORCPT ); Wed, 21 Jun 2023 10:40:28 -0400 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 51A45173F for ; Wed, 21 Jun 2023 07:40:27 -0700 (PDT) Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-51a2de3385fso7904035a12.0 for ; Wed, 21 Jun 2023 07:40:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1687358426; x=1689950426; 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=2W3Kf4ey7QY4pTA3JpFMV/TNECBh7Gq30HfrcLuf2lU=; b=qvokshYUKY7HCe7qvXfL6wjYYLXu4sLS55Nbn5MMSRaW3ci8oSwdrPhew+rcuX2SGB ttF+BrNowbQuVuwKWys48yk9Pp0Rqcb8/qlhp3OiBdxnhHoN0cNYjwyl2jlRW3nIJnbP XSOR9VS87RpPQWiKFJHP5L0cJX0OAjgyeIkzIPN1YHYbGcaiD/eqsXgwwYd76a/cee65 gOf3sJhWtsKrOBhZTFPntSptaEMNKExo8zFZoqU4t94AQH59SXnYGMOn8JeiYbbh1Tdo xgKZP+jAeulj6cyNtmCOXXXogsSB3bnXaTruagohS/wdx+Sfv8zc0cM4+ifmo9z/x7QA fBOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687358426; x=1689950426; 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=2W3Kf4ey7QY4pTA3JpFMV/TNECBh7Gq30HfrcLuf2lU=; b=Q0FEytZRrrAiz5x8Rsh1VvxQ2ZzKNoeIt2J2nvisP4b6Zoi1DsmfhDjhBVfAL1Jc7k bJgSAt7R3h4vfwX2oVtb7+23jwUMFopgl4eAaeJFCmODjH6Q0hudjxSqZDb344fMluy/ rtQMaPzAvxxW+24cm2PC2on0Q5cwq0OvMdZ27ATObJzk9HHd64N8zs7gKimDiLd9BRYj A8UBcmhJu1x/StqMrod2gXmwe2BRns02/dvYrxPehN9lk7ZuIHEGt1aVOKmN2yrg3asy mHnftSOGUHkA150W9P1c8uILPVdNursG1PIKBwCN7PwH/8Bo/8+A1kBcnBeh3QDbIxkz JwJg== X-Gm-Message-State: AC+VfDzgTXFvw9G18ovevk4PezacxjbHq/igcJufXR3ShS19bYOxYXSj QjmA8kbVhlNd/pfPTqhPxzvC7w== X-Received: by 2002:a05:6402:642:b0:51a:5ebe:4ab9 with SMTP id u2-20020a056402064200b0051a5ebe4ab9mr5948602edx.14.1687358425839; Wed, 21 Jun 2023 07:40:25 -0700 (PDT) Received: from hackbox.lan ([82.79.124.17]) by smtp.gmail.com with ESMTPSA id l13-20020a056402344d00b0051879c4f598sm2689505edc.66.2023.06.21.07.40.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jun 2023 07:40:25 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman , Saravana Kannan Cc: Bjorn Andersson , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov Subject: [RFC PATCH v5 2/4] driver core: Add dev_is_drv_state_synced() Date: Wed, 21 Jun 2023 17:40:17 +0300 Message-Id: <20230621144019.3219858-3-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621144019.3219858-1-abel.vesa@linaro.org> References: <20230621144019.3219858-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,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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?1769325755201500817?= X-GMAIL-MSGID: =?utf-8?q?1769325755201500817?= This can be used by drivers to figure out if a different device driver has state synced or not for a specific device. Signed-off-by: Abel Vesa --- include/linux/device.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index bae11928ef7e..8f042f04b5d9 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1007,6 +1007,20 @@ static inline int dev_set_drv_sync_state(struct device *dev, return 0; } +static inline bool dev_is_drv_state_synced(struct device *dev) +{ + bool ret = false; + + if (!dev) + return ret; + + device_lock(dev); + ret = dev->state_synced; + device_unlock(dev); + + return ret; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { From patchwork Wed Jun 21 14:40:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 111057 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp4420456vqr; Wed, 21 Jun 2023 07:49:20 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5HckQOZM5w/H9EmkxG23QawPmK4/7lc763JKvS9zAupP8lU8AOyL4AtJ1z4JNNvNNg+2+c X-Received: by 2002:a05:6808:1798:b0:39a:a8ee:573c with SMTP id bg24-20020a056808179800b0039aa8ee573cmr16596244oib.25.1687358960626; Wed, 21 Jun 2023 07:49:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687358960; cv=none; d=google.com; s=arc-20160816; b=jWhWsLRqMe1QYxFEu3z2HwwVdmpjINvlNu6A2hgkW8iXs3xgp8lQQork04MSJ0fAaw HRzCpJ4jLdA+6c4mP/IzLgGE08NPBmvVWbynoXfW7imJ4A5enfrpDogB2n3rdNJtjBc1 2/T8eo0SoNFMGoDS9AUwlzaJBoxex1nwPcPWJpCy6DxZGfNX41yGMsWmRUcJATIdP3/0 dQPzLt3ReenfEzlgAtH1r0UyI5KGxqskBSdr53z+PhJVko/Npubr+sxr2H/u7osPQi+c 0EPD8KUgdSDgcj8XHIIcyJVa8HXRGTLrIa8uQnu9dZtukOLBBHyZiIPu/ACd5JDkR+QK +qbg== 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=kUE1natntFFJxsuWsetQCXUchTahXfnKhHb9xOBxGoI=; b=xC6Pw5HF8cpAtIn9MKJW4tMb5vZKlHN1bYnrHu0ATAJGcaeWQ7g8CQXyKwR0VrapPm FGm0alfn9lnTxP7T2sPQWzK0LkSkGbu9HeuS/VI65Zxw6QJPzwUr2zNQV/4A/eRQgKLy +W9Kv/1+oI+iCoJS7bLErLXATVhtD5dGAktijk2u97j0/pd2ftf96ocKWbhfedYgSgvp H84sf90FhzgSQHkCeOXYJ/W1KUGfaNtL833NkE2sjOIlEbS/7JcCE5f1mWElyl2k2Fgm P4jrJSQA+pZw61lb09xSz5pEug6DAx0eVPML0k+VlxehkduaUPtPRzKR67MpbrjnB9D7 6sBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="qNLgGH6/"; 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 190-20020a6301c7000000b0054fe43caa81si1052138pgb.782.2023.06.21.07.49.06; Wed, 21 Jun 2023 07:49:20 -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; dkim=pass header.i=@linaro.org header.s=google header.b="qNLgGH6/"; 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 S231215AbjFUOki (ORCPT + 99 others); Wed, 21 Jun 2023 10:40:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230436AbjFUOk3 (ORCPT ); Wed, 21 Jun 2023 10:40:29 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 984041735 for ; Wed, 21 Jun 2023 07:40:28 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-51a2c8e5a2cso8103917a12.2 for ; Wed, 21 Jun 2023 07:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1687358427; x=1689950427; 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=kUE1natntFFJxsuWsetQCXUchTahXfnKhHb9xOBxGoI=; b=qNLgGH6/U2CxKdty9gB9OsWqbEI66/eB1ycqZqWjUDLPw5Qp7zQZpAebwvhHwycK8e zmTYkehL8diU3hTT2idtJjbZNc4XpTUHXziQ+croXRzw+ZBfuY/t7WvTOOd5LyAcrQs7 5/s3LofdWZEf9wiA9bLxBNR8Oq/ubOb9ql5blfWJyzlK6AO650+QC2cTQerFbgyLDh2W xBq+u3m0ErKru6xrL/AayQtWrSMzQUQUhxP8/eBlefpVQDI64L/GlAJhz5F0BiU94jrp aEIGxVCMzHO4pHhyZjMB4miUA1jZeFcRyXRZtVZoNQ7iu/q6AYmMOkwJsaDt7vGUtLNv lUSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687358427; x=1689950427; 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=kUE1natntFFJxsuWsetQCXUchTahXfnKhHb9xOBxGoI=; b=ctoQxtohjcr6dAUSV3jmJY0z4zgtnsefZ1odoMzVzvNinPTUlaUXFQzD2ADoGXVSM5 H9SSRx8rLPLAjSLZpSGwWdtuRRsfKIaB7oE1Ejbl3H+pERP8PD4glDhhwXdRXgi118+v MBRhJ9m60u8+2sTu0SfY9Es7Ecya6Tcos5pzPI3GdSWSabDf09xMK+jyGK2PQHxOaa2U u1nnX7SaNElNC4dtd0RPmovtmYMdM3NJlTS1Tfjefwpvdm/E4D+zaM8PdUjwvpmJz+Bw hHW9xUTcFX2V/ZiSrWxD3Dzd/Wh3YZ5pcWALL8NI5xrWQ0WemtPVdoVikELItE55V8vt vFPg== X-Gm-Message-State: AC+VfDwWc1quf1iJ7uBTPtG42jxXcoc4qio2GZ3gRgxS6ooARqJL6g5J ETAQkmWoju+oXzV2Zip2308hqg== X-Received: by 2002:aa7:cf19:0:b0:510:82b4:844d with SMTP id a25-20020aa7cf19000000b0051082b4844dmr11822520edy.2.1687358427133; Wed, 21 Jun 2023 07:40:27 -0700 (PDT) Received: from hackbox.lan ([82.79.124.17]) by smtp.gmail.com with ESMTPSA id l13-20020a056402344d00b0051879c4f598sm2689505edc.66.2023.06.21.07.40.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jun 2023 07:40:26 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman , Saravana Kannan Cc: Bjorn Andersson , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov Subject: [RFC PATCH v5 3/4] PM: domains: Ignore power off request for enabled unused domains Date: Wed, 21 Jun 2023 17:40:18 +0300 Message-Id: <20230621144019.3219858-4-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621144019.3219858-1-abel.vesa@linaro.org> References: <20230621144019.3219858-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,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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?1769324109340915016?= X-GMAIL-MSGID: =?utf-8?q?1769324109340915016?= First of, safekeep the boot state that is provided on init, then use this boot state to make decisions whether a power off request should be ignored or not. In case a domain was left enabled before boot, most likely such domain is needed and should not be disabled on the 'disable unused' late initcall, but rather needs to stay powered on until the consumer driver gets a chance to probe. In order to keep such domain powered on until the consumer handles it correctly, the domain needs to be registered by a provider that has a sync_state callback registered and said provider has state synced. Signed-off-by: Abel Vesa --- drivers/base/power/domain.c | 49 +++++++++++++++++++++++++++++++++++++ include/linux/pm_domain.h | 1 + 2 files changed, 50 insertions(+) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 51b9d4eaab5e..5967ade160e2 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -654,6 +654,43 @@ static void genpd_queue_power_off_work(struct generic_pm_domain *genpd) queue_work(pm_wq, &genpd->power_off_work); } +/** + * genpd_keep_on - Tells if the domain should skip the power 'off' request + * @genpd: PM domain to be checked. + * + * If the domain's current state meets the following conditions: + * - marked for being kept as enabled + * - has a provider with a sync state callback registered + * - the provider hasn't state synced yet + * then the power 'off' request should be skipped. + * + * This function should only be called from genpd_power_off and with + * the lock held. + */ +static inline bool genpd_keep_on(struct generic_pm_domain *genpd) +{ + bool ret = false; + + if (!(genpd->boot_keep_on)) + return false; + + if (!genpd->has_provider) + goto out; + + if (!dev_has_sync_state(genpd->provider->dev)) + goto out; + + if (dev_is_drv_state_synced(genpd->provider->dev)) + goto out; + + return true; + +out: + genpd->boot_keep_on = false; + + return ret; +} + /** * genpd_power_off - Remove power from a given PM domain. * @genpd: PM domain to power down. @@ -682,6 +719,13 @@ static int genpd_power_off(struct generic_pm_domain *genpd, bool one_dev_on, if (!genpd_status_on(genpd) || genpd->prepared_count > 0) return 0; + /* + * If the domain is enabled and unused, bail out and ignore + * the 'off' request until the provider has state synced. + */ + if (genpd_keep_on(genpd)) + return -EBUSY; + /* * Abort power off for the PM domain in the following situations: * (1) The domain is configured as always on. @@ -2065,6 +2109,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, atomic_set(&genpd->sd_count, 0); genpd->status = is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; genpd->device_count = 0; + genpd->boot_keep_on = !is_off; genpd->provider = NULL; genpd->has_provider = false; genpd->accounting_time = ktime_get_mono_fast_ns(); @@ -2718,6 +2763,10 @@ static void genpd_dev_pm_sync(struct device *dev) if (IS_ERR(pd)) return; + genpd_lock(pd); + pd->boot_keep_on = false; + genpd_unlock(pd); + genpd_queue_power_off_work(pd); } diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index f776fb93eaa0..3eb32c4b6d4f 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -131,6 +131,7 @@ struct generic_pm_domain { const char *name; atomic_t sd_count; /* Number of subdomains with power "on" */ enum gpd_status status; /* Current state of the domain */ + bool boot_keep_on; /* Keep enabled during 'disable unused' late initcall */ unsigned int device_count; /* Number of devices */ unsigned int suspended_count; /* System suspend device counter */ unsigned int prepared_count; /* Suspend counter of prepared devices */ From patchwork Wed Jun 21 14:40:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 111054 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp4420024vqr; Wed, 21 Jun 2023 07:48:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6a0IPTqVDC4jVMk5I5n1axeIzCdsAczXDJvoMsWSQcw3P5UJGjWoX541HNC54W9JYOAJI7 X-Received: by 2002:a05:6808:15a4:b0:39e:cda0:507a with SMTP id t36-20020a05680815a400b0039ecda0507amr7628415oiw.35.1687358918754; Wed, 21 Jun 2023 07:48:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687358918; cv=none; d=google.com; s=arc-20160816; b=AegJD2chbCw+jzpJMQ7PVODbSXY/KOwpnllZTT66Z2BrV7P5oLJNUXlUDtJ/rNWqau xLMLQlQk9f/0S1iJ6ISKhlxqP6Lsuwd8WI/Skq68/OX7gEm9G5twbdKYGHaEfKRk12nJ L45D/lmF1mty+sRB4mABQ61rp2GxZ2e5dgxyAiI6AiGWpAvAdCd911+UEvVF1K/g3uTT OtFjwBcLQoys2T80VPuyfSGr1eaSEOwsO2DKYzEOwohkE3RFbQZ3B5R0Agl4q/tkYSK7 bXH7G3tOPAx6SIY/7FWSF2sCqqEcV9VtRRvUraVWbfB1cdVHmzEHj9r1hrujgt4OZroA 0thA== 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=XmB7aafZYu+t3l7iCsSmX4rGYeW4d39sw8kiK1MfRbc=; b=SAhOVEuNaKvEedZx6NSNaF9fbazEJPh5pNz6yWjz/TU9wGV6s2uP6CVr5j/EO+XgjB G+pbn21zdH3YJMwLAW+conxs3KHrfQ2DlSo53P2BTGu8hZtRSFBB+pWX6nb+4fRx8aX4 oSUOD7conHt5JbYccgJ2baddyoe877u6KmVQ7aK67HNy3JQyij2PGjCOIDoAvyCT/I1m dD/U7iuVYz+XCCOhzjxAmtMBkbZ8A3AYUZWacPv7sj9xAzAS14uUUYuGo4AfoTZ3o44a oAn043pxVtfBTe6X2HfIEKvR50+iFlKfUmVAErIs26BFNYDpCnPd9k+28W5pXQOXKFLq C0fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="vbFeL6g/"; 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 w189-20020a6382c6000000b0055338995061si4160583pgd.754.2023.06.21.07.48.23; Wed, 21 Jun 2023 07:48:38 -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; dkim=pass header.i=@linaro.org header.s=google header.b="vbFeL6g/"; 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 S231833AbjFUOkt (ORCPT + 99 others); Wed, 21 Jun 2023 10:40:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230464AbjFUOkc (ORCPT ); Wed, 21 Jun 2023 10:40:32 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08D8E1739 for ; Wed, 21 Jun 2023 07:40:30 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-51bdc87feb1so875333a12.3 for ; Wed, 21 Jun 2023 07:40:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1687358428; x=1689950428; 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=XmB7aafZYu+t3l7iCsSmX4rGYeW4d39sw8kiK1MfRbc=; b=vbFeL6g/0gsnlVG3qe4dFQ8UgIqumpBG61md5jata02BeIpTUP5kaC99ThhE7dmF4O I7Y6Zk5tYifXsAurwx4LMPSIMFpU9Uu6yDlI+EBdE6mOHSG1vQP3bEWFSAODNm5tMAIz LsRijdo+V3NVq1ZT/fxLXgfSryujgdNMA1JxE9gWEwTMz1pUqJLzarZBXWf44s239bLm TdB9UU5sroVO28ey88uuV0uMfBQwyLW+RskbylYy58Ok9Xk4xzMLpNXO98g5W5m1cRPx iD8aORPz8tkdFjxBJk6+5sw+YR+XVIlM9Clkc1SXJc9guWiefmUzSYaphjxgmLinhgdV +6xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687358428; x=1689950428; 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=XmB7aafZYu+t3l7iCsSmX4rGYeW4d39sw8kiK1MfRbc=; b=IJa/pIFNkG7mtilM+VPcHMdt8AmQ3L3/LGfJog0LCHrX39Eah597ayNQh7Rmig+3mE ifpdjjxMyfl6od36HAlwKQ+x8LW1iS6XkqcmgdxvJdbuzUEnixuBiey1KlvmBXpW4b1Q icZfNK8VyPA2Ls3xHc9HmcanN1sPPSmiF4zj903KjVEmIspj9uphHw0tahjBRDMqB1qS Apn1+6qx6XstedUYflh4ToW/hMp8dZeuPQd0+bU0zYhrcE4yLUx0mIWzCjDP1USQPCDc oaTNnaGokle9ketMo3zTFLpKfUSRrq7HK/CJawJFEApDZytqPsPhaAqa7TUuhyUV6gRx /kZw== X-Gm-Message-State: AC+VfDxlmXXs4c31h92kqfbjCv5A/slkB5gZrN5HHuCdS3jKQNE6rT9F bXAt0f/1tkGU+WQVpq/pqkx2nw== X-Received: by 2002:aa7:c90f:0:b0:51a:50f2:4e7a with SMTP id b15-20020aa7c90f000000b0051a50f24e7amr7153676edt.13.1687358428418; Wed, 21 Jun 2023 07:40:28 -0700 (PDT) Received: from hackbox.lan ([82.79.124.17]) by smtp.gmail.com with ESMTPSA id l13-20020a056402344d00b0051879c4f598sm2689505edc.66.2023.06.21.07.40.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jun 2023 07:40:28 -0700 (PDT) From: Abel Vesa To: "Rafael J . Wysocki" , Kevin Hilman , Ulf Hansson , Len Brown , Pavel Machek , Greg Kroah-Hartman , Saravana Kannan Cc: Bjorn Andersson , linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, Dmitry Baryshkov Subject: [RFC PATCH v5 4/4] PM: domains: Add and set generic sync state callback Date: Wed, 21 Jun 2023 17:40:19 +0300 Message-Id: <20230621144019.3219858-5-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230621144019.3219858-1-abel.vesa@linaro.org> References: <20230621144019.3219858-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,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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?1769324066001572032?= X-GMAIL-MSGID: =?utf-8?q?1769324066001572032?= For every provider that doesn't register a sync_state callback, register a generic one. This new generic sync_state callback queues up a power off request. Signed-off-by: Abel Vesa --- drivers/base/power/domain.c | 23 +++++++++++++++++++++++ include/linux/pm_domain.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 5967ade160e2..ec16db0599ac 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -654,6 +654,27 @@ static void genpd_queue_power_off_work(struct generic_pm_domain *genpd) queue_work(pm_wq, &genpd->power_off_work); } +/** + * pm_genpd_power_off_unused_sync_state - Power off all domains for provider. + * @dev: Provider's device. + * + * Request power off for all unused domains of the provider. + * This should be used exclusively as sync state callback for genpd providers. + */ +void pm_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 && genpd->provider->dev == dev) + genpd_queue_power_off_work(genpd); + + mutex_unlock(&gpd_list_lock); +} +EXPORT_SYMBOL_GPL(pm_genpd_power_off_unused_sync_state); + /** * genpd_keep_on - Tells if the domain should skip the power 'off' request * @genpd: PM domain to be checked. @@ -2329,6 +2350,8 @@ static int genpd_add_provider(struct device_node *np, genpd_xlate_t xlate, cp->xlate = xlate; fwnode_dev_initialized(&np->fwnode, true); + dev_set_drv_sync_state(np->fwnode.dev, pm_genpd_power_off_unused_sync_state); + mutex_lock(&of_genpd_mutex); list_add(&cp->link, &of_genpd_providers); mutex_unlock(&of_genpd_mutex); diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 3eb32c4b6d4f..78164244b89f 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -279,6 +279,9 @@ static inline int pm_genpd_remove(struct generic_pm_domain *genpd) return -EOPNOTSUPP; } +static inline void pm_genpd_power_off_unused_sync_state(struct device *dev) +{ } + static inline int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state) {