-
Notifications
You must be signed in to change notification settings - Fork 349
Description
Describe the bug
The WoV tplg has below connections:
DMIC ------> KPB ------------------------------> host_copier
| ^
| |
|----> micsel ----> dummywov ----> virtual_widget
ppl0 contains DMIC, KPB
ppl1 contains micsel, dummywov
ppl2 contains host_copier
The driver triggers multiple pipelines with a single IPC with SOF_IPC4_GLB_PIPE_STATE_EXT_MULTI set in the ipc message extension field. The IPC message is:
ipc tx : 0x13000004|0x1
payload : 0x00000003 0x00000002 0x00000001 0x00000000
This sequence doesn't work and the trigger to running state will fail.
However, if we trigger single pipeline in sequence like:
ipc tx : 0x13000004|0x0
ipc tx : 0x13010004|0x0
ipc tx : 0x13020004|0x0
This sequence works.
ps: this bug is related to the trigger sequence.
I tried to send ipc message:
ipc tx : 0x13000004|0x1
payload : 0x00000003 0x00000000 0x00000001 0x00000002
It works.
Use a pipeline, which contains a KPB component, to record. For example, on MTL nocodec platform, run:
arecord -Dhw:0,11 -c2 -r16000 -fs32_le -M -N 2.wav -vvv
Reproduction Rate
100%
Expected behavior
Record works well.
Impact
The pipelines which contains kpb won't work
Environment
-
Branch name and commit hash of the 2 repositories: sof (firmware/topology) and linux (kernel driver).
-
Name of the topology file
- Topology: sof-ace-tplg/sof-mtl-nocodec-wov.tplg (which can be generated with PR topology2: add dummy wov pipeline to nocodec #6782 )
-
Name of the platform(s) on which the bug is observed.
- Platform: MTLP_RVP_NOCODEC
dmesg
dmesg.txt
mtrace.txt
The mtrace error:
[00:01:07.155,301] <inf> kd_test: test_keyword_trigger: comp:1 0xd0000 test_keyword_trigger()
[00:01:07.155,315] <err> module_adapter: comp:1 0x90000 module_process() error 1: for comp 589824
[00:01:07.155,323] <err> module_adapter: comp:1 0x90000 module_adapter_copy() error 1: module processing failed
[00:01:07.155,331] <inf> kpb: kpb_trigger: comp:0 0xe0000 kpb_trigger()
[00:01:07.155,343] <inf> kpb: kpb_trigger: comp:0 0xe0000 kpb_trigger()
ps: 0x90000 module is selector module.
The dmesg error:
[ 219.532633] snd_sof:sof_ipc4_log_header: sof-audio-pci-intel-mtl 0000:00:1f.3: ipc tx : 0x12000000|0x0: GLB_DELETE_PIPELINE
[ 219.532971] snd_sof:sof_ipc4_log_header: sof-audio-pci-intel-mtl 0000:00:1f.3: ipc tx reply: 0x3200000c|0x0: GLB_DELETE_PIPELINE
[ 219.532978] sof-audio-pci-intel-mtl 0000:00:1f.3: FW reported error: 12 - Required resource is in invalid state
[ 219.533252] sof-audio-pci-intel-mtl 0000:00:1f.3: ipc error for msg 0x12000000|0x0
[ 219.533275] sof-audio-pci-intel-mtl 0000:00:1f.3: failed to free pipeline widget pipeline.19
ps: The dmesg shows error at deleting pipeline, but the mtrace shows error before this point. mtrace shows error at trigger multiple pipelines to running state.
