diff --git a/msm/sde/sde_core_perf.c b/msm/sde/sde_core_perf.c index 7a79df8792..4f83d5fcb4 100644 --- a/msm/sde/sde_core_perf.c +++ b/msm/sde/sde_core_perf.c @@ -655,11 +655,14 @@ void sde_core_perf_crtc_update_uidle(struct drm_crtc *crtc, uidle_crtc_status = UIDLE_STATE_FAL1_FAL10; else if (fps <= kms->perf.catalog->uidle_cfg.max_fal1_fps) uidle_crtc_status = UIDLE_STATE_FAL1_ONLY; + else + uidle_crtc_status = UIDLE_STATE_DISABLE; - if (uidle_crtc_status == UIDLE_STATE_DISABLE) - break; - else if (uidle_crtc_status < uidle_status) + if (uidle_crtc_status < uidle_status) uidle_status = uidle_crtc_status; + + if (uidle_status == UIDLE_STATE_DISABLE) + break; } } diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 7b5497613e..987753d312 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -3312,6 +3312,10 @@ static void sde_encoder_underrun_callback(struct drm_encoder *drm_enc, trace_sde_encoder_underrun(DRMID(drm_enc), atomic_read(&phy_enc->underrun_cnt)); + if (phy_enc->sde_kms && + phy_enc->sde_kms->catalog->uidle_cfg.debugfs_perf) + sde_encoder_perf_uidle_status(phy_enc->sde_kms, sde_enc->crtc); + SDE_DBG_CTRL("stop_ftrace"); SDE_DBG_CTRL("panic_underrun");