![](https://secure.gravatar.com/avatar/5b19e9d0e834ea10ef75803718ad564b.jpg?s=120&d=mm&r=g)
On Tue, 03 Jan 2023 16:31:13 +0100, Michael Ralston wrote:
On Wed, 4 Jan 2023 at 02:21, Takashi Iwai tiwai@suse.de wrote:
Hrm... Try to reload snd_usb_audio module with the dyndbg=+p option, e.g.
# modprobe -r snd-usb-audio # modprobe snd_usb_audio dyndbg=+p
Or you can try to put your own debug printk(); we need to make sure whether it's really the right code you're testing at first.
Ok, it looks like it was ignoring the kernel command line for some reason. modprobing it with the option brought up debug messages again.
I'm still running kernel 6.1.2 vanilla with the revert and the patches.
aplay hung again when I ran it, the kernel was stuck on: Jan 04 02:25:59 leatherback kernel: usb 1-4: 1:1 Start Playback PCM
and didn't output another line until I ctrl+c aplay.
OK, thanks. Then it's not about the USB interface reset. It must be subtle and nasty difference.
Could you apply the change below on the top? It essentially reverts the hw_params/prepare split again.
Takashi
-- 8< -- --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -564,6 +564,21 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream, }
ret = snd_usb_endpoint_set_params(chip, subs->data_endpoint); + if (ret < 0) + goto unlock; + + if (subs->sync_endpoint) { + ret = snd_usb_endpoint_prepare(chip, subs->sync_endpoint); + if (ret < 0) + goto unlock; + } + + ret = snd_usb_endpoint_prepare(chip, subs->data_endpoint); + if (ret < 0) + goto unlock; + else if (ret > 0) + snd_usb_set_format_quirk(subs, subs->cur_audiofmt); + ret = 0;
unlock: if (ret < 0)