]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Feb 2024 10:38:36 +0000 (11:38 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Feb 2024 10:38:36 +0000 (11:38 +0100)
added patches:
drm-msm-dsi-enable-runtime-pm.patch
pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch

queue-5.15/drm-msm-dsi-enable-runtime-pm.patch [new file with mode: 0644]
queue-5.15/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/drm-msm-dsi-enable-runtime-pm.patch b/queue-5.15/drm-msm-dsi-enable-runtime-pm.patch
new file mode 100644 (file)
index 0000000..954a01c
--- /dev/null
@@ -0,0 +1,41 @@
+From stable+bounces-17406-greg=kroah.com@vger.kernel.org Tue Jan 30 13:59:32 2024
+From: Amit Pundir <amit.pundir@linaro.org>
+Date: Tue, 30 Jan 2024 18:28:47 +0530
+Subject: drm/msm/dsi: Enable runtime PM
+To: Greg KH <gregkh@linuxfoundation.org>, Sasha Levin <sashal@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Dmitry Baryshkov <dmitry.baryshkov@linaro.org>, Douglas Anderson <dianders@chromium.org>
+Cc: Stable <stable@vger.kernel.org>
+Message-ID: <20240130125847.3915432-3-amit.pundir@linaro.org>
+
+From: Konrad Dybcio <konrad.dybcio@linaro.org>
+
+[ Upstream commit 6ab502bc1cf3147ea1d8540d04b83a7a4cb6d1f1 ]
+
+Some devices power the DSI PHY/PLL through a power rail that we model
+as a GENPD. Enable runtime PM to make it suspendable.
+
+Change-Id: I70b04b7fbf75ccf508ab2dcbe393dbb2be6e4eaa
+Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Patchwork: https://patchwork.freedesktop.org/patch/543352/
+Link: https://lore.kernel.org/r/20230620-topic-dsiphy_rpm-v2-2-a11a751f34f0@linaro.org
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks")
+Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/msm/dsi/phy/dsi_phy.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
++++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
+@@ -752,6 +752,10 @@ static int dsi_phy_driver_probe(struct p
+               goto fail;
+       }
++      ret = devm_pm_runtime_enable(&pdev->dev);
++      if (ret)
++              return ret;
++
+       /* PLL init will call into clk_register which requires
+        * register access, so we need to enable power and ahb clock.
+        */
diff --git a/queue-5.15/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch b/queue-5.15/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch
new file mode 100644 (file)
index 0000000..0fa3b52
--- /dev/null
@@ -0,0 +1,74 @@
+From stable+bounces-17405-greg=kroah.com@vger.kernel.org Tue Jan 30 13:59:31 2024
+From: Amit Pundir <amit.pundir@linaro.org>
+Date: Tue, 30 Jan 2024 18:28:46 +0530
+Subject: PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend()
+To: Greg KH <gregkh@linuxfoundation.org>, Sasha Levin <sashal@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Dmitry Baryshkov <dmitry.baryshkov@linaro.org>, Douglas Anderson <dianders@chromium.org>
+Cc: Stable <stable@vger.kernel.org>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Ulf Hansson <ulf.hansson@linaro.org>, "Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
+Message-ID: <20240130125847.3915432-2-amit.pundir@linaro.org>
+
+From: Douglas Anderson <dianders@chromium.org>
+
+[ Upstream commit b4060db9251f919506e4d672737c6b8ab9a84701 ]
+
+The PM Runtime docs say:
+
+  Drivers in ->remove() callback should undo the runtime PM changes done
+  in ->probe(). Usually this means calling pm_runtime_disable(),
+  pm_runtime_dont_use_autosuspend() etc.
+
+>From grepping code, it's clear that many people aren't aware of the
+need to call pm_runtime_dont_use_autosuspend().
+
+When brainstorming solutions, one idea that came up was to leverage
+the new-ish devm_pm_runtime_enable() function. The idea here is that:
+
+ * When the devm action is called we know that the driver is being
+   removed. It's the perfect time to undo the use_autosuspend.
+
+ * The code of pm_runtime_dont_use_autosuspend() already handles the
+   case of being called when autosuspend wasn't enabled.
+
+Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Signed-off-by: Douglas Anderson <dianders@chromium.org>
+Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks")
+Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/base/power/runtime.c |    5 +++++
+ include/linux/pm_runtime.h   |    4 ++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/base/power/runtime.c
++++ b/drivers/base/power/runtime.c
+@@ -1479,11 +1479,16 @@ EXPORT_SYMBOL_GPL(pm_runtime_enable);
+ static void pm_runtime_disable_action(void *data)
+ {
++      pm_runtime_dont_use_autosuspend(data);
+       pm_runtime_disable(data);
+ }
+ /**
+  * devm_pm_runtime_enable - devres-enabled version of pm_runtime_enable.
++ *
++ * NOTE: this will also handle calling pm_runtime_dont_use_autosuspend() for
++ * you at driver exit time if needed.
++ *
+  * @dev: Device to handle.
+  */
+ int devm_pm_runtime_enable(struct device *dev)
+--- a/include/linux/pm_runtime.h
++++ b/include/linux/pm_runtime.h
+@@ -542,6 +542,10 @@ static inline void pm_runtime_disable(st
+  * Allow the runtime PM autosuspend mechanism to be used for @dev whenever
+  * requested (or "autosuspend" will be handled as direct runtime-suspend for
+  * it).
++ *
++ * NOTE: It's important to undo this with pm_runtime_dont_use_autosuspend()
++ * at driver exit time unless your driver initially enabled pm_runtime
++ * with devm_pm_runtime_enable() (which handles it for you).
+  */
+ static inline void pm_runtime_use_autosuspend(struct device *dev)
+ {
index d57a11ed601a9c449a02a238a5866731f4a8a62b..79d1f734746512154599369c7acd7d1136513cb3 100644 (file)
@@ -465,3 +465,5 @@ nilfs2-fix-potential-bug-in-end_buffer_async_write.patch
 nilfs2-replace-warn_ons-for-invalid-dat-metadata-block-requests.patch
 dm-limit-the-number-of-targets-and-parameter-size-area.patch
 arm64-subscribe-microsoft-azure-cobalt-100-to-arm-neoverse-n2-errata.patch
+pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch
+drm-msm-dsi-enable-runtime-pm.patch