From b4d4eae01ce5b5b153525654d6e9a9f4ec49f398 Mon Sep 17 00:00:00 2001 From: Thomas Dedinsky Date: Mon, 13 Apr 2020 12:57:00 -0400 Subject: [PATCH] drm: msm: sde: Allow reservation of odd number of DSCs Add a check to escape the DSC allocation once the requested number of DSCs has been reached and a pair is not required for the last DSC allocated. This issue was introduced when trying to allow for quad DSC, which broke single DSC use. Change-Id: I4bc368004f92570d588e76ceb832d63fd3bb15d7 Signed-off-by: Thomas Dedinsky --- msm/sde/sde_rm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/msm/sde/sde_rm.c b/msm/sde/sde_rm.c index ecfaace8a8a6..4e456c32167a 100644 --- a/msm/sde/sde_rm.c +++ b/msm/sde/sde_rm.c @@ -1324,11 +1324,14 @@ static int _sde_rm_reserve_dsc( reserve_mask |= (1 << iter_i.blk->id); dsc[alloc_count++] = iter_i.blk; + /* Return if peer is not needed */ + if (alloc_count == num_dsc_enc) + break; + /* Valid first dsc found, find matching peers */ sde_rm_init_hw_iter(&iter_j, 0, SDE_HW_BLK_DSC); - while (alloc_count != num_dsc_enc && - _sde_rm_get_hw_locked(rm, &iter_j)) { + while (_sde_rm_get_hw_locked(rm, &iter_j)) { if (reserve_mask & (1 << iter_j.blk->id)) continue;