Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: [isaki-audio2] src/sys/dev/usb
At Thu, 02 May 2019 10:46:14 +1000,
matthew green wrote:
> > Committed By: isaki
> > Date: Wed May 1 13:09:34 UTC 2019
> >
> > Modified Files:
> > src/sys/dev/usb [isaki-audio2]: uaudio.c
> >
> > Log Message:
> > Don't release sc_lock and sc_intr_lock in trigger_{input,output}.
> > In the past, sc_lock was IPL_SCHED and (probably) it had conflicted
> > with usb subroutines. But at some point, sc_lock has changed to use
> > IPL_SOFTUSB so such problems should been gone.
>
> sc_lock was ever IPL_SCHED. only sc_intr_lock has been
> that in uaudio.
Oh, it's typo... it's sc_intr_lock.
> what are you trying to avoid here? the problem this
> solved was not always a problem, but eg:
>
> - drop the audio thread lock when calling into usb when it may sleep,
> avoiding a deadlock between audiowrite and audioioctl. this fixes
> mixerctl -a vs. playing hanging the system
> XXX probably need to check this in a bunch more places.
>
> is the commit related to that change. can you confirm
> that you can be playing and run mixerctl -a at the same
> time with your change in place?
Yes, I can run mixerctl -a or mixerctl -w while playing. But
I think it's not related because my change is about trigger_*
and trigger_* is not called during playback/recording running.
What I tried to solve is rev1.148-1.149 which releases locks
(unnecessarily, I think).
trigger_* is called with sc_lock and sc_intr_lock held, so
it's (basically) strange to release such locks (Of course
I know it's necessary in some cases).
rev1.148-1.149 releases both of sc_lock and sc_intr_lock to
call uaudio_chan_open(), uaudio_chan_alloc_buffers() and
uaudio_chan_ptransfer(). But I've read(traveled) source codes
of these three USB functions and I believe that these can work
with IPL_SOFTUSB/IPL_NONE held (in other words, releasing locks
here is unnecessary).
Thanks,
---
Tetsuya Isaki <isaki%pastel-flower.jp@localhost / isaki%NetBSD.org@localhost>
Home |
Main Index |
Thread Index |
Old Index