linux icon indicating copy to clipboard operation
linux copied to clipboard

nocodec SSP1 fails if kernel built with CONFIG_SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT=n

Open kv2019i opened this issue 11 months ago • 1 comments

Combination of kernel built with CONFIG_SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT=n (i.e. a normal kernel) and following kernel commit fe88788779fc ("ASoC: SOF: topology: Use partial match for connecting DAI link and DAI widget"), causes streaming on PCM "Port1" to fail 100%.

This has not been noticed in CI as the DUTs configured for nocodec use kernels built with NOCODEC_DEBUG_SUPPORT.

What happens is "mach_params->num_dai_drivers" is set to 15 (instead of 8 for nocodec kernel). The DAI link list is then

2025-01-24T11:39:06.763073+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP0 Pin'
2025-01-24T11:39:06.763266+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP1 Pin'
2025-01-24T11:39:06.763459+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP2 Pin'
2025-01-24T11:39:06.763639+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP3 Pin'
2025-01-24T11:39:06.763829+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP4 Pin'
2025-01-24T11:39:06.764021+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'SSP5 Pin'
2025-01-24T11:39:06.764211+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'DMIC01 Pin'
2025-01-24T11:39:06.764403+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'DMIC16k Pin'
2025-01-24T11:39:06.764700+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'iDisp1 Pin'
2025-01-24T11:39:06.764949+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'iDisp2 Pin'
2025-01-24T11:39:06.765180+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'iDisp3 Pin'
2025-01-24T11:39:06.765404+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'iDisp4 Pin'
2025-01-24T11:39:06.765619+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'Analog CPU DAI'
2025-01-24T11:39:06.765816+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'Digital CPU DAI'
2025-01-24T11:39:06.766018+00:00 kernel: sof-audio-pci-intel-ptl 0000:00:1f.3: ASoC: Registered DAI 'Alt Analog CPU DAI'
2025-01-24T11:39:06.766212+00:00 kernel: snd_sof:sof_machine_register: sof-audio-pci-intel-ptl 0000:00:1f.3: created machine sof-nocodec
2025-01-24T11:39:06.766397+00:00 kernel: snd_sof_pci:sof_pci_probe_complete: sof-audio-pci-intel-ptl 0000:00:1f.3: Completing SOF PCI probe
2025-01-24T11:39:06.766586+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-0
2025-01-24T11:39:06.768354+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-1
2025-01-24T11:39:06.768499+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-2
2025-01-24T11:39:06.768620+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-3
2025-01-24T11:39:06.768744+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-4
2025-01-24T11:39:06.768869+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-5
2025-01-24T11:39:06.768993+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-6
2025-01-24T11:39:06.769121+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-7
2025-01-24T11:39:06.769231+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-8
2025-01-24T11:39:06.769348+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-9
2025-01-24T11:39:06.769464+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-10
2025-01-24T11:39:06.769577+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-11
2025-01-24T11:39:06.769693+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-12
2025-01-24T11:39:06.769808+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-13
2025-01-24T11:39:06.769919+00:00 kernel: sof-nocodec sof-nocodec: info: override BE DAI link NoCodec-14

Now when one tries to open Port1 for playback, kernel hits this error:

2025-01-23T12:40:49.280965+00:00 kernel: snd_sof:sof_widget_ready: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: widget 19 (dai-copier.SSP.NoCodec-1.capture) is ready [type: 28, pipe: 10, pins: 1 / 1, stream: NoCodec-1]
2025-01-23T12:40:49.281230+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-1
2025-01-23T12:40:49.281478+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-10
2025-01-23T12:40:49.281729+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-11
2025-01-23T12:40:49.281975+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-12
2025-01-23T12:40:49.282220+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-13
2025-01-23T12:40:49.282464+00:00 kernel: snd_sof:sof_connect_dai_widget: sof-audio-pci-intel-ptl 0000:00:1f.3: tplg: connected widget dai-copier.SSP.NoCodec-1.capture -> DAI link NoCodec-14

IOW, stream name of "NoCodec-1" matches multiple DAI links due to the added partial match logic in kernel.

kv2019i avatar Jan 24 '25 13:01 kv2019i

Yeah, I saw this issue before. It happens when there are more than 10 NoCodec dai links are present.

bardliao avatar Jan 24 '25 13:01 bardliao

Fixed by https://github.com/thesofproject/linux/pull/5309

kv2019i avatar Feb 27 '25 17:02 kv2019i