On Mon, 2022-02-07 at 13:46 +0800, Liu Ying wrote: > If the CRTC state is already inactive, it doesn't make sense to trigger > the entry timer for self refresh work to make the display enter self > refresh mode, because the disabled CRTC hints that either the entire > display pipeline is disabled or the previous atomic commit is triggered > by the self refresh work(the CRTC is disabled, while the relevant encoder > and bridges could be disabled or not depending on the drivers). > > Cc: Rob Clark <robdclark@xxxxxxxxxxxx> > Cc: Sean Paul <seanpaul@xxxxxxxxxxxx> > Cc: Zain Wang <wzz@xxxxxxxxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Maxime Ripard <mripard@xxxxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: David Airlie <airlied@xxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > Signed-off-by: Liu Ying <victor.liu@xxxxxxx> Gentle ping... Thanks, Liu Ying > --- > drivers/gpu/drm/drm_self_refresh_helper.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_self_refresh_helper.c b/drivers/gpu/drm/drm_self_refresh_helper.c > index dd33fec5aabd..e76eb3cd22c7 100644 > --- a/drivers/gpu/drm/drm_self_refresh_helper.c > +++ b/drivers/gpu/drm/drm_self_refresh_helper.c > @@ -204,8 +204,12 @@ void drm_self_refresh_helper_alter_state(struct drm_atomic_state *state) > struct drm_self_refresh_data *sr_data; > unsigned int delay; > > - /* Don't trigger the entry timer when we're already in SR */ > - if (crtc_state->self_refresh_active) > + /* > + * Don't trigger the entry timer when we're already inactive. > + * Note that the inactive state hints that either we're already > + * in SR or the entire display pipeline is already disabled. > + */ > + if (!crtc_state->active) > continue; > > sr_data = crtc->self_refresh_data;