From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A64293DD53B for ; Fri, 8 May 2026 12:39:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243962; cv=none; b=DWGsgBUBre07SBZjz3TxSOVB2O/BWStyx76fbzIsH4BrPQehkkz8K+FtWW6F27/dRvcNlGUXeyfLZXWAHlnSqgSTOpmldfvs5tMFcoqEg5Efm66vpn7bV+vO8S5Swssox8qJUgFGwq8/Dg36zpiu2MUbpmTrayhm/XyDKE5wdLA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243962; c=relaxed/simple; bh=/FNkLhSYKy6TJa1EV5G4UhF+wEANeDUJfI9WWCNYAYk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YXK0UUMD8PAojBBaa/Aj4N43X0dlwBIojoiVbXVjWzIRm/wAUcPVTG58Gin0mONcvVX/PG6rIKiyGuxKpoVU7462wIhhhczavf/rP30zSdzocGEJ+fZ6z1iHX7SH94TU9UkppJt/cZMiSL30+XRmxBKTZGxsvgd+mV4C6Z6qGUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Cyy1S6s5; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Cyy1S6s5" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-38e97e73234so18108471fa.1 for ; Fri, 08 May 2026 05:39:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243959; x=1778848759; darn=vger.kernel.org; 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=hZZm1gLHrIJZUIiM9XL9gym+JUwXXpMXWNiMLD+uRZ4=; b=Cyy1S6s5JXPuJweuRX4TDxzj4hgNMF8ZPOoL8xx/mUX4lDivbmMUL9ow6UXz4P4PJj 1qSYJ6goTNuBwv4OlbsKepf705Cj6O9anDCxWzQpA4Cz9jWfed3xZLeCejLXO2cXybYx NNv6v8XQURYH2PjdhIbwjg+a2+FHwTXA0vQdDC/RLSoEL73e44AM9OXMUMlR8ceZ90yG opSrGisO0bmsxl86TAQGDV3Sl/wtS1U1iNQfvUa68tTGpMzOvYr728pbbXwdfjLiLrAF f4MwjoUQ8eKQXP7ChJVRNzwlx6RxQ+HN4xUsUxHpYIXQREFnPnCwuc5AfMxQTHvGlOwV zQcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243959; x=1778848759; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hZZm1gLHrIJZUIiM9XL9gym+JUwXXpMXWNiMLD+uRZ4=; b=rOnm6e/t4AAGnDXe4QFEsYBWI765TY7YeEtY0SgxMrOqLTMx+Ul7mI7RhtRbT9caMp VFjSTMXY1YIp937wBY0lWbCtHAwvjQBIQE9X6pDGQWO2WXomrbw8MtA51xlf5FQQF097 aplftEYKDf2VCOVYsYbi7NALX8Ofkc11KYa39LwJhshPM+qJHBw64VH56Tkr6Dgr+Qe1 VEmgbn0jJk5+TfhbP3YoDr3fSUEegYz+N7BSh29MrscfwcpPw8LshBf0eTkPV7FIKKJs f66kR1hnFXdjyrNfm2CxLI+nikergDYWu7J+8Udba3NtL6eRb+/TBUshe09iZuFu8TXv Sw0g== X-Forwarded-Encrypted: i=1; AFNElJ+X9szhtr3DbWoxJ5OPUQCBpQIz+9U57KA1PxH2n1CAW6upHKIDQb0t9vlHcoUgcs7/Cur4Ud6Zi1N13Xg=@vger.kernel.org X-Gm-Message-State: AOJu0YwbHgnEX3wya+x6ppNYRLC25F7b6hqzxLxWRliss9KqSNmf/GcS vAFJknSKK4mNAjltjuxBnasJJmHz1eVojuoRuIi5aFX9Pofh9OOlm7ZNGkoMo8cjCmY= X-Gm-Gg: Acq92OFwWlhBokz6pBrwcFvvmzi4C/L4kUeQTGotpbud2OAvRJGELBFXRK0YEM1Geme /fKArmDTAi7TpMEt92hm2CkiKNnbiIMvr+pbiW6hIshcB60p8ydPmikfkxnp4HcwkVCtTOIEQR4 mriK9dFdkS8GDoDhAIUuL4BnGGyfxpJX11BEu0NPspOOH4hfIVUPNO6UM6vNjneuF4D22LCag/a WeBIwalcDOaahOxB10XoGJEcshkSYkh3P6Vj5oltvXVd2/ErUj9ZXOhCq3UOEYNa+7jPxv5dVJV vUAbw0Qvf+/Sx04DaZBm0FKu+K8EQbcwb/PVbijkfA30Ilup5ZyMk+1qNSQEI40uhPRu78NuTxG HGpiuy+nwCkhzrMmgfTBxwwwUBcb5nHh//c33yfHaHwDNMmLiDjhcEtrRNz5NWqHZGzO99+/fnG t2Yody9WmrCVxhi3UK+a29pGbjLgy8eXZp9WMPN+hCMoEMWpaftS0R8PoJac1RO8WDoHAd6Cff X-Received: by 2002:a05:651c:1050:b0:38e:8411:c304 with SMTP id 38308e7fff4ca-393c41c6deemr33966421fa.16.1778243958791; Fri, 08 May 2026 05:39:18 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:18 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 01/13] Revert "driver core: move dev_has_sync_state() to drivers/base/base.h" Date: Fri, 8 May 2026 14:38:50 +0200 Message-ID: <20260508123910.114273-2-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" It turns out that the dev_has_sync_state() is needed outside the driver core. A subsequent change to the pmdomain subsystem starts making use of it. Fixes: 9db268212e0d ("driver core: move dev_has_sync_state() to drivers/bas= e/base.h") Signed-off-by: Ulf Hansson --- Changes in v3: - New patch. --- drivers/base/base.h | 14 -------------- include/linux/device.h | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 0ed1e278b957..30b416588617 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -188,20 +188,6 @@ static inline int driver_match_device(const struct dev= ice_driver *drv, return drv->bus->match ? drv->bus->match(dev, drv) : 1; } =20 -static inline bool dev_has_sync_state(struct device *dev) -{ - struct device_driver *drv; - - if (!dev) - return false; - drv =3D READ_ONCE(dev->driver); - if (drv && drv->sync_state) - return true; - if (dev->bus && dev->bus->sync_state) - return true; - return false; -} - static inline void dev_sync_state(struct device *dev) { if (dev->bus->sync_state) diff --git a/include/linux/device.h b/include/linux/device.h index d54c86d77764..56a96e41d2c9 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1061,6 +1061,20 @@ static inline void device_lock_assert(struct device = *dev) lockdep_assert_held(&dev->mutex); } =20 +static inline bool dev_has_sync_state(struct device *dev) +{ + struct device_driver *drv; + + if (!dev) + return false; + drv =3D READ_ONCE(dev->driver); + if (drv && drv->sync_state) + return true; + if (dev->bus && dev->bus->sync_state) + return true; + return false; +} + static inline int dev_set_drv_sync_state(struct device *dev, void (*fn)(struct device *dev)) { --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F06D03DDDDB for ; Fri, 8 May 2026 12:39:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243964; cv=none; b=bKtcpzqcWSTF3KhGR6e86UPjlDVfeX62nBm3IjTLjgl2wjD90hDa0MczQwNCMJoEoNGaRf9PGLrR7qUgm5HhqnmCIbMLy1EBmMyjOOVyQXmxkkyS5whIVvjO5nfhDWi+DE5lZf1BPrUmej6LchjuMqDoTN6t67x/yNWrkriJ3Rc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243964; c=relaxed/simple; bh=JSUt4ly77w9AZQ4tDDDyVxBvz8uAP90OcaWHAL09iUo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uNTcyglLyl6wnIgE6HMDpVInmQiSjguS6LTsxaPYl6/zSqNFbZxjEp3k9eZyTvJOXgu4Ribg9Umpmb46BJW3prt1XVuag01CP6SQfDhqWklcVzxJvfa1YSZwBJNfqz/+Uk1xE7hZKr9MA8ontrnegf15LBh75/ieZNRlbhAqpmg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=cRQhj0Kg; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="cRQhj0Kg" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-38e7d983f79so17230381fa.0 for ; Fri, 08 May 2026 05:39:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243960; x=1778848760; darn=vger.kernel.org; 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=T1V7f6VwIFJnpdLDcuGNrN4BNy0ycpcL6FQiCdAHMdc=; b=cRQhj0Kgg5DhnnU892yu/XkYZMZS6VdK490TfxXeTZ+S2uQAH6ygut81Hg34k2rOV5 MKsiIzsI9yjrfOsUqTRJ8yboct07N/ZMCakOrvg1VcJ2xuKUprsiFC04CmFP5rEXHnV9 7+rI8YitX/dA9jFil+7qMjYiKUMoZeqCxX2hFQ8+4XhxlO0QXKTWX/kRABgfjfwMtHv2 kgEX3AQayNARs2DL1ETE8jN7vzbPQi57FcI7xgNmgqzQU3z9NAMj43jmGt/tvy+fVlV/ v+NqkHx7nZjNMVs0N28cqgncuARy8Av7jSH88SxLMtQNybFcLdZ/Dy68jsslRIQuSVhX tONA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243960; x=1778848760; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=T1V7f6VwIFJnpdLDcuGNrN4BNy0ycpcL6FQiCdAHMdc=; b=dPIFzXt0CbQ5ubDBnCHlWkm2t7Q5g0dYOtQZFSyebVxK9vyn75eWmKqKnBbqxzfsYY 73RJSF+3vGVoVPqyAQp1G4x9bOCGF1r7/b0cRS2ITfOitv15J9uhxa6PeNvZUGCNcA2E ZjBxEhFe+qvii7C7QMBgWKaIFrbhSP8xDijMyiRoj9s5itod1UfR/zcHXGEWH9DBh/fh GZo799W5Jvp6xnr5+FuoprZB8x2b4fLekv3TLif9oWVemNeZadi6xN1fa38rKjCFiSBH Co9bpFD6JYwJZHn+I2T3dxdwBZsnpG49Io3lCHyEMm+zXRc4vEvTamKxaW2bGHuF7UUk YIyw== X-Forwarded-Encrypted: i=1; AFNElJ8pzoQ+uKF3lczAd3OpbJbKWDPkXPpM21JRb5XdbQMSHhY/z/gGZNDmX8NzQT5ob5BLVw7ZnAU611WiW0g=@vger.kernel.org X-Gm-Message-State: AOJu0YwPQNdDBw1AaRy+BiEFvY9EbXUKtKgvnUr1UtsOjA7wl2SBL+TW NepMjey6Y41/oJvGvPK7ICYbbZX/bidsmkUolqyaF1xzPtO3SpA3BtG8VGrMbFTPbXc= X-Gm-Gg: Acq92OHh4BFwonFbVXqLnduUFwzq95kwKN+ukUtOeKuH2KJ8DgXNuNJAov6mxd08uVQ zAwP+0Y3LXlZW/x9iO6drNS4fGrJrSUqNX+yJwN2IVh3qHy7SP79w3sGQ5Sn4j8y9+jkkulvnW+ eUVddN9uhwu++rvQJ8MQI4L2Kw9hfi2SOuJFkYlOe6oiLeF4mGhftMIGF3Mczia0F7Lp2a4EASe Hi7xlBjaFsj37WEMUjGBpamzO1ZIzAOE+X1TBgU8ztgJfpOYPNFdmP9Ze1vYYLQCteuXcTbnLfH 3zYelEQWANDk/+IG9sIixlKjOPoswr28KQUabr40hP74+6zYjf9ViyzrkzsVSAp3dn71owYPym0 oFNd3slQiYospGvugrneSYV5VMk7SD0QbTcBx1kG0v1ahqKs7nQfHamW1ydUe51uMkq3su1/Edx UrU5b5HfbBIFuygqzDsgVApdIFGaXNwB1aAy4IXkM+FFz8Z7VBLixJJvGezbTBZKqksgqrTomN X-Received: by 2002:a05:651c:20da:20b0:393:903c:2263 with SMTP id 38308e7fff4ca-393c434912bmr37128391fa.31.1778243959937; Fri, 08 May 2026 05:39:19 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:19 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 02/13] driver core: Enable suppliers to implement fine grained sync_state support Date: Fri, 8 May 2026 14:38:51 +0200 Message-ID: <20260508123910.114273-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The common sync_state support isn't fine grained enough for some types of suppliers, like power domains for example. Especially when a supplier provides multiple independent power domains, each with their own set of consumers. In these cases we need to wait for all consumers for all the provided power domains before invoking the supplier's ->sync_state(). To allow a more fine grained sync_state support to be implemented on per supplier's driver basis, let's add a new optional callback. As soon as there is an update worth to consider in regards to managing sync_state for a supplier device, __device_links_queue_sync_state() queues the device in a list, allowing the new callback to be invoked when flushing the list in device_links_flush_sync_list(). Signed-off-by: Ulf Hansson --- Changes in v3: - Re-worked the approach to use a list to queue/flush devices for ->queue_sync_state(). This should make sure the device lock is being held when it's needed, as pointed out by Danilo. --- drivers/base/base.h | 18 ++++++++ drivers/base/core.c | 77 ++++++++++++++++++++++++++--------- drivers/base/driver.c | 7 ++++ include/linux/device.h | 2 + include/linux/device/driver.h | 7 ++++ 5 files changed, 91 insertions(+), 20 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 30b416588617..c8be24af92c3 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -196,6 +196,24 @@ static inline void dev_sync_state(struct device *dev) dev->driver->sync_state(dev); } =20 +static inline bool dev_has_queue_sync_state(struct device *dev) +{ + struct device_driver *drv; + + if (!dev) + return false; + drv =3D READ_ONCE(dev->driver); + if (drv && drv->queue_sync_state) + return true; + return false; +} + +static inline void dev_queue_sync_state(struct device *dev) +{ + if (dev->driver && dev->driver->queue_sync_state) + dev->driver->queue_sync_state(dev); +} + int driver_add_groups(const struct device_driver *drv, const struct attrib= ute_group **groups); void driver_remove_groups(const struct device_driver *drv, const struct at= tribute_group **groups); void device_driver_detach(struct device *dev); diff --git a/drivers/base/core.c b/drivers/base/core.c index d49420e066de..f1f95b3c81e5 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1101,15 +1101,18 @@ int device_links_check_suppliers(struct device *dev) /** * __device_links_queue_sync_state - Queue a device for sync_state() callb= ack * @dev: Device to call sync_state() on - * @list: List head to queue the @dev on + * @s_list: List head for the sync_state to queue the @dev on + * @q_list: List head for the queue_sync_state to queue the @dev on * * Queues a device for a sync_state() callback when the device links write= lock * isn't held. This allows the sync_state() execution flow to use device l= inks * APIs. The caller must ensure this function is called with - * device_links_write_lock() held. + * device_links_write_lock() held. Note, if the optional queue_sync_state= () + * callback has been assigned too, the device is queued for that list to a= llow a + * more fine grained support to be implemented on per supplier basis. * * This function does a get_device() to make sure the device is not freed = while - * on this list. + * on the corresponding list. * * So the caller must also ensure that device_links_flush_sync_list() is c= alled * as soon as the caller releases device_links_write_lock(). This is nece= ssary @@ -1117,7 +1120,8 @@ int device_links_check_suppliers(struct device *dev) * put_device() is called on this device. */ static void __device_links_queue_sync_state(struct device *dev, - struct list_head *list) + struct list_head *s_list, + struct list_head *q_list) { struct device_link *link; =20 @@ -1129,8 +1133,14 @@ static void __device_links_queue_sync_state(struct d= evice *dev, list_for_each_entry(link, &dev->links.consumers, s_node) { if (!device_link_test(link, DL_FLAG_MANAGED)) continue; - if (link->status !=3D DL_STATE_ACTIVE) + if (link->status !=3D DL_STATE_ACTIVE) { + if (dev_has_queue_sync_state(dev) && + list_empty(&dev->links.queue_sync)) { + get_device(dev); + list_add_tail(&dev->links.queue_sync, q_list); + } return; + } } =20 /* @@ -1144,25 +1154,28 @@ static void __device_links_queue_sync_state(struct = device *dev, return; =20 get_device(dev); - list_add_tail(&dev->links.defer_sync, list); + list_add_tail(&dev->links.defer_sync, s_list); } =20 /** - * device_links_flush_sync_list - Call sync_state() on a list of devices - * @list: List of devices to call sync_state() on + * device_links_flush_sync_list - Call sync_state callbacks for the devices + * @s_list: List of devices to call sync_state() on + * @q_list: List of devices to call queue_sync_state() on * @dont_lock_dev: Device for which lock is already held by the caller * - * Calls sync_state() on all the devices that have been queued for it. This - * function is used in conjunction with __device_links_queue_sync_state().= The - * @dont_lock_dev parameter is useful when this function is called from a - * context where a device lock is already held. + * Calls sync_state() and queue_sync_state() on all the devices that have = been + * queued for it. This function is used in conjunction with + * __device_links_queue_sync_state(). The @dont_lock_dev parameter is usef= ul + * when this function is called from a context where a device lock is alre= ady + * held. */ -static void device_links_flush_sync_list(struct list_head *list, +static void device_links_flush_sync_list(struct list_head *s_list, + struct list_head *q_list, struct device *dont_lock_dev) { struct device *dev, *tmp; =20 - list_for_each_entry_safe(dev, tmp, list, links.defer_sync) { + list_for_each_entry_safe(dev, tmp, s_list, links.defer_sync) { list_del_init(&dev->links.defer_sync); =20 if (dev !=3D dont_lock_dev) @@ -1175,6 +1188,25 @@ static void device_links_flush_sync_list(struct list= _head *list, =20 put_device(dev); } + + if (!q_list) + return; + + list_for_each_entry_safe(dev, tmp, q_list, links.queue_sync) { + list_del_init(&dev->links.queue_sync); + + if (dev !=3D dont_lock_dev) + device_lock(dev); + + device_links_write_lock(); + dev_queue_sync_state(dev); + device_links_write_unlock(); + + if (dev !=3D dont_lock_dev) + device_unlock(dev); + + put_device(dev); + } } =20 void device_links_supplier_sync_state_pause(void) @@ -1188,6 +1220,7 @@ void device_links_supplier_sync_state_resume(void) { struct device *dev, *tmp; LIST_HEAD(sync_list); + LIST_HEAD(queue_list); =20 device_links_write_lock(); if (!defer_sync_state_count) { @@ -1204,12 +1237,12 @@ void device_links_supplier_sync_state_resume(void) * sync_list because defer_sync is used for both lists. */ list_del_init(&dev->links.defer_sync); - __device_links_queue_sync_state(dev, &sync_list); + __device_links_queue_sync_state(dev, &sync_list, &queue_list); } out: device_links_write_unlock(); =20 - device_links_flush_sync_list(&sync_list, NULL); + device_links_flush_sync_list(&sync_list, &queue_list, NULL); } =20 static int sync_state_resume_initcall(void) @@ -1296,6 +1329,7 @@ void device_links_driver_bound(struct device *dev) { struct device_link *link, *ln; LIST_HEAD(sync_list); + LIST_HEAD(queue_list); =20 /* * If a device binds successfully, it's expected to have created all @@ -1351,7 +1385,7 @@ void device_links_driver_bound(struct device *dev) if (defer_sync_state_count) __device_links_supplier_defer_sync(dev); else - __device_links_queue_sync_state(dev, &sync_list); + __device_links_queue_sync_state(dev, &sync_list, &queue_list); =20 list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) { struct device *supplier; @@ -1393,14 +1427,15 @@ void device_links_driver_bound(struct device *dev) if (defer_sync_state_count) __device_links_supplier_defer_sync(supplier); else - __device_links_queue_sync_state(supplier, &sync_list); + __device_links_queue_sync_state(supplier, &sync_list, + &queue_list); } =20 dev->links.status =3D DL_DEV_DRIVER_BOUND; =20 device_links_write_unlock(); =20 - device_links_flush_sync_list(&sync_list, dev); + device_links_flush_sync_list(&sync_list, &queue_list, dev); } =20 /** @@ -1516,6 +1551,7 @@ void device_links_driver_cleanup(struct device *dev) } =20 list_del_init(&dev->links.defer_sync); + list_del_init(&dev->links.queue_sync); __device_links_no_driver(dev); =20 device_links_write_unlock(); @@ -1808,7 +1844,7 @@ void fw_devlink_probing_done(void) class_for_each_device(&devlink_class, NULL, &sync_list, fw_devlink_dev_sync_state); device_links_write_unlock(); - device_links_flush_sync_list(&sync_list, NULL); + device_links_flush_sync_list(&sync_list, NULL, NULL); } =20 /** @@ -3169,6 +3205,7 @@ void device_initialize(struct device *dev) INIT_LIST_HEAD(&dev->links.consumers); INIT_LIST_HEAD(&dev->links.suppliers); INIT_LIST_HEAD(&dev->links.defer_sync); + INIT_LIST_HEAD(&dev->links.queue_sync); dev->links.status =3D DL_DEV_NO_DRIVER; dev_assign_dma_coherent(dev, dma_default_coherent); swiotlb_dev_init(dev); diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 8ab010ddf709..b8f4d08bbd58 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -239,6 +239,13 @@ int driver_register(struct device_driver *drv) pr_warn("Driver '%s' needs updating - please use " "bus_type methods\n", drv->name); =20 + if (drv->queue_sync_state && !drv->sync_state && + !drv->bus->sync_state) { + pr_err("Driver '%s' or its bus_type needs ->sync_state()", + drv->name); + return -EINVAL; + } + other =3D driver_find(drv->name, drv->bus); if (other) { pr_err("Error: Driver '%s' is already registered, " diff --git a/include/linux/device.h b/include/linux/device.h index 56a96e41d2c9..6848b0a2c2d9 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -414,12 +414,14 @@ enum device_removable { * @suppliers: List of links to supplier devices. * @consumers: List of links to consumer devices. * @defer_sync: Hook to global list of devices that have deferred sync_sta= te. + * @defer_sync: Hook to global list of devices scheduled for queue_sync_st= ate. * @status: Driver status information. */ struct dev_links_info { struct list_head suppliers; struct list_head consumers; struct list_head defer_sync; + struct list_head queue_sync; enum dl_dev_state status; }; =20 diff --git a/include/linux/device/driver.h b/include/linux/device/driver.h index bbc67ec513ed..bc9ae1cbe03c 100644 --- a/include/linux/device/driver.h +++ b/include/linux/device/driver.h @@ -68,6 +68,12 @@ enum probe_type { * be called at late_initcall_sync level. If the device has * consumers that are never bound to a driver, this function * will never get called until they do. + * @queue_sync_state: Similar to the ->sync_state() callback, but called to + * allow syncing device state to software state in a more fine + * grained way. It is called when there is an updated state that + * may be worth to consider for any of the consumers linked to + * this device. If implemented, the ->sync_state() callback is + * required too. * @remove: Called when the device is removed from the system to * unbind a device from this driver. * @shutdown: Called at shut-down time to quiesce the device. @@ -110,6 +116,7 @@ struct device_driver { =20 int (*probe) (struct device *dev); void (*sync_state)(struct device *dev); + void (*queue_sync_state)(struct device *dev); int (*remove) (struct device *dev); void (*shutdown) (struct device *dev); int (*suspend) (struct device *dev, pm_message_t state); --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F06173DEAFB for ; Fri, 8 May 2026 12:39:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243966; cv=none; b=aKT++VNgtumtqxg/lTQ4upMwDt3drW7yr4HFiaVdW5Cq+ZeKNXF3G0xIOQt6rPwHR6wQ7CaGAGhmW7UU44pQ+93ZwT1CnUY2RIijUH0rpMJz2UwjGpd7xIkok/fFoqfHzrLlFt5NmACCA1lipMw08WGcdc3gXxH1uPLwov9PtYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243966; c=relaxed/simple; bh=G5akryWM8vUlizcTYEH4n9P7Fe2yWjCrGils/cTwsKs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fXJF5BanPa/fJwYXC4l0aKFmZVwv6g63iZkMoaJVbyq91WIHCUBtHYEkK3AV3z3vzZi1663BBOiREaMQogh6JZNHi4U4R1SoC8eNZxux0XOO+yLsBRGqSk0o/gfMp1LLvm6krUzVzl236cI7GDFsEPAb0swQ31nhFy5Va+bhclE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=fymJMKCf; arc=none smtp.client-ip=209.85.208.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fymJMKCf" Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-38a01c80c34so15494721fa.0 for ; Fri, 08 May 2026 05:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243961; x=1778848761; darn=vger.kernel.org; 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=EqUco5wqhLucFlDbE4HzM7pJWTB6souJwvWVN2LvT1g=; b=fymJMKCfRqyRNfo0ek+QV6xQomsWu3roanMIOF92u805bfN4PCUJPaqHi2rZjSALAG jPPqLz4KqD7iD6T/Z9DrAbezKxo3IA2POx5rD4MlwNLsOnzOrQnCRUXlMrgZ1MgGAPo8 glUEY5Xrx/H3q4ZjRpIOOEjRfFJF8FLmL5Wz7o4+AUWf85ENkyOa5bEexiqtyX78nysk /87ZAyDgub/Gq2+uvB2TCllNS2tozsG4w/hmRZN/8bvppmYWFJn6Ivw/GKK1XD2w/1tn s6Nt2JaVDQc9KfU5dBE8/KE+Ljjj1LwA8Bsa1ogSL4PqXR6LBachXvZnGFUflUFQ+t/V Lumg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243961; x=1778848761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EqUco5wqhLucFlDbE4HzM7pJWTB6souJwvWVN2LvT1g=; b=M7OKR4jFNnqnuGvMI6tE2HgyJvR4vlpa5Ub/ly4t1fQ0ssRQMpIfBeEJYhTScnU1hx sz0wWwd0pErjPxLDk48nGemKYtMA4cF2xDffUPnRBNrWzvXrgc7M1Gqk2R5YHN0ZdO5d FTI9ElDKGLFJ4Sp9UqKXbkiwSDWc2NJB7QealTHUzuN/WHELUtTekWje1r76GIeI1JPh hFnDzr5H10BeBjq+PvGsz9ByC3yGnyDbRSZWXW55a+5fEXETY1rZUtc22O621bJKzG5W qM3shWan60JfTHRV/GmGLzr89wXUnIGDgkdeT+p0Szzpbs+uzNm22AY4uptYqQS2djyX GpNQ== X-Forwarded-Encrypted: i=1; AFNElJ9RvUbcY8uXC36b9upFDkEub6U//Nqd7frntoBVg1qXcjQURtn+HqNFQJcTL5/P+vUH2Y4utpVffIufgyc=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8bJyFaxxnAzK1mkV+krRxV4Gb6vkPa9LX6bU9L1VIhm73mjsa Upws2pUoM0GA+4DIb48ZVzFceIliLuHwbJhpa/1JhTFFZNv/vIe3numGQg5C+mFo9dQ= X-Gm-Gg: Acq92OHV845+wRTcd8WF1N2d2XDwW+4StamE+mx57iPol7dN8+2QDNViZu6bDQdJu2Z atvdm3db8TRbbua8FrzjCaRCwnjPs+nNtl9GwSDUYBD6ELStWFC0BdpaiDBkLTzBtzRtYS43+it GRc7p/ZJYK7IxpwvQbjPAQNf1wMYHcC7XUlHW2xWRceuP9Fehw2NCESvLupuFNjWiQ7ge/7Tw6s gFLPcK3DlfR+oIhQweOEFWFi0HeIfC1dulxhoA/UFM64dAayrwOc9Yvp/o04dLdL85FLTCfft7q f7fc9NbHqqHb8qf7zNpWhiXugsblk0lFlvZnqZKBlYQTomJaOWzA0pzeYSKavu9ly+epqMJJVEE anvIzB0ca7pOzXA66pz8qXYudhotTxcuSM8ZPSuhqc3bMSBGsvu6Xkwtzz6PtNzEJNubiLADII3 ELBhHuSiRzFhdjFJuoYX4sJhyscts/nrP1aBXYuIDjtmok9fIyIHb4X2jP5j65+mbpLH4eXCIO X-Received: by 2002:a05:651c:4187:b0:393:d6dd:e8a1 with SMTP id 38308e7fff4ca-393d6ddee4cmr27954951fa.2.1778243961174; Fri, 08 May 2026 05:39:21 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:20 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 03/13] driver core: Add documentation for dev_set_drv_sync_state() Date: Fri, 8 May 2026 14:38:52 +0200 Message-ID: <20260508123910.114273-4-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" As dev_set_drv_sync_state() is an exported function, let's add some documentation of it. Signed-off-by: Ulf Hansson --- Changes in v3: - New patch. --- include/linux/device.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index 6848b0a2c2d9..209feea8050e 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1077,6 +1077,14 @@ static inline bool dev_has_sync_state(struct device = *dev) return false; } =20 +/** + * dev_set_drv_sync_state - Assign the ->sync_state callback for a device. + * @dev: The device. + * @fn: The callback. + * + * This function dynamically tries to assign the driver's ->sync_state() + * callback for the corresponding @dev. + */ static inline int dev_set_drv_sync_state(struct device *dev, void (*fn)(struct device *dev)) { --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DFB63DF01C for ; Fri, 8 May 2026 12:39:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243967; cv=none; b=PFMKA/dm4gfx7rZ1K1Szu0wiV4Fw0bww9/ygJ5R+6+Lz+Gus7sf6Vw3k5iq04wFq/gfY3iM02KsEXbt/TudvcjqqDQq3kTCRy/+YZuj2aUZB91arPScPZhFTEg9QUuG8vI9NkBS0aIjjNeeDeMHwA4wT7lf3ZMZJCBrrSg5jUrU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243967; c=relaxed/simple; bh=x21rpCj2MmWyH5v65OaxPiuzKvSW4AaipSpIKhwJrLQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lY29OgxXfnWkm1c1hMiSSIzWM2CUr331YU/OAwjf78SQG64Zg0yUTZE+UE4tFLEBeN/5h8kU/58Hhwl4MNOu+3RJtvZLKhk6x11ShgmFbIIt/CchW5jMGt54mWTU6+xwzapCjzYeVc7qRJkdaMsyvXUBTAnWjQQo/uXNdpYh000= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=OATle7KI; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="OATle7KI" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-38eab6cf7d8so15766051fa.1 for ; Fri, 08 May 2026 05:39:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243962; x=1778848762; darn=vger.kernel.org; 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=/rFfqTD2TBGaZTLksk3KUxZXH9uYFCtiZXBW3shTh70=; b=OATle7KINkcwJisGtE20AnMDLqjtDjsMTw3zhh166tHhiiz4V6eu/5fxw+KGwSMyh0 6eIP7eidlAZQM13jWuO7XVnlZE7yBOJCQiQY8WMRsDYZ3cgKdAi7oerJZyr61jG8Vhdz 7+31MMDQ486CK2MiK5HVfx97ztniU6KAjcfc7VwmKTnxZl1Ii/l4/p3ZHWETIPxKSHf+ bAnPRh2kgxWkm3FHb0pPU1qNtwiFDX2XvT1w5FFzKOetSYaMz6A1VnJhvg6pxJj3aS/p FPEk+w/fCCN/bRFJ6APuU0D2GKmvQP/HOqjEHfmGWKRIWA+iQmMgg1Wfv+rX2oQXjBxJ PAag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243962; x=1778848762; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/rFfqTD2TBGaZTLksk3KUxZXH9uYFCtiZXBW3shTh70=; b=WhiSdMvkzddGwmlXgFyS8vGOb0pPeG65etH4DHyx3pco6JACKGT2NTZXtznN1nNiob 0nvvuO11POL4rGi7Qy2tFjTdllHlgOFq8NRpecVCfA9kJ12WCxHW3rwTRR6+ZlM1QD8k jWEvzk/MYkyo0buqxIC6WMI8OSLvh99Cv9ntBZtU5Ufc8ITycUDHyfo9cQ6yWMdVZffo QwMU4UMvpGUBZDRXuGB16WqBoP+HQ4AIMqNxQMx2iZr6CGfpRUfZgiQWByN4HnoNfim5 duKj1UG+ITuR4PCkUQb1GH3prxUhQFBqMx/BcXKAUSG+lVcXh6miLFtdPis4dt58ItGj 17Fg== X-Forwarded-Encrypted: i=1; AFNElJ83JhEaOuts60lzcJkWlWxGZeykLqCJKq6aopzgw7jDu2OTjLHYi3SVLydV+S9rH1ssS4p4CsMd/ty8Xpo=@vger.kernel.org X-Gm-Message-State: AOJu0YyYxhD6CApSy2WVL9IRwmc3NB1FHpUHWtNZVPSk6IK23QLRDB/I 6+2dQHYUp4AUCS1v1vDkcloQORWVKplE3AfpfiLd+rOOUTmHvHO/utiPoqJrQX5Xfyk= X-Gm-Gg: Acq92OFGeUVhHn+Z6oLE8D6yezOpcyJtnDmcnIYxe2LmhxxI6znmpvC0i6tbhbJ+H8T cRgh5JCE0HEJi9Pti9WtxmJVaIXaUU0+UVMOo+nyekJJvgrQZiEJ6qbvaTa01oVK6mXpwuykwkU yChFOLq/FHeC45s+hLPk0kBJbPxCVk7aKioYLbxxEA/JQ+80+s2qjukdgMUWUVehUOC/Ia8Jlvj m8/BhMmNured+FUVWa4sBbV5gpiXzqVW3VXtuqwmd2hraEhzmdxjzC54E0y/atOzMCysFGkyRgX yVRrhpwrny8WjezIcxWt1SeoTreRyNbYI3W1QV9MzS8OJierkluemSEdvWomun7hfnfQK5cWj6A 66J7JJMD7ZIZu5d60zXNfy6n84YltnqmzIXdq8z2RTsP2J6HmMXvZRC66a+crJ1xXuhHbmP0pD4 I5aC+BTthfOZJdPn6RuuCBOaCzSY5nnDl3BPxkVBW2uDxo93+4hNzQdcdrmTwGeOZsck5BEFpy X-Received: by 2002:a05:651c:318:b0:38c:6b42:3d77 with SMTP id 38308e7fff4ca-393c40ccf92mr30580291fa.2.1778243962364; Fri, 08 May 2026 05:39:22 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:22 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 04/13] driver core: Add dev_set_drv_queue_sync_state() Date: Fri, 8 May 2026 14:38:53 +0200 Message-ID: <20260508123910.114273-5-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Similar to the dev_set_drv_sync_state() helper, let's add another one to allow subsystem level code to set the ->queue_sync_state() callback for a driver that has not already set it. Signed-off-by: Ulf Hansson --- Changes in v3: - Added documentation. --- include/linux/device.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index 209feea8050e..e32f85e8d80c 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1097,6 +1097,26 @@ static inline int dev_set_drv_sync_state(struct devi= ce *dev, return 0; } =20 +/** + * dev_set_drv_sync_state - Assign the ->queue_sync_state callback for a d= evice. + * @dev: The device. + * @fn: The callback. + * + * This function dynamically tries to assign the driver's ->queue_sync_sta= te() + * callback for the corresponding @dev. + */ +static inline int dev_set_drv_queue_sync_state(struct device *dev, + void (*fn)(struct device *dev)) +{ + if (!dev || !dev->driver) + return 0; + if (dev->driver->queue_sync_state && dev->driver->queue_sync_state !=3D f= n) + return -EBUSY; + if (!dev->driver->queue_sync_state) + dev->driver->queue_sync_state =3D fn; + return 0; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C67763DE445 for ; Fri, 8 May 2026 12:39:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243970; cv=none; b=Pho2r5PrnHSzJoJm/1SEUtHw8m8G70ie9+9oh8CFErH0Hb/H0NpGkgVDtxw6VizUdZr+LB0tW0XnDD//QtIC/bDokkbf7+Vquf7pB+BCflcZwExaPcLy4HmZkBTmvn5Z6R7AKdAq4DhhmLbGiqJpWFaw5tRyf8frd98lr1Zz/DE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243970; c=relaxed/simple; bh=Xs/HtiPO1xtJDcZVerZ8/69q45pZoH9BAsnH8Q37rk0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PoURxmvRpLKGu7GDNhJ29YrXx3IYWuNPyBWOcgHD95YkZ7lXrvLmw3VmqkVKRWLMi4LGEA7cqsEXj6mkOuBrBD0OjpVpSVZe+9vYqa86HyHmVv6zgG27SZuJgzVjEmnOiLtM/ljASg3Lq6Y487VJG23Fe6GTnAwmV0uIHW4FlHg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=d7+ruDgR; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="d7+ruDgR" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-5a8891f0c88so1210844e87.1 for ; Fri, 08 May 2026 05:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243964; x=1778848764; darn=vger.kernel.org; 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=9n9228Bd6H5JKp1KPGvBUKX9yk7WrbeWnXK2gI0yqVU=; b=d7+ruDgREprDZ99L65wfXyNkugCrd8mQ9X9Cudvb4wKtFj8UEfh0XwE51X7NnwP1X6 2H9XN0okfzjXFcEkoBW03gcZhC5ovzsuTxgrAD0JDOvQJWgjKKObaB3rgFLv5OJ1l7rV aATzy+Y+ylLywxZhfYWEuWtabI+GQo0h8pVvw5z3HxTKAa42/UwOVWOHhGmHlfPgRcJd LYr/ElX2t4StdhDxS6crdDXRSBNgAdd+R4C7OMGvy8Iv0cMr2VlMz1fAVJpErNeFCmxi MkfYYSz/G7b3qyRYmmhmKpQ93CMb4hwY4Jet7w4Snu7tzx2RSo7TgKkOktyKga/zJrlz lpWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243964; x=1778848764; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9n9228Bd6H5JKp1KPGvBUKX9yk7WrbeWnXK2gI0yqVU=; b=dDeLkC+h+PnKk9Tg761l+E1fyFrnt2d25KQZ68KOhtT++tAFimamBWIga9Q8wC9ToU CElwgeQuGIvLtYQ1Dd/e4xgjfD/5doUmrcL5LyavUKbBoQ7wV7lZeZ8RsP/7qklZddkk 2rzmz/z/yWA6BMOtx4V+Pg3wDFQ/VQ4WQvUNcaD//ojMY2wtKAoDOXqPbvbQ/Mgq0Crq OTSdcoNF/fWfFpW+JFkia1gkKC7XMjh5WjupMQLzbTreaXv4GdhLVQ5/mdELjz33hgoh v6Ls9U3dxXj8+aK9ITvEDnVkWC22yjLy3OITf1WNaAMv57lEVqljCsR444DYkCxGZ+FH fp+Q== X-Forwarded-Encrypted: i=1; AFNElJ/ZmWuhgq9LSvjINSqn4YsxvZH0NcDB6Rotdq2ABvthrnyXTEHHAn18GNdQTFmcBng1JZwBd5KEv5HmGgc=@vger.kernel.org X-Gm-Message-State: AOJu0YxDopMb7BtK8N2C6ubzncHoqh7EOeJGZZa99FQvL+rKsHY4aSWd ZH1CsvmkZsdLkmOqF+Z86mqZyFAV//5Tny00LMMvQFnvLJkEcGEwu3qSsVs6+/3mXTo= X-Gm-Gg: Acq92OFpkB+D8l6VaPnyhvdfzIrrSx2BE7uinjEQ+1b8GNVgguoqBcuOnECFrVcDfLF umquUkHndTfxx8tR959QPSdg+cx86AR/+oXr3jIDpEjSFWNM+q0kc86bjnoqAlxgCX43TF9dqQ3 FHo5lOqlHLHN3XNnYa9KV/aFBJDq3Xj4e8Kc0LPrlERAE/rkOZ44ZKdTlpjHMRQ1a29osolYmNk fo1/xrrpewRuU7zd0LUZJ9PFdLjJtNemHUNgJKOqnlNiR9mOl7DmiaQPIi/+W4KON7NgRDukIKZ nyeJtHWmBqgR/ONoe1oB5nZaLjZtQXs+4XosmOZ09JjHG5NJrsCaGff1GCkPlEYY452dJpEFgO9 CKCugHLtBMwPvQip30iQc2UJZ7iyn5DWGYAquOEjn8s4j02aCPMfoQy8LivfHBiDpBoJ9n4K1vv ywoxSDECwDwjxF55Z+qC+iwAvZgpZxJlZrpcErlxFiIi2gubjqZSKB97KW8WyHeWvwLZ6NEBOhp Otr92L7yGA= X-Received: by 2002:a05:6512:15a3:b0:5a8:837b:3d80 with SMTP id 2adb3069b0e04-5a887cde91fmr4509411e87.22.1778243963646; Fri, 08 May 2026 05:39:23 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:23 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v3 05/13] pmdomain: core: Move genpd_get_from_provider() Date: Fri, 8 May 2026 14:38:54 +0200 Message-ID: <20260508123910.114273-6-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To prepare for subsequent changes and to avoid an unnecessary function declaration, let's move genpd_get_from_provider() a bit earlier in the code. Reviewed-by: Geert Uytterhoeven Signed-off-by: Ulf Hansson --- Changes in v3: - No change. --- drivers/pmdomain/core.c | 70 ++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 4d32fc676aaf..ad57846f02a3 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2664,6 +2664,41 @@ static bool genpd_present(const struct generic_pm_do= main *genpd) return ret; } =20 +/** + * genpd_get_from_provider() - Look-up PM domain + * @genpdspec: OF phandle args to use for look-up + * + * Looks for a PM domain provider under the node specified by @genpdspec a= nd if + * found, uses xlate function of the provider to map phandle args to a PM + * domain. + * + * Returns a valid pointer to struct generic_pm_domain on success or ERR_P= TR() + * on failure. + */ +static struct generic_pm_domain *genpd_get_from_provider( + const struct of_phandle_args *genpdspec) +{ + struct generic_pm_domain *genpd =3D ERR_PTR(-ENOENT); + struct of_genpd_provider *provider; + + if (!genpdspec) + return ERR_PTR(-EINVAL); + + mutex_lock(&of_genpd_mutex); + + /* Check if we have such a provider in our array */ + list_for_each_entry(provider, &of_genpd_providers, link) { + if (provider->node =3D=3D genpdspec->np) + genpd =3D provider->xlate(genpdspec, provider->data); + if (!IS_ERR(genpd)) + break; + } + + mutex_unlock(&of_genpd_mutex); + + return genpd; +} + static void genpd_sync_state(struct device *dev) { return of_genpd_sync_state(dev->of_node); @@ -2889,41 +2924,6 @@ void of_genpd_del_provider(struct device_node *np) } EXPORT_SYMBOL_GPL(of_genpd_del_provider); =20 -/** - * genpd_get_from_provider() - Look-up PM domain - * @genpdspec: OF phandle args to use for look-up - * - * Looks for a PM domain provider under the node specified by @genpdspec a= nd if - * found, uses xlate function of the provider to map phandle args to a PM - * domain. - * - * Returns a valid pointer to struct generic_pm_domain on success or ERR_P= TR() - * on failure. - */ -static struct generic_pm_domain *genpd_get_from_provider( - const struct of_phandle_args *genpdspec) -{ - struct generic_pm_domain *genpd =3D ERR_PTR(-ENOENT); - struct of_genpd_provider *provider; - - if (!genpdspec) - return ERR_PTR(-EINVAL); - - mutex_lock(&of_genpd_mutex); - - /* Check if we have such a provider in our array */ - list_for_each_entry(provider, &of_genpd_providers, link) { - if (provider->node =3D=3D genpdspec->np) - genpd =3D provider->xlate(genpdspec, provider->data); - if (!IS_ERR(genpd)) - break; - } - - mutex_unlock(&of_genpd_mutex); - - return genpd; -} - /** * of_genpd_add_device() - Add a device to an I/O PM domain * @genpdspec: OF phandle args to use for look-up PM domain --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 18A733E022A for ; Fri, 8 May 2026 12:39:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243971; cv=none; b=iIASdyrwd1A5gxvN3wK9yyNaEyHiVmfj0f6/QcR5otB3dNGc7Uf9ppGyUxN7mZdFEXkM0yFUsVD0gepyswr8zSSvJILod+MeO2BQpHKyjSY2MM6XSxdWYE4pTTPttSlZiVbfgmbKzwdPxUwo5zkmhQgZSPAAefIFeIEVhtEKc1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243971; c=relaxed/simple; bh=sXCjyMUZo4URsDmSQZ9Vo8gr83eBVJtEB1jj+SkQaL0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BCXLstyGPQr1lCv+iy4XyMYvuyfj3NJA852RdO5Q49SQ8jp4oqwYf6YyMyPWdr9j0jAnSc8V2PUoBJtY7VgPhqLiz3AJD3bwinuYHTkLrXW2yk2+5AJqhcS4DOkUW2J8SUhS6MHw+PQqF0V89UUBrx2EH70BxeUqLhqihi1w9rQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=SIabo4/6; arc=none smtp.client-ip=209.85.208.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="SIabo4/6" Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-38eab6cf7d8so15766461fa.1 for ; Fri, 08 May 2026 05:39:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243965; x=1778848765; darn=vger.kernel.org; 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=/rXkI/5pJxJgQUkPnjmS1Ch3OvikdB3cgLvtk24pgs8=; b=SIabo4/6WvJ+/TtNXbjxqr8JQW/F1uIIeblZXjvz0iXK0wWFwL/Taxshgrwi4ej9U2 mYzR1Ax3+iA6qkwM1i/FhpyjLgVqf0BquaUHmt59jYMS/xXzuDo9MrF9l/ZQ+fWr2zHc uVsKjyHhdEkWXYFMeNk713k5N827etMTvArx04NRcqfNtTmnbZIzFbFkIktqSiLSFC5n lXw422EkEpJxKcrfWmHsABTdEhR6dl9qp6BUdL+ter5NMUlfNbFTwgGYV4TFhoY/DIo2 VJSm47bavgMka1ik8v+si5WTfB892neIJAmQrXqiMmA9CNsQc420U+5m7W3BmRwus/x2 A5uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243965; x=1778848765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/rXkI/5pJxJgQUkPnjmS1Ch3OvikdB3cgLvtk24pgs8=; b=Jum+bziQ1WakbpT7Jobhg/u9nmX7Pv29Svc98TuOgUHjhUuhGP0+5aT+qAqXkw34Mf ODmZyfr8o94VKwTgnt0iYKKfToF2wcII74mpky1ZUZPZZy/G1a/f812m1LiLMLrcJjuM /gNJ37HTI03PF0BPvwUKrChd4V1FA/nM+lQDVfsh2iuWvkIEgGpQJg0SKCXAxN4GvbU9 /OWvsU/S5RVfKTb0cxEIdSAZ+PasNly+a+2VmEpXqlV7uOLZ/X+eqOWvvjjkiT5As6M8 iW3SUGIpHbAWnf5WOsqohhnGwh+v4XAecTzyEpmhtATCvQYgH7q7+z0nFXNxsRlzj7Ip d/MQ== X-Forwarded-Encrypted: i=1; AFNElJ9prI4L6q8B+oJNm13Qtc5J8mWVIf/Q/+lXdNdHsCmhZMSYNLOBmQ6NJlfAqaEbi6x516WSdWN0TsHAT2Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yy355yd/DMCv5VmzPfWjVifut3Rc0sme+ZAE3ZqNc5eap2sxVP2 YbM+AOO2zlmkbkIKMwnKPYIZPgEGVQJQJeW3f5vcZrV9GAxdTtU5kexK0ajr/ickBmQ= X-Gm-Gg: Acq92OHnNg9BVXXD4cvlbMhmnA+isUSrVcD4zioz7Sa2qWtq0VYDl/rzfCROeJhkrbS RE5oMlrVKBwhK2RpvsgWslHdwfl3yqCnSrJmhEAquzwol5uCTesIUyOTCG5mpFS82DRK4W8WwCr 3lPnf+56JBkyaJkColFviNPhOsGAGnbCTBwvGJ5gvL97rw+R9nSGDflwJnxjYA11InBOBpVqli9 EvkmO2T83b65T8ScSoqbo46mwxkeePJ6zqrEZ8PmWBUgiUU63xcJQ83ZvcY7KqS2ibv4ruCvVFw iD0YZhXSMFDosINnR0Goho1A/VuRhS3czXjrZBwz6CZHs5/p5UhhQavgyGgFlPXyRM6Q7LooDbq Wvzj1tNq90Cn6XZmnZ/4mQ8eW86hhk5hG9PIBhPRdDBao0YkCY9QwfRyQENiGRRpn3lIm3EHuri CchWKp9rPJW/2k7lfZTH8sOlmz3IDSB7CgZwMgFQIDc/0Q0if6t+NDOdE3LqP0nUIHYmT7Sbyh X-Received: by 2002:a05:6512:3f1a:b0:5a3:cc81:eff3 with SMTP id 2adb3069b0e04-5a887cdff2emr4839959e87.26.1778243964852; Fri, 08 May 2026 05:39:24 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:24 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 06/13] pmdomain: core: Add initial fine grained sync_state support Date: Fri, 8 May 2026 14:38:55 +0200 Message-ID: <20260508123910.114273-7-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A onecell (#power-domain-cells =3D <1 or 2>; in DT) power domain provider typically provides multiple independent power domains, each with their own corresponding consumers. In these cases we have to wait for all consumers for all the provided power domains before the ->sync_state() callback gets called for the supplier. In a first step to improve this, let's implement support for fine grained sync_state support a per genpd basis by using the ->queue_sync_state() callback. To take step by step, let's initially limit the improvement to the internal genpd provider driver and to its corresponding genpd devices for onecell providers. Signed-off-by: Ulf Hansson --- Changes in v3: - Addressed some cosmetic comments from Geert. --- drivers/pmdomain/core.c | 124 ++++++++++++++++++++++++++++++++++++++ include/linux/pm_domain.h | 1 + 2 files changed, 125 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index ad57846f02a3..c01a9a96e5c2 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2699,6 +2699,119 @@ static struct generic_pm_domain *genpd_get_from_pro= vider( return genpd; } =20 +static bool genpd_should_wait_for_consumer(struct device_node *np) +{ + struct generic_pm_domain *genpd; + bool should_wait =3D false; + + mutex_lock(&gpd_list_lock); + list_for_each_entry(genpd, &gpd_list, gpd_list_node) { + if (genpd->provider =3D=3D of_fwnode_handle(np)) { + genpd_lock(genpd); + + /* Clear the previous state before reevaluating. */ + genpd->wait_for_consumer =3D false; + + /* + * Unless there is at least one genpd for the provider + * that is being kept powered-on, we don't have to care + * about waiting for consumers. + */ + if (genpd->stay_on) + should_wait =3D true; + + genpd_unlock(genpd); + } + } + mutex_unlock(&gpd_list_lock); + + return should_wait; +} + +static void genpd_parse_for_consumer(struct device_node *sup, + struct device_node *con) +{ + struct generic_pm_domain *genpd; + + for (unsigned int i =3D 0; ; i++) { + struct of_phandle_args pd_args; + + if (of_parse_phandle_with_args(con, "power-domains", + "#power-domain-cells", + i, &pd_args)) + break; + + /* + * The phandle must correspond to the supplier's genpd provider + * to be relevant else let's move to the next index. + */ + if (sup !=3D pd_args.np) { + of_node_put(pd_args.np); + continue; + } + + mutex_lock(&gpd_list_lock); + genpd =3D genpd_get_from_provider(&pd_args); + if (!IS_ERR(genpd)) { + genpd_lock(genpd); + genpd->wait_for_consumer =3D true; + genpd_unlock(genpd); + } + mutex_unlock(&gpd_list_lock); + + of_node_put(pd_args.np); + } +} + +static void _genpd_queue_sync_state(struct device_node *np) +{ + struct generic_pm_domain *genpd; + + mutex_lock(&gpd_list_lock); + list_for_each_entry(genpd, &gpd_list, gpd_list_node) { + if (genpd->provider =3D=3D of_fwnode_handle(np)) { + genpd_lock(genpd); + if (genpd->stay_on && !genpd->wait_for_consumer) { + genpd->stay_on =3D false; + genpd_queue_power_off_work(genpd); + } + genpd_unlock(genpd); + } + } + mutex_unlock(&gpd_list_lock); +} + +static void genpd_queue_sync_state(struct device *dev) +{ + struct device_node *np =3D dev->of_node; + struct device_link *link; + + if (!genpd_should_wait_for_consumer(np)) + return; + + list_for_each_entry(link, &dev->links.consumers, s_node) { + struct device *consumer =3D link->consumer; + + if (!device_link_test(link, DL_FLAG_MANAGED)) + continue; + + if (link->status =3D=3D DL_STATE_ACTIVE) + continue; + + if (!consumer->of_node) + continue; + + /* + * A consumer device has not been probed yet. Let's parse its + * device node for the power-domains property, to find out the + * genpds it may belong to and then prevent sync state for them. + */ + genpd_parse_for_consumer(np, consumer->of_node); + } + + _genpd_queue_sync_state(np); +} + static void genpd_sync_state(struct device *dev) { return of_genpd_sync_state(dev->of_node); @@ -3531,6 +3644,16 @@ static int genpd_provider_probe(struct device *dev) return 0; } =20 +static void genpd_provider_queue_sync_state(struct device *dev) +{ + struct generic_pm_domain *genpd =3D container_of(dev, struct generic_pm_d= omain, dev); + + if (genpd->sync_state !=3D GENPD_SYNC_STATE_ONECELL) + return; + + genpd_queue_sync_state(dev); +} + static void genpd_provider_sync_state(struct device *dev) { struct generic_pm_domain *genpd =3D container_of(dev, struct generic_pm_d= omain, dev); @@ -3559,6 +3682,7 @@ static struct device_driver genpd_provider_drv =3D { .name =3D "genpd_provider", .bus =3D &genpd_provider_bus_type, .probe =3D genpd_provider_probe, + .queue_sync_state =3D genpd_provider_queue_sync_state, .sync_state =3D genpd_provider_sync_state, .suppress_bind_attrs =3D true, }; diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index b299dc0128d6..7aa49721cde5 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -215,6 +215,7 @@ struct generic_pm_domain { cpumask_var_t cpus; /* A cpumask of the attached CPUs */ bool synced_poweroff; /* A consumer needs a synced poweroff */ bool stay_on; /* Stay powered-on during boot. */ + bool wait_for_consumer; /* Consumers awaits to be probed. */ enum genpd_sync_state sync_state; /* How sync_state is managed. */ int (*power_off)(struct generic_pm_domain *domain); int (*power_on)(struct generic_pm_domain *domain); --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 189BB3DFC99 for ; Fri, 8 May 2026 12:39:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243970; cv=none; b=dkGfl0BaTOVjCSFlOTm9q/TVdKPvKijzpVxt7z26o6ZpkxwsHxzcT5xoCmOZhbaBbQks5RACQrCgApIKudFSbb9iE9DfUx3RtEFd9NNNqj4eHKATBZEZGFcpg5deyhmvzrslPIMB9uZLrtJAGURMAu+jYsxLe13tgCRZmkbZPec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243970; c=relaxed/simple; bh=7gIAiqk0uBq/8qs3H4g0U1Z7c+Lxfh/MrGyhojYR0fg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UUnM8RR1bBa0rrkcboyUg1I1sJBcr3rt34KJEQSAb/9/bxLIFUNUJutXH7tyVZa75YZJf5qihPfgxOA/mQ0LaWoyWYaQmS7oQz6A3tfyYARmQiLVdfEqjtAGzF+4l8YmP2OMkTcV/wV4XC6Gn4bvj2nqhKDibopwbDJsJzVT+eo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=kOy3ouUz; arc=none smtp.client-ip=209.85.208.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="kOy3ouUz" Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-38e84ed22bdso16961771fa.2 for ; Fri, 08 May 2026 05:39:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243966; x=1778848766; darn=vger.kernel.org; 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=JFYMD9J9S/4UjhCI/3FhGblWRPgd4BSU/A4adAW4pr8=; b=kOy3ouUzhNBRWao7uLUyYW9qqzMhnOaKPiLlob19/vRZbG8mc9X3vhT82SjUoz4SxZ OaA6ATzroHnHP2n/i8DQhrCFbX+QbTJAkuhhkNJFm+LKH+EuSUQo4nt0SJ5kKITRIJCT TPkRWJSqMbAyoUBeo/PzVauUiaO6GYRYlc3FPIT7LQhkKKvo7wBJUJL33fy6dscHcFkA uTMxejPctIEQr/wVu/N/e63qwb5mHpCki3NvHmurIf9NXZQZJGntVhsgkLCcY5p6D57I aB8HZvtSuHejQ/8e0LTscOxBDw3Z40hoJnQITdtewmLE/6NBbtO/ZtgEXtAIzIVx41FJ +mig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243966; x=1778848766; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JFYMD9J9S/4UjhCI/3FhGblWRPgd4BSU/A4adAW4pr8=; b=OoftVP1pThqMr53ZjTMhElCONaj6/8N+wS+eVokd+4q/SjE05AEacTbTiSUqSLxpVP cHlW1MUUp9vPKaNPe4QWB6tYbjpQOHwuAvv0S86hoMAuzPIbKrPvawuXHRqpNV0+SnN5 JmHyqIQa5Rl8MnT9coISOg1deyLRSuIAs4UI6NQXxSw/bc96y1o80M6SF4Qc3LI2u1jd pErT1xJjLNosTkhRDw34PuILJ2JsGnfhogJ3+efZEnbQpjrRdCW65crOyahSYuDekjGC Nnn7O5w/NxD+wl3MWn7QeKJFeKeatXFNafLH72aEKQs62spws5sykMw/iRJcBSYTxNw1 W2BQ== X-Forwarded-Encrypted: i=1; AFNElJ+VVLIrF/QGcEqmU/miPjAKE0y7xh02e12qa/RgkGy7AJHiMLDAxi/g/iQaAyF6wxQwOjbdTRWmRdHDv6o=@vger.kernel.org X-Gm-Message-State: AOJu0YwyQFPzbnGY1jz9gBCLFAKhpRK6D5Tjc4OKTwjCb+lxa4QYOGSE xaCmIOr2rLE28aPJGi9eso9zMDuIm5w7vkzT5QIXQRRXdksRT5hToCl5ehXCLT4dS6Y= X-Gm-Gg: Acq92OErqg2RLm/uS3qBxdjIJ5d3HMbTutdev2aRUKVA6A5nYBo1EZJvGMB5OGC1bib yE35sTGQSIjswv3TQST/QAiCXe9QkPkKKS7Exe+5QTyQw128jFC+TK3x0jmDDm/0RWgglLeFPSJ b8Y+IXiClTLTZ/Td/kscik8yNdJVSIeulYW4tzPeNrD8KLXbLkMgxvybHAP5DW2ZFSW45uVAilC HIYx96yiORkPXui/2oYIc8Vz3P86dKzP6QKp/q/PkIyS0pb17uhynx0hgp3o/MRT0TB5DqHSShy u3E+ZKuqlNrTeiuvatsnoIKAeVbTmqXIo7xvTSxGi0PWkKoUFOO98i1CAvFAazF0PhYISZqe2tw lxxCPi2SWgl25UK55e3/2fY0Saama6J3djFmkaIiRNUmmH4B/TZWvE8zeqwGVM53vMREER6/B8w 9yiN7sg9EeJ5K2nUfJ5EvBpBfNJzAdmPJlG/PatTw5Ytt1U5JEJPjnGnRwiu72OZ74dQaHgkAy X-Received: by 2002:a2e:b1c4:0:b0:391:a48:a4a2 with SMTP id 38308e7fff4ca-393c41368a5mr39654801fa.10.1778243966200; Fri, 08 May 2026 05:39:26 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:25 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 07/13] pmdomain: core: Extend fine grained sync_state to more onecell providers Date: Fri, 8 May 2026 14:38:56 +0200 Message-ID: <20260508123910.114273-8-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A onecell power domain provider driver that we can assign a common ->sync_state() callback for, should be able to benefit from the improved fine grained sync_state support in genpd. Therefore, let's also assign the ->queue_sync_state() callback for these types of provider drivers. Signed-off-by: Ulf Hansson --- Changes in v3: - No changes. --- drivers/pmdomain/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index c01a9a96e5c2..b2b5cc30c7fc 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2917,10 +2917,12 @@ int of_genpd_add_provider_onecell(struct device_nod= e *np, =20 fwnode =3D of_fwnode_handle(np); dev =3D get_dev_from_fwnode(fwnode); - if (!dev) + if (!dev) { sync_state =3D true; - else + } else if (!dev_has_sync_state(dev)) { dev_set_drv_sync_state(dev, genpd_sync_state); + dev_set_drv_queue_sync_state(dev, genpd_queue_sync_state); + } =20 put_device(dev); =20 --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 615423E122F for ; Fri, 8 May 2026 12:39:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243980; cv=none; b=IgFpTd/XS5zAZbeFgKVpfaDZudvAfdzVsnhfRAgkbBo8eenEcjeP5brVKFBJcY2lR6lpZr0kd5mM/+jI8GPfEVcuRrDLC2cGdeFUXmg/BuV3Re7o50A2CH21xpPx78Pr2ppIjzP6G8RaS57EiHV0cxUgoh227ybfRyVQRYp5XXE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243980; c=relaxed/simple; bh=H6q4OVKbLdwM5DS1ok0o5JbRxgmDunwRDH7Ew2Jb3pE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LYc0mmYhnKCMoeixE2WPYLftPE2yX8OtZ9haS1j+/Z0Z/DZpYRbX4bZwT2MvJqkslbKcQ56A0GzgqCjy9UmYcOyFodA2GLZvG5fu+oPeAqs5WRk8wmnl+B3WZEMcuRav7BrTkPFlKKbXfEEGv1fteO7qpIt4LjGOdaCx0JVljBA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=CIpDbCXM; arc=none smtp.client-ip=209.85.208.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="CIpDbCXM" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-38e7d983f79so17231581fa.0 for ; Fri, 08 May 2026 05:39:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243968; x=1778848768; darn=vger.kernel.org; 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=F/3tOYCHKLkB93CvHpDrXeQBRydo0wK6XTWaKDAjWlE=; b=CIpDbCXM0XDKrDOp6JXoCZtn2XxJN25uBR1fPe3EmiEqoYwls/aoHo0CNo5PUmIiSW A5h0X2NGP3WIRmDHQ3GrmU9Yo0SeqYs8Twrdxp7cFY8ufRlwtQm+VMeHVOFVNU6otcxp jXiv0mm0yWdzHu8N3QYER3JR5APCnVqSbTHh9hTqSUDpdIw3XAOKUEBg+6bwz5b9Z10w W8K/nxkqBT3p8DG5oyziqNCj5X62qZiYOUUQHFNwu2mYsbgM87JT4HwAI+Xv60WLp8Yg ruQchjFL6vcZtpbgVp44/5iidIRGScbCMvRlbJxaqA2VqZy2VxZirbYezXQ2MK6Ai42X +/Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243968; x=1778848768; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=F/3tOYCHKLkB93CvHpDrXeQBRydo0wK6XTWaKDAjWlE=; b=FydD9IEXr8OTXSgDLQhse3MJmY9mYk+y4NjIxme5ZucZ3FQ+nakUiZK0SMYcbBFPQy rxcGxlXRqPBEqAzxGunwB0+jqtBK+2Brc+ulDJWArBlCyycD5+mm+DW/hQiFYkfkQOeT xk+WotvQYa27pOQMmoOjnLF5qU/BOPNje0QYjXfLNhpbw+iVTB/3zDkWsrSqhSNPE8ds svUEjNcr/7Zel8MCfJInKccbOYKsUl3v9CGCsjHFJq1S4qcqvVxoxfDsOXoR3+sCdhNB sol1utJYt5K004K+YIjfJ3Bf10JMGH1623CdTsJSeeWENoL3NobCJAG4pf4AQiTxqADl aYgg== X-Forwarded-Encrypted: i=1; AFNElJ8brQwsQ6iGCfkuZj3O1n+JmI0XyAuv6yWOwKZIL7hNtwOq8jxII00ryz0SA6I5jh9q3Txe5gcWSnyN3rQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yybwy+MvEvFVa+zxpmZP055vqx4tFS6vug86yhxQeJZO/D6V2UF YOiBSpEq/Rh9iPqF2UNgwfJJF+s7Kv24lejUAEQlhyIiyiDvPD9pZgYRXrSVY//g6Ac= X-Gm-Gg: Acq92OEKtdSmrhhUfr923bImGm9LLNq7cQ0rb8Nbqg5JoADNaPmRTKMYPqzyoNR3Akx gi+D+vfummLX1My1rrkMi+dA+7+NLobbHmy3p8sWNjeGvYqCkFuh6RdvdyCgdIPZtKXC+0RFTy5 ZR+nH5B71DiZOL/VimoU9nouZZk/RjYY6SOj8A2ru+LUrK3i0usLh70QJywQ9z6H5Ks6Ha1PWy/ JeFOt1hgTkJPZ4ZsCNDOpNfG/a2ymk9AVFE0L8hr+UobuoVqLNw66YPwdhTmAy92+wgz3ROA5eX xIg4lox3syAH94jPLtztlaUjg1Xm/VLBgYUJl2ba14pF+BGVoFqMt9nnsRm1kF4DVMWS9lEXTyh 5Y9lQY6fMi9BSww7E/9X5S42+x1AQeaNKL6y8HleL4xWlHj0hzWM7bI9a/GUu7lVirp21xQCVCS rbkGgywMCHZgXBLTPS0aX/hKSPw0K6ixhFSN8G7UaJzDGqv8TBVUCDz/8s3CfWv3JHwM6lAcpT X-Received: by 2002:a2e:9b14:0:b0:38d:ed62:f1d5 with SMTP id 38308e7fff4ca-393c41c6f32mr39109701fa.17.1778243967432; Fri, 08 May 2026 05:39:27 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:27 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 08/13] pmdomain: core: Export a common function for ->queue_sync_state() Date: Fri, 8 May 2026 14:38:57 +0200 Message-ID: <20260508123910.114273-9-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Along with of_genpd_sync_state() that genpd provider drivers may use to manage sync_state, let's add and export of_genpd_queue_sync_state() for those that may need it. It's expected that the genpd provider driver assigns it's own ->queue_sync_state() callback and invoke the new helper from there. Signed-off-by: Ulf Hansson --- Changes in v3: - No changes. --- drivers/pmdomain/core.c | 14 +++++++++----- include/linux/pm_domain.h | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index b2b5cc30c7fc..b3ec3dec3f10 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2763,7 +2763,7 @@ static void genpd_parse_for_consumer(struct device_no= de *sup, } } =20 -static void _genpd_queue_sync_state(struct device_node *np) +static void genpd_queue_sync_state(struct device_node *np) { struct generic_pm_domain *genpd; =20 @@ -2781,11 +2781,14 @@ static void _genpd_queue_sync_state(struct device_n= ode *np) mutex_unlock(&gpd_list_lock); } =20 -static void genpd_queue_sync_state(struct device *dev) +void of_genpd_queue_sync_state(struct device *dev) { struct device_node *np =3D dev->of_node; struct device_link *link; =20 + if (!np) + return; + if (!genpd_should_wait_for_consumer(np)) return; =20 @@ -2809,8 +2812,9 @@ static void genpd_queue_sync_state(struct device *dev) genpd_parse_for_consumer(np, consumer->of_node); } =20 - _genpd_queue_sync_state(np); + genpd_queue_sync_state(np); } +EXPORT_SYMBOL_GPL(of_genpd_queue_sync_state); =20 static void genpd_sync_state(struct device *dev) { @@ -2921,7 +2925,7 @@ int of_genpd_add_provider_onecell(struct device_node = *np, sync_state =3D true; } else if (!dev_has_sync_state(dev)) { dev_set_drv_sync_state(dev, genpd_sync_state); - dev_set_drv_queue_sync_state(dev, genpd_queue_sync_state); + dev_set_drv_queue_sync_state(dev, of_genpd_queue_sync_state); } =20 put_device(dev); @@ -3653,7 +3657,7 @@ static void genpd_provider_queue_sync_state(struct de= vice *dev) if (genpd->sync_state !=3D GENPD_SYNC_STATE_ONECELL) return; =20 - genpd_queue_sync_state(dev); + of_genpd_queue_sync_state(dev); } =20 static void genpd_provider_sync_state(struct device *dev) diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 7aa49721cde5..d428dd805c46 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -467,6 +467,7 @@ int of_genpd_remove_subdomain(const struct of_phandle_a= rgs *parent_spec, struct generic_pm_domain *of_genpd_remove_last(struct device_node *np); int of_genpd_parse_idle_states(struct device_node *dn, struct genpd_power_state **states, int *n); +void of_genpd_queue_sync_state(struct device *dev); void of_genpd_sync_state(struct device_node *np); =20 int genpd_dev_pm_attach(struct device *dev); @@ -513,6 +514,7 @@ static inline int of_genpd_parse_idle_states(struct dev= ice_node *dn, return -ENODEV; } =20 +static inline void of_genpd_queue_sync_state(struct device *dev) {} static inline void of_genpd_sync_state(struct device_node *np) {} =20 static inline int genpd_dev_pm_attach(struct device *dev) --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 756F43E1227 for ; Fri, 8 May 2026 12:39:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243977; cv=none; b=DN3NmsFQEt7E7o9VWZTNaVEvsKSrRv0RhsM1H5SiQ2Oo0MSbbpmzelNchP9UevOC/fNugTXcidmWbdB/E/Nhm5kVqe6TbzUg2MZeJTwbdwcj/0uqRJR5ALhNsXw/wSex2TtprMAqocHs0/ZZlKdfvY0aA+rvTehFew21ZM6XoeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243977; c=relaxed/simple; bh=BACNnnjiA/P+SfyeHJreij3aeGH3ANneoOpU/9hi9p8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nKZ4leFfJckhyLfIEJJ82qKFQziyT5jfXsGudEz/N4SOwsbm1SnqiBRvIMQHtPyHoEX+AucZpsCgU8RVK7l1w/G3hYaI0LTh7YWLIgjXmrjMQ2cdAAvSukdav5KuoZut1FdJYrkX559x/yszGc46PMcL/7GfjQUinsNkCZ+2oPA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=tupEYt65; arc=none smtp.client-ip=209.85.208.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="tupEYt65" Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-393800586aeso30320061fa.1 for ; Fri, 08 May 2026 05:39:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243969; x=1778848769; darn=vger.kernel.org; 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=Zspu33ABPqLoZeWdeeV9gEAyKbL26M627IVpZcNoBBI=; b=tupEYt65G+TPimCJpbY8aB+jaeC+EjXVZOl+AdxXhqlF3A9dcSUBKb3bGBMcxjPIYT Z4DNxL8SueS1ihGah4pG1yCIw61FV0C2zmGrLiKvlZrNVgWB+rJMGS552cY/VSYldVlz UodUKTxGPqKDijTus469/gjEsC5Aw1Z6/om3tA5JRSZDq9tEDLje9WseK8YzS+caXak9 oaSQooQwKDysSwUxW3DDXluezyJIEtNTt9W7+VTvWHihxFqZGujwW/ATEwVqkdH7uAkN ieE+6HBi2En3iV4EsxlyqNhZf5e56FQDeABC4wXmE8ww2WNtvNLh+p3FgKV5X1T7Oed5 BBFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243969; x=1778848769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Zspu33ABPqLoZeWdeeV9gEAyKbL26M627IVpZcNoBBI=; b=b+sRdr7A6IXVMa6WA/NAGHtI9c+p3j5ruLu0JB03VwQcxBpNKjH6pZQFdCnnJ97jaY l7aquuFg1uNvIyx2Llod5erEthdhbaCn3lrWO8U1MYC3t7B0dZsxAoRNb4IABD7afqPd JjdiecD24CIlDlkByzYN08T3uZcSAbVMwwkCHLEKyycYuEZXd7fJBURgRwl/Moo9daeM lTPQd1RxlPpYvSY4dw5NMDM5INr1pnk9M7oOL0LU/1E75axiv1z0lfn3e23LvgqEFw/Y NneoAf1QQ9zFmn+2E4W6dC7ZIpApCfuKH/jrJpuTdpihZ4gdjykpvH3Q1XmuzDB1ofJ/ 9Lew== X-Forwarded-Encrypted: i=1; AFNElJ8jbvXc1+IUllrJ7KtmHRP4yE32bUp9PZmNJTWxx89tkOR1UWfGxpbLlEObmnmVbyGw2aQze6ygk0It7gM=@vger.kernel.org X-Gm-Message-State: AOJu0YyfsAi1IvaUcDIcwCdHaVDM1ilu1THDsBg+ri5AP1vNxTnYiNvE DyWaNmnahBIAjjgt9Xozlw/K3oRWi1W9k+eOSgGQfRXpTjfomjEmM2MhLSm/8KrBBUA= X-Gm-Gg: Acq92OHXHJ2tPVm+hwQEntAs0xOZAOVvjMo6HFJm1W+w2IU3uObn1tdPOuoGQ7M7sBO ECf2tRbl+1+u+eC+Cc47pTTxN7t2bLm2nGkCzOXvV7/g3sX4Zea8rNF2l67Ifb3L70z8Py7DN7k CwGxHyt46e9hDjXOpYXwOlm7gUHbGN9dOm0n53p87Jw+73wRhuzOUKyCb2gitoUQmDEtedz9Wl0 8IhbhqN79Kdf1NC5xbhlhffGEN0BJ3+2its6WdBFHB8Ae36vPjwKOWFjXIt1VvsWFQAufQTdehh MmvLXctz59+FrW3J9OomzLJpwLrjsGj39V27xARNT3sag/Tprq6BFvyWAQkus6EI3p4yRTsdq+h ECt4sEVd5p33m/NQN+rF4/54MJCY6wCHuqJEG0IRvydAypKR0ljG919Y5VjbV4LqHMN8M7ynFpZ OyU3utF05pF7+PczQJq+t2+UtSKb2rIO2dR7o6Qc7sX2YGnlqro6/4a/ALyblvz6N1oEUkv4G0 X-Received: by 2002:a2e:a804:0:b0:393:b138:34ac with SMTP id 38308e7fff4ca-393db0526d6mr20975861fa.10.1778243968630; Fri, 08 May 2026 05:39:28 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:28 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v3 09/13] pmdomain: renesas: rcar-gen4-sysc: Drop GENPD_FLAG_NO_STAY_ON Date: Fri, 8 May 2026 14:38:58 +0200 Message-ID: <20260508123910.114273-10-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Due to the new fine grained sync_state support for onecell genpd provider drivers, we should no longer need use the legacy behaviour. Therefore, let's drop GENPD_FLAG_NO_STAY_ON. Reviewed-by: Geert Uytterhoeven Signed-off-by: Ulf Hansson --- Changes in v3: - No changes. --- drivers/pmdomain/renesas/rcar-gen4-sysc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/pmdomain/renesas/rcar-gen4-sysc.c b/drivers/pmdomain/r= enesas/rcar-gen4-sysc.c index 0c6c639a91d0..81b154da725f 100644 --- a/drivers/pmdomain/renesas/rcar-gen4-sysc.c +++ b/drivers/pmdomain/renesas/rcar-gen4-sysc.c @@ -251,7 +251,6 @@ static int __init rcar_gen4_sysc_pd_setup(struct rcar_g= en4_sysc_pd *pd) genpd->detach_dev =3D cpg_mssr_detach_dev; } =20 - genpd->flags |=3D GENPD_FLAG_NO_STAY_ON; genpd->power_off =3D rcar_gen4_sysc_pd_power_off; genpd->power_on =3D rcar_gen4_sysc_pd_power_on; =20 --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F4E83E1CE0 for ; Fri, 8 May 2026 12:39:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243978; cv=none; b=gm7r+sMJpo02nXzZyi25GLD86X8WP1SMX558fluIVnHfEgodBUfdFiYao5Azv19RArZUKYyqroRd8Ou8S94Kne9e2Pd8mJrv6SsMVQR8qJJ70JN8bYIjb1H/+6Iu3NCXNAbw+ZOsWbs05Ib0Kfr2yEMC+ZvOePpugFng8Qk2JMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243978; c=relaxed/simple; bh=hwOvGP8Oty93OHqwiALydRwNTRVjRDprCgEXQyQeyAE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PZMlQaNP5qffMXIlEUp0LcC2QGISL6drmcGDdaGqtVYpte8ZynY2NphfzIiiyW8lapUXxoOvF5w9ZCo0tJ2yS3oXTlQC4+WiMRKxksj4/QFSDAqqh9eNLt71OjfHT06WDKYUSxckby4l7snMmrgUBmNjbHrLdqKne4Br5IJmAjA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=scSDc2Vx; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="scSDc2Vx" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-5a884ebba7dso1986982e87.0 for ; Fri, 08 May 2026 05:39:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243971; x=1778848771; darn=vger.kernel.org; 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=OSIE7E4h7lWy1SBxFs356ugBkbZI4NVO2rqkoC6AUWs=; b=scSDc2VxGrR1jXVtC8ATpP56bBVg4skA85KGSgozheFSNsM8r0of5NREGvCLNNAv0+ kpuzEkap5Qe8x0So687MguGs426jpjDindfssqcsiRUOQGE/M36ztJIBnxfCdCECdSq9 g3Vh1BEJHn4Lp+OAWEPvRoVec+ILprt3TA6UqGLzHN8GFy4cypJmv2OLWvBXMlrZtcDB Mq7W8ykAr9LlyNoAx/EXWJxJ2lnbplkGlAI5CZlzKMPquiqazeurviv+UH5iAVABDJVS APzp3IaJw892NjwIE1hp9JTPDYpJFnrKPHdfHtGwApEM24GUjZTSh0SwHFi/fwsicdhy wWVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243971; x=1778848771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OSIE7E4h7lWy1SBxFs356ugBkbZI4NVO2rqkoC6AUWs=; b=k9XbM9yfb3Cl0bIPZhXxR26V0w9CUZaJcWaij0uxSi80DM47uxhparZ89WQLJRuNLE uiyze0dglY0LFfjQhCdxevzej9bs5CeQFLo8wYyxU27lj4RmuSIe12cE7Nup1Iv9TM0N /hsQodNvj6qPxlm4Am3YsTtYvfCPdbj6q2qcNIatwDYE5EpWp+FLBFjppyEYCFsH1RwM iWuuoOSesp70PvIdZUtXXjYfjh9Vq3gcfzVaNeTZlNpstvAB+kz7rRozB8Mk7asKoSc5 31DfAUYalung+xDlK3bwY9bD4BYaJL7QLq4yh00gyGyV74XbBAW7Hq81yFvTd2AKjDaX 0xag== X-Forwarded-Encrypted: i=1; AFNElJ9agsgaw7tbUJh7l4R5TK6ZzaA0fpZHUztuGnnzopQnrh2liIBniGLNIIRuQ+BJohfrljTiByW+gQKfdcc=@vger.kernel.org X-Gm-Message-State: AOJu0YztyHGQCp3LCjJWctb/fNb86vtK7FNyh0HFzkk5c2uz8DNc/d3y 4/OxrHxID4knnss8Uit7n9SVewo8T5ADcRxAqW77IPE/OVpUeGAcXQoNjREIeqLJY1M= X-Gm-Gg: Acq92OHl+SQVKIqf/pC2PUXMhzWMZ6gvQZiM7RN49rEkS9Fnbta/r/E4z/165KLHs4f D1zLPTfyzjCbauTboKkQTtpwyn8cpFa7BVv/bbpAwvBDDI7gdZtnLbr38m2BHc7Yo2qzU10wEr4 xKifYbRNt9zXlrLlYx6+aBk+jZlwv1MOObC9krBaWf7LKFDgZaKv3y+g9uRFsiZl6joGuYoq3kq IEdJGS3mepi921QYy6b3Yxuh812ulCLOotVrqIC8XgJqDkn0Lfwv+WQfQThTqUsMkYtoFF+daND L4l/Xn3d/OKsDLe/AkTmOm2ptWoBjRx8o1bCJPBzyyClGqRh/2lZOVOTdCtZDhB7QQL9v8jt/BN CSAqc3nvCqwPIlL0sZtN796To0GYIbIfMxz14a+jwjnn56f+t05LA4om/Z54upAt235kIt1YsBm 5UdlyF5+M0STJqefKU53lfYEHbhnu58StN/MJBnbH18qDHoLLnzP7R/28+MZWQAhbILKVZch31 X-Received: by 2002:a05:6512:3d03:b0:5a8:99bd:12dd with SMTP id 2adb3069b0e04-5a899bd13aamr2719864e87.31.1778243970587; Fri, 08 May 2026 05:39:30 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:30 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v3 10/13] pmdomain: renesas: rcar-sysc: Drop GENPD_FLAG_NO_STAY_ON Date: Fri, 8 May 2026 14:38:59 +0200 Message-ID: <20260508123910.114273-11-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Due to the new fine grained sync_state support for onecell genpd provider drivers, we should no longer need use the legacy behaviour. Therefore, let's drop GENPD_FLAG_NO_STAY_ON. Reviewed-by: Geert Uytterhoeven Signed-off-by: Ulf Hansson --- Changes in v3: - No changes. --- drivers/pmdomain/renesas/rcar-sysc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/pmdomain/renesas/rcar-sysc.c b/drivers/pmdomain/renesa= s/rcar-sysc.c index bd7bb9cbd9da..e4608c657629 100644 --- a/drivers/pmdomain/renesas/rcar-sysc.c +++ b/drivers/pmdomain/renesas/rcar-sysc.c @@ -241,7 +241,6 @@ static int __init rcar_sysc_pd_setup(struct rcar_sysc_p= d *pd) } } =20 - genpd->flags |=3D GENPD_FLAG_NO_STAY_ON; genpd->power_off =3D rcar_sysc_pd_power_off; genpd->power_on =3D rcar_sysc_pd_power_on; =20 --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADCB23DF016 for ; Fri, 8 May 2026 12:39:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243985; cv=none; b=uZyOyWZvnHe200800p0sDXBT4YMk5la2gtH9Xgp9AKOPLqWgB+crfInzvaVvhGSNPJJ5nzThTWeIno+k+j1qlQAt0FPBgBGWa4eYoGkNbuLnJ/ro1Lzu01CFasbBbttFWENDgfDwRrlzbaZ5r0ortfyBmkAxGuxPkS7bvXK/sNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243985; c=relaxed/simple; bh=I4pKmmwjevq8dz1UuOr+v5418ApVsdlP3YsqqByAvRM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KuT7o73GxKCjI/lwSC6UVYwdRaOfwk6FEsz7tkSvcZuEggk4O7H1Zi9eaQCZfgms2VfRXBX+RwrYamvRcRKJrWwZtXxzaOUfo9zGp61Z9QGHB3cKAZDciu6TRNA0v1Crh0hXP+gCN/sF4ELzQ6L5iaN2b+1bP35+33k03j3Xcd4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=v3uZ51kL; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="v3uZ51kL" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-393800f638bso15359371fa.1 for ; Fri, 08 May 2026 05:39:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243972; x=1778848772; darn=vger.kernel.org; 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=rD2aCPCHqZRuH2DBiEm63Gtf8tVlRjph1PzHrc+ZXrk=; b=v3uZ51kLEC+lt0euLDw3EPMmlNx6ujnPJfjFKqX8Yo/z/lkQq527j8Skf5/jHNmnye OnUxk76q9w3cPbbN7hSE+TtNIr0ifC0AS94LJLAb23nYLsDLeL1eN1/ZVL8Yh873zheS iFyoInE8c22Btm+G7xAmbMCEjcdt6ITTZy8g79R4V15k074vumkBFyRWkLxMJpKmzV8C 3tGDvjl8fSTtfC01Qv62m86U0vwqR4wlFIfC+Ej+3KKfYDLm4s8cFFWcTq+BeDx/Buhm ldpGmH+oxrn54KHGkOc2Vm9kxnyNAj5tniddCkxnrXA2z5MD00DLJTN/m11bafds0wWr qMkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243972; x=1778848772; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rD2aCPCHqZRuH2DBiEm63Gtf8tVlRjph1PzHrc+ZXrk=; b=CTqbOfikteyNffqtyjaMHApBOSzmI1kiBi8kpvFFA+1su0m8G9vRhMO14UgTrvIc+Y 4Bn3MnLO9NLbI0Jo8dUlTECXz3mzGR0ILk8VdHMVyFNLdnZtWC4Y6feTNnMgMdUTz19J JhmJWByF5kZbh3NRXXKklHGZ/SZ0CFKiduJboagKq2KUvKqvpIs6+iy817yHDfV81Bpc 60xL6kChZwMpYMfzzG+ICCzztrnmVI5omk+1m/t1NWFJZokfuUgF8XFKKiomtAKWHwIL ez4hzp9jq3j3maxT8r80+nod8rvXMJENlaCxH/3AcT5q+ljQyiiNlRtVWF3Xc3BeyEwN NyFA== X-Forwarded-Encrypted: i=1; AFNElJ+3kN7GEPwD47Zyidph0OYB/kFH+uu4/QTIk6bjILWFIzJVxJwkjnW4Uc90t/PgZe9+3zI6aSGjfyQDz8o=@vger.kernel.org X-Gm-Message-State: AOJu0YxEy/yicDpnN26bc+SuUavMvEPYHSopGk1i4vf/r7WbL7lRXsPZ Tb2zPQnGbUtEoBiWu0/Z6Ch673/JxwZu2jC0S6ukqJnMBfbnR7iQcaexHgBXEpTWvHI= X-Gm-Gg: Acq92OHEV/1BtV0diHlWYyWEzMn2u/Qtr8setXdVswi5GJFsOzGoM2Mhr/LTemEshzf GC4/W3PJy6IMwvqd3YBuXqmpsKaCTG5/XqVWrb1BBILrGW9tKIGbMw5LSy8GFef+NoOh0ATCa+C a4p87SnFXX78NHmlBpI4MrgJ8WkE408kAaSCFJyvmXuapeJpQKQgMA4t44wo55zcJ+dEFLiPvQ1 teHGUKNLSrJ2wjQPxjUbOPWE+ML+DH/ZXdSRBivUjXluPDIRqC7tXdd4PuxfTYEhyfRes9RlwtQ C+BFJiRtHQL5W/MOfOj3fnvKa4NmaZRzGvdQ//MS0wnncdONq2iaoTAPIxgol2IRt1EHlsYVfQR 7Jt8x8FJNbGEOC9phyZ6ey2jFQvx00Z/T42g3bTIhUT00FdBB61JUuyigEctI9cj67ShuD5VDj1 j4/cSFJm1tFEoojeSkA+3Mp+AenFWj0KEkaJchlRdgWE7ZsqCIzI5S3BNhocxedKbypbfEMBM3 X-Received: by 2002:a2e:9783:0:b0:393:903c:225b with SMTP id 38308e7fff4ca-393c4338719mr34887901fa.31.1778243971807; Fri, 08 May 2026 05:39:31 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:31 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v3 11/13] pmdomain: renesas: rmobile-sysc: Drop GENPD_FLAG_NO_STAY_ON Date: Fri, 8 May 2026 14:39:00 +0200 Message-ID: <20260508123910.114273-12-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rmobile-sysc is not a onecell provider and didn't really needed the GENPD_FLAG_NO_STAY_ON flag in the first place. Let's drop it. Reviewed-by: Geert Uytterhoeven Signed-off-by: Ulf Hansson --- Changes in v3: - No changes. --- drivers/pmdomain/renesas/rmobile-sysc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/pmdomain/renesas/rmobile-sysc.c b/drivers/pmdomain/ren= esas/rmobile-sysc.c index 93103ff33d6e..e36f5d763c91 100644 --- a/drivers/pmdomain/renesas/rmobile-sysc.c +++ b/drivers/pmdomain/renesas/rmobile-sysc.c @@ -100,8 +100,7 @@ static void rmobile_init_pm_domain(struct rmobile_pm_do= main *rmobile_pd) struct generic_pm_domain *genpd =3D &rmobile_pd->genpd; struct dev_power_governor *gov =3D rmobile_pd->gov; =20 - genpd->flags |=3D GENPD_FLAG_PM_CLK | GENPD_FLAG_ACTIVE_WAKEUP | - GENPD_FLAG_NO_STAY_ON; + genpd->flags |=3D GENPD_FLAG_PM_CLK | GENPD_FLAG_ACTIVE_WAKEUP; genpd->attach_dev =3D cpg_mstp_attach_dev; genpd->detach_dev =3D cpg_mstp_detach_dev; =20 --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2EB0E3DFC99 for ; Fri, 8 May 2026 12:39:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243987; cv=none; b=kfNKzK11vGOduh/0qp6Q29OLoM/DBqXEn1nshkqbS6UsS1czhT7TOqf0GXyd369pqL2uDt9NMoFoQtR4oO/IkvcqWoaSnLynLMnRXAKCxWCFHbNkTmzsyOtRLVcrS83sTPz3FE4uO7ESD7E3AyC056JFGjAygsxXDp/iqqTw36s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243987; c=relaxed/simple; bh=o6Kkmkal1dRnR/874ZnzDFZ9P4+SWzK1X1LngRUykqk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NKW9d39t0KDrARa8VfHF469jCtIKyc4ue7xe90HUQCDv97GzoQ6y8nJ92s8qVyE4C8Qcpl/tvYv4hAbFuDn1myKySUxNOgM2PH5oTpuoFRhzZ1t0WPiYT2Ht3dhrICIhywst306QbtfAN7N+1Gj5q98CCTl0jNtOZUaGIqiyMpA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=TbYwjDwx; arc=none smtp.client-ip=209.85.208.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="TbYwjDwx" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-39394e1e8f3so14959531fa.1 for ; Fri, 08 May 2026 05:39:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243973; x=1778848773; darn=vger.kernel.org; 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=AkBPidrgCBcSCiVi3pEiCePtzlLJIduNWzbjBZQqIoo=; b=TbYwjDwx0KJImbrPTxkfmIKLVDU2XXm0gX97dxZxQEYPNS3dxHJM6M9lHf3tMePaWZ k87HvmXel2QsSMhvI7xh/ycQ9LXhdkmfq5TICLWbPHaw7sS+4LXNqQ/7SNc2+tQAtKmg vAsIrk4Nqak5fpj5vQXr01P8uRv3G4l9Pe6ng3J5+gOnCyTDNiqOJQ7c5YqHvUHcOQaJ 2DjxIdqZ0TECLdWyYhuD2OKE6oaIgseAdXLoCfW3W9C+mL69JUoINrZNWHAm0QyrCbP9 iXveJH/ZSNm2RLcGdOk8T6Cy6iI46P0+ZHID7fHIatrD64vJ5POczeG+RIKtV34i8LPh 2kBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243973; x=1778848773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AkBPidrgCBcSCiVi3pEiCePtzlLJIduNWzbjBZQqIoo=; b=j0GGlRM37fmDiliStQ7lkUmmF2VhN1xig2iaXR98klfvOcqKl6vCdbT4w4ThN/g33Y uPpHbPK72CBJeXle4y0tEjAp2AZzaMhhCmUEAqb+BWMNNCduv04F/Odc5Ao6DZKgD6Fw qP2yRPq6yFK3BF4tzESVf4KXCXn0Sefte8udaDJPqpE12QsCkrUavsUmw+C+0tmpoowU AZv/VxsgNxlCS4YnUIGURZL/RoOBTv2N4BNFoaEUmvxYEcxSP0XDxKNMrHnnZ+Q++YPt IbwSW3U+q6lUFYxK3Eb8AtgFOZZiNW0Ts7mG+6N3Z7vsSLWgM+HoDqipZnJfokts4b4/ dJnw== X-Forwarded-Encrypted: i=1; AFNElJ+voVjfOW3PPQI+mAxY4EcrVDMWbpH6OEiePmuI6IGAkOgyzVBFkXtBcvtP4UIA9LAumvwCzJxeDbdyBJ8=@vger.kernel.org X-Gm-Message-State: AOJu0YxC3E0twYZpp6Hf+fjAwRqtFmtUOP5tjaDYEl7LYzOabT+V6GDJ v131x9yFVi+UkM7CM8lIRvGiqp+ib10iUViBU9DMvKqKYzkR20kSo5sXIm2Fu5rxma4= X-Gm-Gg: Acq92OG+eDvoax9DkLhlpTTXj8YkNzQAFe68PA8JbX/ximskER682qwGa3qgAI1x+Gq s2zJLmIcZOjCSTITimUlGqHGnMrNHttYXnF6vEfCJu1LNjCNuJSMwtzd+ik5WSktRP4HsNVbP65 IL+jO1LQa9afblkJLwggVNU2I8Uy0S1rMF85v6G+XdG60Bl+S3DEx7vchQG2xINYzd3E+4aSm5Y O1gpNfN/ghwGcAQksSdyGj7XdGVvpn+Zm1hUvWvbNGV4khwClfpSmuIk2SlmGKGEPpC5AnEeTRX oWxvoX+yyb3g5u0hRpX+TC7SJMMITB2zxw2HCN6Kh9tBkfz+Fl06q0IghKT9S4njD7teWtUaJXt ZcrOKb4p38sLAELoPXYJCkFl9fPRWMSN1kn+a5Qth8b/VIH0+V1+01P0L+unY/O3AoHYF6uvdyv jvmX0J4CBeCjiq5LTxPgtdhDiJXWqMg0HzA6dNRyqzVxVC0Rp/4YlEI4wX4OEQeC/OFTNVkDn7 X-Received: by 2002:a2e:8952:0:b0:38e:98b0:3a7e with SMTP id 38308e7fff4ca-393c4211654mr36254101fa.22.1778243973092; Fri, 08 May 2026 05:39:33 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:32 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 12/13] pmdomain: core: Avoid an unnecessary power off at sync_state Date: Fri, 8 May 2026 14:39:01 +0200 Message-ID: <20260508123910.114273-13-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the PM domain was not powered on during initialization, genpd will not prevent it from being powered off during boot. In these cases there is no need to call genpd_power_off() at sync_state, hence let's avoid it. Signed-off-by: Ulf Hansson --- Changes in v3: - New patch. --- drivers/pmdomain/core.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index b3ec3dec3f10..b5d90ddfd698 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -3636,8 +3636,10 @@ void of_genpd_sync_state(struct device_node *np) list_for_each_entry(genpd, &gpd_list, gpd_list_node) { if (genpd->provider =3D=3D of_fwnode_handle(np)) { genpd_lock(genpd); - genpd->stay_on =3D false; - genpd_power_off(genpd, false, 0); + if (genpd->stay_on) { + genpd->stay_on =3D false; + genpd_power_off(genpd, false, 0); + } genpd_unlock(genpd); } } @@ -3674,8 +3676,10 @@ static void genpd_provider_sync_state(struct device = *dev) =20 case GENPD_SYNC_STATE_SIMPLE: genpd_lock(genpd); - genpd->stay_on =3D false; - genpd_power_off(genpd, false, 0); + if (genpd->stay_on) { + genpd->stay_on =3D false; + genpd_power_off(genpd, false, 0); + } genpd_unlock(genpd); break; =20 --=20 2.43.0 From nobody Wed Jun 10 02:45:15 2026 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22E6A3DBD4F for ; Fri, 8 May 2026 12:39:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243978; cv=none; b=iGIq7TkjZTKbZHaeRYqIVvOF+hZx+I039ZJyC69gel0d1oqyv6vl8YZd7Std0cqX+8jxbf/a9+aG7+8nD+8zekZ5L8/DaV4mYi6IPxBlOBSrWt2/qcK+secjV9TuoDCCq3Xby2+B5RDEKNU1as4UfznzH4YkVDJsFPXGsHZ5ieE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778243978; c=relaxed/simple; bh=hwsTYxE8EG28UGJ/9uJBMJiUsrm4KBw9SMV/lotgNm8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EYvirhKYcCN6QznenNM3mc+QtNlVOkxvJmDtvAaHZkWTjWVfxjeMTps8UiymoDb2tZZlOjf1HUakUu2cOtvvtkxcFpzZSsfHjM6rJG9+FeeMDek+BBwKC1usIOuM8X5nmUAIdWcCRttrsvQGBstrnVHp4rLb3vdUmtj0lF5TMtE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=obEwBRJg; arc=none smtp.client-ip=209.85.208.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="obEwBRJg" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-393a49d2e5eso16389141fa.2 for ; Fri, 08 May 2026 05:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778243974; x=1778848774; darn=vger.kernel.org; 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=9GaxAP6ysJuJBahsu75EBbPBsRu50PTWws4c1kr5c8Q=; b=obEwBRJgaxvemHbL7dhIcXUIjOVIjWRDekMEyrG2HSI2H+SQT7V2ZXa2d0hboanVBO 6BY+13DyqYJ810nl6lCPSpujQB8PFtMle9ByRx+rXczExYcYdkf3LOQfqYnJ4i9rhRkr 6B8ffltidZk+zQeRvQvYnxJQKXMnONT/xCJxEu1XnRXm24mtFFzA3eGYgdRjCxLBSS6M KcXnsiYKe+jN5xbpXCJ+4deqeQZrEQj32wimyTCoLOrY6+POPD9n6uOcslJtyj0Ha/Mw I5O8XXJiu7u+qgzsC1b7nMjt8GwQtSPBN2ZICak85U4CEssE6P+KICtfigRnIsx7oVe1 C7LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778243974; x=1778848774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9GaxAP6ysJuJBahsu75EBbPBsRu50PTWws4c1kr5c8Q=; b=NJRcqsGAniykX8LAEPUNwORJUxlQdyokMtZzrLvNUSfoTQ6QS9VG1SEWY/UClE4qtW FKMzjXJ+B4DhF9TpZIDCBkUhFl8oGUoVv1wM6PUHNr47ozkLah66Anl2bysVrSVKSD3G hUe1HEJz6gW+n5pc+r3Wa9tZ8FMhsBV/Q3ROIAhIUGRIrHF9qOUKb10l0Ipz+9bV+bZ3 3uJ0R3i2wBfkND4Rl5/gqCoW1V/pSX81Jl9yQtD9cGEwShYfaavVQ6r/9AMqdet3YVBw ltG8WkJDcF9oaBKzg4lfFvqYsGrrKr4cBObEnOhHiQgZZmQ+AI/NndYmfTlk1zd3Z6C+ Igng== X-Forwarded-Encrypted: i=1; AFNElJ/rnu4Xwa3Pc8z9sL+L6gbP8TnWP3BSNifXTwlQfcONjlizlMfsfvREaiOKwVfYW6SRVK9Pehifo0DIvBw=@vger.kernel.org X-Gm-Message-State: AOJu0Ywg2Gnn53QIXXgLzD/0MzOap1+OIE1Nmopyc+di6rX8yeIs87Li NC0szv2qWgbRcr62ws8ZGaP6585tENRHYKEwFpz0E9yOZ21fNBDHP6hYTzem4Atoh70= X-Gm-Gg: Acq92OHDzbXpaUX/2EfXJHwFra5xBeW93Vh/LHi5/uiKcSvhzOpCawc56KOhi8QCQxk JVBCVlZ+tvE+xPpUlPfkDck+QPw/l4IUD8ACCJlzAhCYCy46ptq9DUm7ufxcuEJTdp6DGEwBnkn hiSZX41kmjuexkdtUW6r6rf7PXwQbqHmgLASK43PITFwA697IUtt4A7vU2/UIIJS6Z4AGJGTpyX W7E0+DQGEObWLohGKsnmE+LnNIbc7CIueeZmyPjrSZ1hsMdxDRGiGUZSlL+sS1UeJ7r9ezBbdfO FXMJLZmFpt45wLxZL0iD5fqyGwmDLXWfeOVz69tdbiHIpLSbtZ8S0TcxP9Os64T6Mf6X2Fxlc73 AxmF2S1pNdl3Ke9DXG7WEERhaxWXVnT9sZFDYYykfJOEJAGWFRmWud6UaLwpu2sHEPmAE61qaui oFngzyArMYH5x3IfCMLuYem10CKUl72JXtkCpXjQrCcj4sRVffHG437SYxB8rySd5DCjyEhaxZn HNbih6cWs0= X-Received: by 2002:a2e:9bd5:0:b0:393:bb14:9ae with SMTP id 38308e7fff4ca-393c40ce7a6mr36476961fa.3.1778243974261; Fri, 08 May 2026 05:39:34 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-393f5f5fcc7sm4569621fa.18.2026.05.08.05.39.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 05:39:33 -0700 (PDT) From: Ulf Hansson To: Danilo Krummrich , Saravana Kannan , "Rafael J . Wysocki" , Greg Kroah-Hartman , driver-core@lists.linux.dev, linux-pm@vger.kernel.org Cc: Sudeep Holla , Cristian Marussi , Kevin Hilman , Stephen Boyd , Marek Szyprowski , Bjorn Andersson , Abel Vesa , Peng Fan , Tomi Valkeinen , Maulik Shah , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Geert Uytterhoeven , Dmitry Baryshkov , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 13/13] pmdomain: core: Add a couple of debug prints for sync_state Date: Fri, 8 May 2026 14:39:02 +0200 Message-ID: <20260508123910.114273-14-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508123910.114273-1-ulf.hansson@linaro.org> References: <20260508123910.114273-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To inform the developer of what is happening during sync_state transitions in genpd, let's add a couple of debug prints for it. Signed-off-by: Ulf Hansson --- Changes in v3: - New patch. --- drivers/pmdomain/core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index b5d90ddfd698..3d3e0f38815b 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2756,6 +2756,9 @@ static void genpd_parse_for_consumer(struct device_no= de *sup, genpd_lock(genpd); genpd->wait_for_consumer =3D true; genpd_unlock(genpd); + + pr_debug("%s: wait for consumer %pOF\n", + dev_name(&genpd->dev), con); } mutex_unlock(&gpd_list_lock); =20 @@ -2772,6 +2775,9 @@ static void genpd_queue_sync_state(struct device_node= *np) if (genpd->provider =3D=3D of_fwnode_handle(np)) { genpd_lock(genpd); if (genpd->stay_on && !genpd->wait_for_consumer) { + pr_debug("%s: queuing sync state\n", + dev_name(&genpd->dev)); + genpd->stay_on =3D false; genpd_queue_power_off_work(genpd); } @@ -3637,6 +3643,9 @@ void of_genpd_sync_state(struct device_node *np) if (genpd->provider =3D=3D of_fwnode_handle(np)) { genpd_lock(genpd); if (genpd->stay_on) { + pr_debug("%s: sync state\n", + dev_name(&genpd->dev)); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); } @@ -3677,6 +3686,8 @@ static void genpd_provider_sync_state(struct device *= dev) case GENPD_SYNC_STATE_SIMPLE: genpd_lock(genpd); if (genpd->stay_on) { + pr_debug("%s: sync state\n", dev_name(&genpd->dev)); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); } --=20 2.43.0