[PATCH] drm/msm/dp: add module parameter for PSR

Dmitry Baryshkov dmitry.baryshkov at linaro.org
Fri May 12 18:13:04 UTC 2023


On 28/04/2023 02:28, Abhinav Kumar wrote:
> On sc7280 where eDP is the primary display, PSR is causing
> IGT breakage even for basic test cases like kms_atomic and
> kms_atomic_transition. Most often the issue starts with below
> stack so providing that as reference
> 
> Call trace:
>   dpu_encoder_assign_crtc+0x64/0x6c
>   dpu_crtc_enable+0x188/0x204
>   drm_atomic_helper_commit_modeset_enables+0xc0/0x274
>   msm_atomic_commit_tail+0x1a8/0x68c
>   commit_tail+0xb0/0x160
>   drm_atomic_helper_commit+0x11c/0x124
>   drm_atomic_commit+0xb0/0xdc
>   drm_atomic_connector_commit_dpms+0xf4/0x110
>   drm_mode_obj_set_property_ioctl+0x16c/0x3b0
>   drm_connector_property_set_ioctl+0x4c/0x74
>   drm_ioctl_kernel+0xec/0x15c
>   drm_ioctl+0x264/0x408
>   __arm64_sys_ioctl+0x9c/0xd4
>   invoke_syscall+0x4c/0x110
>   el0_svc_common+0x94/0xfc
>   do_el0_svc+0x3c/0xb0
>   el0_svc+0x2c/0x7c
>   el0t_64_sync_handler+0x48/0x114
>   el0t_64_sync+0x190/0x194
> ---[ end trace 0000000000000000 ]---
> [drm-dp] dp_ctrl_push_idle: PUSH_IDLE pattern timedout
> 
> Other basic use-cases still seem to work fine hence add a
> a module parameter to allow toggling psr enable/disable till
> PSR related issues are hashed out with IGT.

For the reference: Bjorn reported that he has issues with VT on a 
PSR-enabled laptops. This patch fixes the issue for him

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>

> 
> Signed-off-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
> ---
>   drivers/gpu/drm/msm/dp/dp_display.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 628b0e248db6..dba43167de66 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -28,6 +28,10 @@
>   #include "dp_audio.h"
>   #include "dp_debug.h"
>   
> +static bool psr_enabled = false;
> +module_param(psr_enabled, bool, 0);
> +MODULE_PARM_DESC(psr_enabled, "enable PSR for eDP and DP displays");
> +
>   #define HPD_STRING_SIZE 30
>   
>   enum {
> @@ -407,7 +411,7 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
>   
>   	edid = dp->panel->edid;
>   
> -	dp->dp_display.psr_supported = dp->panel->psr_cap.version;
> +	dp->dp_display.psr_supported = dp->panel->psr_cap.version && psr_enabled;
>   
>   	dp->audio_supported = drm_detect_monitor_audio(edid);
>   	dp_panel_handle_sink_request(dp->panel);

-- 
With best wishes
Dmitry



More information about the dri-devel mailing list