Commit e0eb3481 authored by Mansur Alisha Shaik's avatar Mansur Alisha Shaik Committed by Mauro Carvalho Chehab

media: venus: fix multiple encoder crash

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.

Cc: stable@vger.kernel.org # v5.7+
Fixes: 4ebf9693 ("media: venus: introduce core selection")
Tested-by: default avatarDouglas Anderson <dianders@chromium.org>
Signed-off-by: default avatarMansur Alisha Shaik <mansur@codeaurora.org>
Signed-off-by: default avatarStanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 3b4cfc69
...@@ -496,6 +496,10 @@ min_loaded_core(struct venus_inst *inst, u32 *min_coreid, u32 *min_load) ...@@ -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) { list_for_each_entry(inst_pos, &core->instances, list) {
if (inst_pos == inst) if (inst_pos == inst)
continue; continue;
if (inst_pos->state != INST_START)
continue;
vpp_freq = inst_pos->clk_data.codec_freq_data->vpp_freq; vpp_freq = inst_pos->clk_data.codec_freq_data->vpp_freq;
coreid = inst_pos->clk_data.core_id; coreid = inst_pos->clk_data.core_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment