Currently we are considering the instances which are available
in core->inst list for load calculation in min_loaded_core()
function, but this is incorrect because by the time we call
decide_core() for second instance, the third instance not
filled yet codec_freq_data pointer.

Solve this by considering the instances whose session has started.

Signed-off-by: Mansur Alisha Shaik <man...@codeaurora.org>
---
Changes in V2:
- As per Alex and Jeffrey comments, elaborated problem
  and addressed review comments.

 drivers/media/platform/qcom/venus/pm_helpers.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c 
b/drivers/media/platform/qcom/venus/pm_helpers.c
index abf9315..531e7a4 100644
--- a/drivers/media/platform/qcom/venus/pm_helpers.c
+++ b/drivers/media/platform/qcom/venus/pm_helpers.c
@@ -496,6 +496,10 @@ min_loaded_core(struct venus_inst *inst, u32 *min_coreid, 
u32 *min_load)
        list_for_each_entry(inst_pos, &core->instances, list) {
                if (inst_pos == inst)
                        continue;
+
+               if (inst_pos->state != INST_START)
+                       continue;
+
                vpp_freq = inst_pos->clk_data.codec_freq_data->vpp_freq;
                coreid = inst_pos->clk_data.core_id;
 
-- 
2.7.4

Reply via email to