mirror of https://github.com/thesofproject/sof.git
SMP: Fix improper cache invalidation.
Cache was invalidated in improper order, which led to using rubbish data on slave core during pipeline trigger start. Signed-off-by: ArturX Kloniecki <arturx.kloniecki@linux.intel.com>
This commit is contained in:
parent
84de2e32c9
commit
73cfb3c92f
|
@ -120,12 +120,13 @@ static int pipeline_for_each_comp(struct comp_dev *current,
|
||||||
/* run this operation further */
|
/* run this operation further */
|
||||||
list_for_item(clist, buffer_list) {
|
list_for_item(clist, buffer_list) {
|
||||||
buffer = buffer_from_list(clist, struct comp_buffer, dir);
|
buffer = buffer_from_list(clist, struct comp_buffer, dir);
|
||||||
buffer_comp = buffer_get_comp(buffer, dir);
|
|
||||||
|
|
||||||
/* execute operation on buffer */
|
/* execute operation on buffer */
|
||||||
if (buff_func)
|
if (buff_func)
|
||||||
buff_func(buffer);
|
buff_func(buffer);
|
||||||
|
|
||||||
|
buffer_comp = buffer_get_comp(buffer, dir);
|
||||||
|
|
||||||
/* don't go further if this component is not connected */
|
/* don't go further if this component is not connected */
|
||||||
if (!buffer_comp)
|
if (!buffer_comp)
|
||||||
continue;
|
continue;
|
||||||
|
@ -364,14 +365,14 @@ static int pipeline_comp_cache(struct comp_dev *current, void *data, int dir)
|
||||||
tracev_pipe("pipeline_comp_cache(), current->comp.id = %u, dir = %u",
|
tracev_pipe("pipeline_comp_cache(), current->comp.id = %u, dir = %u",
|
||||||
current->comp.id, dir);
|
current->comp.id, dir);
|
||||||
|
|
||||||
|
comp_cache(current, ppl_data->cmd);
|
||||||
|
|
||||||
if (!comp_is_single_pipeline(current, ppl_data->start)) {
|
if (!comp_is_single_pipeline(current, ppl_data->start)) {
|
||||||
tracev_pipe("pipeline_comp_cache(), "
|
tracev_pipe("pipeline_comp_cache(), "
|
||||||
"current is from another pipeline");
|
"current is from another pipeline");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
comp_cache(current, ppl_data->cmd);
|
|
||||||
|
|
||||||
return pipeline_for_each_comp(current, &pipeline_comp_cache, data,
|
return pipeline_for_each_comp(current, &pipeline_comp_cache, data,
|
||||||
comp_buffer_cache_op(ppl_data->cmd),
|
comp_buffer_cache_op(ppl_data->cmd),
|
||||||
dir);
|
dir);
|
||||||
|
|
Loading…
Reference in New Issue