[PATCH] Add duplex sound support for USB devices using implicit feedback

Erwin Burema e.burema at freedom.nl
Sat May 23 20:09:31 CEST 2020


On zaterdag 23 mei 2020 19:53:49 CEST Alexander Tsoy wrote:
> В Вс, 10/05/2020 в 20:29 +0200, Erwin Burema пишет:
> > For USB sound devices using implicit feedback the endpoint used for
> > this feedback should be able to be opened twice, once for required
> > feedback and second time for audio data. This way these devices can
> > be put in duplex audio mode. Since this only works if the settings of
> > the endpoint don't change a check is included for this.
> > 
> > This fixes bug 207023 ("MOTU M2 regression on duplex audio") and
> > should also fix bug 103751 ("M-Audio Fast Track Ultra usb audio
> > device will not operate full-duplex")
> > 
> > Signed-off-by: Erwin Burema <e.burema at gmail.com>
> > ---
> 
> This patch seems to cause kernel panic on my system. This happens
> during boot when gdm (with pulseaudio) is starting up.
>

That's interesting, not running gnome (and thus also not running gdm, 
currently KDE with SDDM) here so would need to take some time troubleshooting. 
Suspect I missed something in the check if both input and output are similarly 
configured.

Will see if I can reproduce it and where exactly it goes wrong, in the 
meantime would it be possible to test if 5.6 or later show the same issue 
since I intially developed the patch against that release?

> $ grep CONFIG_IRQ_FORCED_THREADING /boot/config-5.4.42-gentoo
> CONFIG_IRQ_FORCED_THREADING=y
> 
> $ grep threadirqs /proc/cmdline
> BOOT_IMAGE=/vmlinuz-5.4.42-gentoo root=/dev/mapper/vg_system-root ro
> rd.md.uuid=cdf11511:cf0ca8c5:cc165dc3:3d3d248f
> rd.luks.uuid=a5a6e532-af4e-49b2-8178-95e54c293799 rd.lvm.lv=vg_system/root
> rd.lvm.lv=vg_system/swap rd.lvm.lv=vg_system/usr
> resume=/dev/mapper/vg_system-swap
> rootflags=relatime,logbufs=8,logbsize=256k rootfstype=xfs
> init=/lib/systemd/systemd noautogroup loglevel=5 console=ttyS1,115200
> console=tty0 threadirqs mgag200.modeset=1
> 
> [   60.563598] BUG: unable to handle page fault for address:
> ffffb80602983ff0 [   60.570478] #PF: supervisor write access in kernel mode
> [   60.575701] #PF: error_code(0x0002) - not-present page
> [   60.580833] PGD 813498067 P4D 813498067 PUD 813499067 PMD 80e0e0067 PTE 0
> [   60.587619] Oops: 0002 [#1] PREEMPT SMP NOPTI
> [   60.591979] CPU: 4 PID: 242 Comm: irq/34-xhci_hcd Tainted: G           O 
>   T 5.4.42-gentoo #1 [   60.600585] Hardware name: Supermicro H8SCM/H8SCM,
> BIOS 3.5b       03/18/2016 [   60.607723] RIP: 0010:__memcpy+0x12/0x20
> [   60.611646] Code: c1 e2 20 48 09 c2 48 31 d3 e9 71 ff ff ff 90 90 90 90
> 90 90 90 90 90 90 0f 1f 44 00 00 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07
> <f3> 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 f3 a4 [  
> 60.630401] RSP: 0018:ffffb806004a3c80 EFLAGS: 00010046
> [   60.635628] RAX: ffffb80602983ff0 RBX: 0000000000000010 RCX:
> 000000000000000a [   60.642759] RDX: 0000000000000000 RSI: ffff9d5f6659b000
> RDI: ffffb80602983ff0 [   60.649883] RBP: ffff9d5f62c38c00 R08:
> 0000000000000002 R09: 0000000000000000 [   60.657017] R10: 0000000000000002
> R11: 0000000000000001 R12: 0000000000000050 [   60.664160] R13:
> 0000000000000000 R14: 0000000000079ff0 R15: ffff9d608c1d4908 [   60.671293]
> FS:  0000000000000000(0000) GS:ffff9d6096b00000(0000)
> knlGS:0000000000000000 [   60.679380] CS:  0010 DS: 0000 ES: 0000 CR0:
> 0000000080050033
> [   60.685125] CR2: ffffb80602983ff0 CR3: 000000080f55c000 CR4:
> 00000000000406e0 [   60.692258] Call Trace:
> [   60.694719]  retire_capture_urb+0x201/0x270 [snd_usb_audio]
> [   60.700288]  snd_complete_urb+0x1b7/0x270 [snd_usb_audio]
> [   60.705686]  __usb_hcd_giveback_urb+0x77/0xe0
> [   60.710054]  xhci_giveback_urb_in_irq.isra.0+0x6d/0x100
> [   60.715278]  xhci_td_cleanup+0xc4/0xe0
> [   60.719032]  xhci_irq+0x825/0x1780
> [   60.722438]  ? __schedule+0x2c3/0x650
> [   60.726105]  ? irq_finalize_oneshot.part.0+0xd0/0xd0
> [   60.731071]  irq_forced_thread_fn+0x25/0x70
> [   60.735257]  irq_thread+0xea/0x170
> [   60.738672]  ? wake_threads_waitq+0x30/0x30
> [   60.742859]  kthread+0xf8/0x130
> [   60.746005]  ? irq_thread_check_affinity+0x90/0x90
> [   60.750805]  ? kthread_park+0x90/0x90
> [   60.754473]  ret_from_fork+0x22/0x40
> [   60.758053] Modules linked in: ebtable_filter ebtables bridge stp llc
> netconsole wireguard ip6_udp_tunnel udp_tunnel xt_limit xt_comment
> xt_recent xt_multiport xt_MASQUERADE iptable_nat nf_nat
> nf_conntrack_netbios_ns nf_conntrack_broadcast xt_CT ip6table_raw
> iptable_raw snd_seq_midi snd_seq_midi_event amd64_edac_mod kvm_amd kvm
> pcspkr irqbypass uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2
> videodev snd_hda_codec_hdmi videobuf2_common snd_hda_intel joydev
> snd_intel_nhlt snd_hda_codec snd_usb_audio sp5100_tco snd_usbmidi_lib
> snd_rawmidi snd_hwdep e1000e snd_hda_core snd_pcm nfsd tcp_yeah tcp_vegas
> sch_fq_codel uas amdgpu crc32c_intel mgag200 drm_vram_helper gpu_sched ttm
> vhost_scsi target_core_mod configfs vhost_net tun tap vhost vhba(O) jc42
> ipmi_si ipmi_devintf ipmi_msghandler fuse eeprom [   60.828924] CR2:
> ffffb80602983ff0
> [   60.832245] ---[ end trace 1945ea8b50798a03 ]---
> [   60.836862] RIP: 0010:__memcpy+0x12/0x20
> [   60.840797] Code: c1 e2 20 48 09 c2 48 31 d3 e9 71 ff ff ff 90 90 90 90
> 90 90 90 90 90 90 0f 1f 44 00 00 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07
> <f3> 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 f3 a4 [  
> 60.859553] RSP: 0018:ffffb806004a3c80 EFLAGS: 00010046
> [   60.864778] RAX: ffffb80602983ff0 RBX: 0000000000000010 RCX:
> 000000000000000a [   60.871911] RDX: 0000000000000000 RSI: ffff9d5f6659b000
> RDI: ffffb80602983ff0 [   60.879036] RBP: ffff9d5f62c38c00 R08:
> 0000000000000002 R09: 0000000000000000 [   60.886168] R10: 0000000000000002
> R11: 0000000000000001 R12: 0000000000000050 [   60.893301] R13:
> 0000000000000000 R14: 0000000000079ff0 R15: ffff9d608c1d4908 [   60.900453]
> FS:  0000000000000000(0000) GS:ffff9d6096b00000(0000)
> knlGS:0000000000000000 [   60.908538] CS:  0010 DS: 0000 ES: 0000 CR0:
> 0000000080050033
> [   60.914276] CR2: ffffb80602983ff0 CR3: 000000080f55c000 CR4:
> 00000000000406e0 [   60.921411] Kernel panic - not syncing: Fatal exception
> in interrupt [   60.927783] Kernel Offset: 0x21000000 from
> 0xffffffff81000000 (relocation range:
> 0xffffffff80000000-0xffffffffbfffffff) [   60.938554] ---[ end Kernel panic
> - not syncing: Fatal exception in interrupt ]---






More information about the Alsa-devel mailing list