From: Greg Kroah-Hartman Date: Wed, 21 Feb 2024 10:39:22 +0000 (+0100) Subject: 5.10-stable patches X-Git-Tag: v4.19.307~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9cc36ae59e4189f0e699dd25e32ddcceb923e953;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: drm-msm-dsi-enable-runtime-pm.patch pm-runtime-add-devm_pm_runtime_enable-helper.patch pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch --- diff --git a/queue-5.10/drm-msm-dsi-enable-runtime-pm.patch b/queue-5.10/drm-msm-dsi-enable-runtime-pm.patch new file mode 100644 index 00000000000..0a746eef964 --- /dev/null +++ b/queue-5.10/drm-msm-dsi-enable-runtime-pm.patch @@ -0,0 +1,40 @@ +From stable+bounces-17403-greg=kroah.com@vger.kernel.org Tue Jan 30 13:46:52 2024 +From: Amit Pundir +Date: Tue, 30 Jan 2024 18:16:30 +0530 +Subject: drm/msm/dsi: Enable runtime PM +To: Greg KH , Sasha Levin , Konrad Dybcio , Dmitry Baryshkov , Douglas Anderson +Cc: Stable +Message-ID: <20240130124630.3867218-4-amit.pundir@linaro.org> + +From: Konrad Dybcio + +[ 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. + +Signed-off-by: Konrad Dybcio +Reviewed-by: Dmitry Baryshkov +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 +Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks") +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -710,6 +710,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.10/pm-runtime-add-devm_pm_runtime_enable-helper.patch b/queue-5.10/pm-runtime-add-devm_pm_runtime_enable-helper.patch new file mode 100644 index 00000000000..d3cfdeb47dd --- /dev/null +++ b/queue-5.10/pm-runtime-add-devm_pm_runtime_enable-helper.patch @@ -0,0 +1,80 @@ +From stable+bounces-17401-greg=kroah.com@vger.kernel.org Tue Jan 30 13:46:49 2024 +From: Amit Pundir +Date: Tue, 30 Jan 2024 18:16:28 +0530 +Subject: PM: runtime: add devm_pm_runtime_enable helper +To: Greg KH , Sasha Levin , Konrad Dybcio , Dmitry Baryshkov , Douglas Anderson +Cc: Stable , "Rafael J . Wysocki" , Stephen Boyd +Message-ID: <20240130124630.3867218-2-amit.pundir@linaro.org> + +From: Dmitry Baryshkov + +[ Upstream commit b3636a3a2c51715736d3ec45f635ed03191962ce ] + +A typical code pattern for pm_runtime_enable() call is to call it in the +_probe function and to call pm_runtime_disable() both from _probe error +path and from _remove function. For some drivers the whole remove +function would consist of the call to pm_remove_disable(). + +Add helper function to replace this bolierplate piece of code. Calling +devm_pm_runtime_enable() removes the need for calling +pm_runtime_disable() both in the probe()'s error path and in the +remove() function. + +Signed-off-by: Dmitry Baryshkov +Link: https://lore.kernel.org/r/20210731195034.979084-2-dmitry.baryshkov@linaro.org +Acked-by: Rafael J. Wysocki +Signed-off-by: Stephen Boyd +Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks") +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + drivers/base/power/runtime.c | 17 +++++++++++++++++ + include/linux/pm_runtime.h | 4 ++++ + 2 files changed, 21 insertions(+) + +--- a/drivers/base/power/runtime.c ++++ b/drivers/base/power/runtime.c +@@ -1479,6 +1479,23 @@ void pm_runtime_enable(struct device *de + } + EXPORT_SYMBOL_GPL(pm_runtime_enable); + ++static void pm_runtime_disable_action(void *data) ++{ ++ pm_runtime_disable(data); ++} ++ ++/** ++ * devm_pm_runtime_enable - devres-enabled version of pm_runtime_enable. ++ * @dev: Device to handle. ++ */ ++int devm_pm_runtime_enable(struct device *dev) ++{ ++ pm_runtime_enable(dev); ++ ++ return devm_add_action_or_reset(dev, pm_runtime_disable_action, dev); ++} ++EXPORT_SYMBOL_GPL(devm_pm_runtime_enable); ++ + /** + * pm_runtime_forbid - Block runtime PM of a device. + * @dev: Device to handle. +--- a/include/linux/pm_runtime.h ++++ b/include/linux/pm_runtime.h +@@ -60,6 +60,8 @@ extern void pm_runtime_new_link(struct d + extern void pm_runtime_drop_link(struct device_link *link); + extern void pm_runtime_release_supplier(struct device_link *link); + ++extern int devm_pm_runtime_enable(struct device *dev); ++ + /** + * pm_runtime_get_if_in_use - Conditionally bump up runtime PM usage counter. + * @dev: Target device. +@@ -254,6 +256,8 @@ static inline void __pm_runtime_disable( + static inline void pm_runtime_allow(struct device *dev) {} + static inline void pm_runtime_forbid(struct device *dev) {} + ++static inline int devm_pm_runtime_enable(struct device *dev) { return 0; } ++ + static inline void pm_suspend_ignore_children(struct device *dev, bool enable) {} + static inline void pm_runtime_get_noresume(struct device *dev) {} + static inline void pm_runtime_put_noidle(struct device *dev) {} diff --git a/queue-5.10/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch b/queue-5.10/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch new file mode 100644 index 00000000000..effd07ba6c0 --- /dev/null +++ b/queue-5.10/pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch @@ -0,0 +1,74 @@ +From stable+bounces-17402-greg=kroah.com@vger.kernel.org Tue Jan 30 13:46:51 2024 +From: Amit Pundir +Date: Tue, 30 Jan 2024 18:16:29 +0530 +Subject: PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend() +To: Greg KH , Sasha Levin , Konrad Dybcio , Dmitry Baryshkov , Douglas Anderson +Cc: Stable , Laurent Pinchart , Ulf Hansson , "Rafael J . Wysocki" +Message-ID: <20240130124630.3867218-3-amit.pundir@linaro.org> + +From: Douglas Anderson + +[ 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 +Signed-off-by: Douglas Anderson +Reviewed-by: Ulf Hansson +Signed-off-by: Rafael J. Wysocki +Stable-dep-of: 3d07a411b4fa ("drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks") +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -1481,11 +1481,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 +@@ -539,6 +539,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) + { diff --git a/queue-5.10/series b/queue-5.10/series index 21e8488b543..18615de74f2 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -373,3 +373,6 @@ sched-membarrier-reduce-the-ability-to-hammer-on-sys_membarrier.patch 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 +pm-runtime-add-devm_pm_runtime_enable-helper.patch +pm-runtime-have-devm_pm_runtime_enable-handle-pm_runtime_dont_use_autosuspend.patch +drm-msm-dsi-enable-runtime-pm.patch