Skip to content

Commit 77d4206

Browse files
ipc4: honor pipeline pause requests
The no_pause flag should not be used with IPC4. An IPC4 module must not silently ignore a pipeline pause request without sending an error response. This fixes a crash during pipeline deletion when a pipeline containing a MUX ignored a prior PAUSE request and remained active during teardown. Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
1 parent a3a1ee3 commit 77d4206

3 files changed

Lines changed: 6 additions & 0 deletions

File tree

src/audio/module_adapter/module_adapter.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,6 +1361,7 @@ int module_adapter_trigger(struct comp_dev *dev, int cmd)
13611361
if (dev->ipc_config.type == SOF_COMP_HOST || dev->ipc_config.type == SOF_COMP_DAI)
13621362
return interface->endpoint_ops->trigger(dev, cmd);
13631363

1364+
#if CONFIG_IPC_MAJOR_3
13641365
/*
13651366
* If the module doesn't support pause, keep it active along with the rest of the
13661367
* downstream modules
@@ -1369,6 +1370,7 @@ int module_adapter_trigger(struct comp_dev *dev, int cmd)
13691370
dev->state = COMP_STATE_ACTIVE;
13701371
return PPL_STATUS_PATH_STOP;
13711372
}
1373+
#endif
13721374

13731375
if (interface->trigger) {
13741376
#if CONFIG_SOF_USERSPACE_APPLICATION

src/audio/mux/mux.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ static int mux_demux_common_init(struct processing_module *mod, enum sof_comp_ty
112112
}
113113

114114
mod->verify_params_flags = BUFF_PARAMS_CHANNELS;
115+
#if CONFIG_IPC_MAJOR_3
115116
mod->no_pause = true;
117+
#endif
116118
cd->comp_type = type;
117119
return 0;
118120

src/include/module/module/base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,10 @@ struct processing_module {
168168
*/
169169
bool dp_startup_delay;
170170

171+
#if CONFIG_IPC_MAJOR_3
171172
/* flag to indicate module does not pause */
172173
bool no_pause;
174+
#endif
173175

174176
/*
175177
* flag to indicate that the sink buffer writeback should be skipped. It will be handled

0 commit comments

Comments
 (0)