Patch "drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-vc4-hdmi-handle-error-case-of-pm_runtime_resume_.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5586863eb8217e970a4ed7f080a3c44d8b96dd94
Author: Stefan Wahren <wahrenst@xxxxxxx>
Date:   Wed Aug 21 23:40:45 2024 +0200

    drm/vc4: hdmi: Handle error case of pm_runtime_resume_and_get
    
    [ Upstream commit f1a54e860b1bc8d824925b5a77f510913880e8d6 ]
    
    The commit 0f5251339eda ("drm/vc4: hdmi: Make sure the controller is
    powered in detect") introduced the necessary power management handling
    to avoid register access while controller is powered down.
    Unfortunately it just print a warning if pm_runtime_resume_and_get()
    fails and proceed anyway.
    
    This could happen during suspend to idle. So we must assume it is unsafe
    to access the HDMI register. So bail out properly.
    
    Fixes: 0f5251339eda ("drm/vc4: hdmi: Make sure the controller is powered in detect")
    Signed-off-by: Stefan Wahren <wahrenst@xxxxxxx>
    Reviewed-by: Maíra Canal <mcanal@xxxxxxxxxx>
    Acked-by: Maxime Ripard <mripard@xxxxxxxxxx>
    Signed-off-by: Maíra Canal <mcanal@xxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240821214052.6800-3-wahrenst@xxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 643754fa6a8ad..c6e986f71a26f 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -458,6 +458,7 @@ static int vc4_hdmi_connector_detect_ctx(struct drm_connector *connector,
 {
 	struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector);
 	enum drm_connector_status status = connector_status_disconnected;
+	int ret;
 
 	/*
 	 * NOTE: This function should really take vc4_hdmi->mutex, but
@@ -470,7 +471,12 @@ static int vc4_hdmi_connector_detect_ctx(struct drm_connector *connector,
 	 * the lock for now.
 	 */
 
-	WARN_ON(pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev));
+	ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
+	if (ret) {
+		drm_err_once(connector->dev, "Failed to retain HDMI power domain: %d\n",
+			     ret);
+		return connector_status_unknown;
+	}
 
 	if (vc4_hdmi->hpd_gpio) {
 		if (gpiod_get_value_cansleep(vc4_hdmi->hpd_gpio))




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux