ipc4: invalidate cache for set large config message

Cache issue can occur when several set large config messages
were sent one after another

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
This commit is contained in:
Adrian Bonislawski 2022-08-28 20:20:58 +02:00 committed by Liam Girdwood
parent 2ad89eb0d3
commit f8c89ed211
3 changed files with 1 additions and 4 deletions

View File

@ -981,7 +981,6 @@ static int copier_set_sink_fmt(struct comp_dev *dev, void *data,
struct copier_data *cd = comp_get_drvdata(dev);
sink_fmt = (struct ipc4_copier_config_set_sink_format *)data;
dcache_invalidate_region((__sparse_force void __sparse_cache *)sink_fmt, sizeof(*sink_fmt));
if (max_data_size < sizeof(*sink_fmt)) {
comp_err(dev, "error: max_data_size %d should be bigger than %d", max_data_size,
@ -1027,7 +1026,6 @@ static int set_attenuation(struct comp_dev *dev, uint32_t data_offset, char *dat
return -EINVAL;
}
dcache_invalidate_region((__sparse_force void __sparse_cache *)data, sizeof(uint32_t));
attenuation = *(uint32_t *)data;
if (attenuation > 31) {
comp_err(dev, "attenuation %d is out of range", attenuation);

View File

@ -1377,8 +1377,6 @@ static int mixin_set_large_config(struct comp_dev *dev, uint32_t param_id, bool
return -EINVAL;
}
dcache_invalidate_region((__sparse_force void __sparse_cache *)data, data_offset_or_size);
cfg = (struct ipc4_mixer_mode_config *)data;
if (cfg->mixer_mode_config_count < 1 || cfg->mixer_mode_config_count > MIXIN_MAX_SINKS) {

View File

@ -753,6 +753,7 @@ static int ipc4_set_large_config_module_instance(struct ipc4_message_request *ip
int ret;
memcpy_s(&config, sizeof(config), ipc4, sizeof(config));
dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE, config.extension.r.data_off_size);
tr_dbg(&ipc_tr, "ipc4_set_large_config_module_instance %x : %x",
(uint32_t)config.primary.r.module_id, (uint32_t)config.primary.r.instance_id);