linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode
@ 2015-08-31 22:48 Shuah Khan
  2015-09-01  4:47 ` Takashi Iwai
       [not found] ` <55E564ED.4050609@ladisch.de>
  0 siblings, 2 replies; 5+ messages in thread
From: Shuah Khan @ 2015-08-31 22:48 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Linux Media Mailing List, linux-kernel, Shuah Khan

Hi Takashi,

I am seeing the following inconsistent lock state warning when PCM
is run in nonatomic mode. This is on 4.2.0 and with the following
change to force PCM on nonatomic mode:

diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index 310a382..16bbb71 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -370,6 +370,7 @@ int snd_usb_add_audio_stream(struct snd_usb_audio *chip,
        pcm->private_data = as;
        pcm->private_free = snd_usb_audio_pcm_free;
        pcm->info_flags = 0;
+       pcm->nonatomic = true;
        if (chip->pcm_devs > 0)
                sprintf(pcm->name, "USB Audio #%d", chip->pcm_devs);
        else

The device Bus 003 Device 002: ID 2040:7200 Hauppauge
Please let me know if you need more information and any ideas on
how to fix this problem.

thanks,
-- Shuah

[  120.283960] =================================
[  120.283964] [ INFO: inconsistent lock state ]
[  120.283968] 4.2.0+ #29 Not tainted
[  120.283972] ---------------------------------
[  120.283975] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
[  120.283980] swapper/1/0 [HC1[1]:SC0[0]:HE0:SE1] takes:
[  120.283983]  (&(&subs->lock)->rlock){?.+...}, at:
[<ffffffffa05ed210>] retire_capture_urb+0x140/0x2b0 [snd_usb_audio]
[  120.284005] {HARDIRQ-ON-W} state was registered at:
[  120.284008]   [<ffffffff810af230>] __lock_acquire+0xc50/0x2380
[  120.284016]   [<ffffffff810b1631>] lock_acquire+0xb1/0x130
[  120.284022]   [<ffffffff817fd4a1>] _raw_spin_lock+0x31/0x40
[  120.284028]   [<ffffffffa05ee81d>] snd_usb_pcm_pointer+0x5d/0xc0
[snd_usb_audio]
[  120.284040]   [<ffffffffa01c6498>] snd_pcm_update_hw_ptr0+0x38/0x3a0
[snd_pcm]
[  120.284052]   [<ffffffffa01c73f0>] snd_pcm_update_hw_ptr+0x10/0x20
[snd_pcm]
[  120.284063]   [<ffffffffa01beae5>] snd_pcm_hwsync+0x45/0xa0 [snd_pcm]
[  120.284071]   [<ffffffffa01c1347>] snd_pcm_common_ioctl1+0x277/0xce0
[snd_pcm]
[  120.284081]   [<ffffffffa01c227e>] snd_pcm_capture_ioctl1+0x1be/0x2d0
[snd_pcm]
[  120.284090]   [<ffffffffa01c2444>] snd_pcm_capture_ioctl+0x34/0x40
[snd_pcm]
[  120.284100]   [<ffffffff811ed7e1>] do_vfs_ioctl+0x301/0x560
[  120.284107]   [<ffffffff811edab9>] SyS_ioctl+0x79/0x90
[  120.284112]   [<ffffffff817fdf17>] entry_SYSCALL_64_fastpath+0x12/0x6f
[  120.284119] irq event stamp: 823304
[  120.284122] hardirqs last  enabled at (823301): [<ffffffff816707ad>]
cpuidle_enter_state+0xed/0x230
[  120.284129] hardirqs last disabled at (823302): [<ffffffff817fea28>]
common_interrupt+0x68/0x6d
[  120.284135] softirqs last  enabled at (823304): [<ffffffff81060351>]
_local_bh_enable+0x21/0x50
[  120.284139] softirqs last disabled at (823303): [<ffffffff810611ac>]
irq_enter+0x4c/0x70
[  120.284143]
other info that might help us debug this:
[  120.284146]  Possible unsafe locking scenario:

[  120.284149]        CPU0
[  120.284150]        ----
[  120.284152]   lock(&(&subs->lock)->rlock);
[  120.284155]   <Interrupt>
[  120.284157]     lock(&(&subs->lock)->rlock);
[  120.284160]
 *** DEADLOCK ***
[  120.284163] no locks held by swapper/1/0.
[  120.284165]
stack backtrace:
[  120.284170] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0+ #29
[  120.284173] Hardware name: Hewlett-Packard HP ProBook 6475b/180F,
BIOS 68TTU Ver. F.04 08/03/2012
[  120.284176]  ffffffff828d5630 ffff88023ec83a68 ffffffff817f4ea0
0000000000000007
[  120.284181]  ffff880235a6a500 ffff88023ec83ac8 ffffffff810ad97f
0000000000000000
[  120.284186]  0000000000000000 ffff880200000001 ffffffff810134df
ffffffff827c5390
[  120.284192] Call Trace:
[  120.284194]  <IRQ>  [<ffffffff817f4ea0>] dump_stack+0x45/0x57
[  120.284203]  [<ffffffff810ad97f>] print_usage_bug+0x1ff/0x210
[  120.284209]  [<ffffffff810134df>] ? save_stack_trace+0x2f/0x50
[  120.284214]  [<ffffffff810adffe>] mark_lock+0x66e/0x6f0
[  120.284218]  [<ffffffff810aceb0>] ?
print_shortest_lock_dependencies+0x1d0/0x1d0
[  120.284222]  [<ffffffff810af3ab>] __lock_acquire+0xdcb/0x2380
[  120.284226]  [<ffffffff81091a2c>] ? __enqueue_entity+0x6c/0x70
[  120.284230]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
[  120.284234]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
[  120.284238]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
[  120.284242]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
[  120.284246]  [<ffffffff810b1631>] lock_acquire+0xb1/0x130
[  120.284256]  [<ffffffffa05ed210>] ? retire_capture_urb+0x140/0x2b0
[snd_usb_audio]
[  120.284261]  [<ffffffff817fd61c>] _raw_spin_lock_irqsave+0x3c/0x50
[  120.284270]  [<ffffffffa05ed210>] ? retire_capture_urb+0x140/0x2b0
[snd_usb_audio]
[  120.284276]  [<ffffffff81595325>] ? usb_hcd_get_frame_number+0x25/0x30
[  120.284285]  [<ffffffffa05ed210>] retire_capture_urb+0x140/0x2b0
[snd_usb_audio]
[  120.284294]  [<ffffffffa05e513c>] snd_complete_urb+0x13c/0x250
[snd_usb_audio]
[  120.284298]  [<ffffffff81592cb2>] __usb_hcd_giveback_urb+0x72/0x110
[  120.284303]  [<ffffffff81592e53>] usb_hcd_giveback_urb+0x43/0x140
[  120.284307]  [<ffffffff815d1b02>] xhci_irq+0xd42/0x1fc0
[  120.284312]  [<ffffffff815d2d91>] xhci_msi_irq+0x11/0x20
[  120.284317]  [<ffffffff810c4570>] handle_irq_event_percpu+0x80/0x1a0
[  120.284322]  [<ffffffff810c46da>] handle_irq_event+0x4a/0x70
[  120.284325]  [<ffffffff810c7794>] ? handle_edge_irq+0x24/0x150
[  120.284329]  [<ffffffff810c77f1>] handle_edge_irq+0x81/0x150
[  120.284333]  [<ffffffff81005c85>] handle_irq+0x25/0x40
[  120.284337]  [<ffffffff818008ef>] do_IRQ+0x4f/0xe0
[  120.284341]  [<ffffffff817fea2d>] common_interrupt+0x6d/0x6d
[  120.284343]  <EOI>  [<ffffffff816707b2>] ? cpuidle_enter_state+0xf2/0x230
[  120.284351]  [<ffffffff816707ad>] ? cpuidle_enter_state+0xed/0x230
[  120.284355]  [<ffffffff81670927>] cpuidle_enter+0x17/0x20
[  120.284360]  [<ffffffff810a3862>] call_cpuidle+0x32/0x60
[  120.284364]  [<ffffffff81670903>] ? cpuidle_select+0x13/0x20
[  120.284369]  [<ffffffff810a3aa6>] cpu_startup_entry+0x216/0x2d0
[  120.284374]  [<ffffffff8103679d>] start_secondary+0x12d/0x150
[  125.426447] device: 'ep_84': device_unregister
[  125.426511] PM: Removing info for No Bus:ep_84
[  125.426542] device: 'ep_84': device_add
[  125.426602] PM: Adding info for No Bus:ep_84

-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode
  2015-08-31 22:48 Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode Shuah Khan
@ 2015-09-01  4:47 ` Takashi Iwai
       [not found] ` <55E564ED.4050609@ladisch.de>
  1 sibling, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2015-09-01  4:47 UTC (permalink / raw)
  To: Shuah Khan; +Cc: alsa-devel, Linux Media Mailing List, linux-kernel

On Tue, 01 Sep 2015 00:48:30 +0200,
Shuah Khan wrote:
> 
> Hi Takashi,
> 
> I am seeing the following inconsistent lock state warning when PCM
> is run in nonatomic mode. This is on 4.2.0 and with the following
> change to force PCM on nonatomic mode:
> 
> diff --git a/sound/usb/stream.c b/sound/usb/stream.c
> index 310a382..16bbb71 100644
> --- a/sound/usb/stream.c
> +++ b/sound/usb/stream.c
> @@ -370,6 +370,7 @@ int snd_usb_add_audio_stream(struct snd_usb_audio *chip,
>         pcm->private_data = as;
>         pcm->private_free = snd_usb_audio_pcm_free;
>         pcm->info_flags = 0;
> +       pcm->nonatomic = true;
>         if (chip->pcm_devs > 0)
>                 sprintf(pcm->name, "USB Audio #%d", chip->pcm_devs);
>         else
> 
> The device Bus 003 Device 002: ID 2040:7200 Hauppauge
> Please let me know if you need more information and any ideas on
> how to fix this problem.

The USB-audio can't be used in the non-atomic mode.
snd_pcm_period_elapsed() is handled in the complete callback that is
already atomic.


Takashi

> 
> thanks,
> -- Shuah
> 
> [  120.283960] =================================
> [  120.283964] [ INFO: inconsistent lock state ]
> [  120.283968] 4.2.0+ #29 Not tainted
> [  120.283972] ---------------------------------
> [  120.283975] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
> [  120.283980] swapper/1/0 [HC1[1]:SC0[0]:HE0:SE1] takes:
> [  120.283983]  (&(&subs->lock)->rlock){?.+...}, at:
> [<ffffffffa05ed210>] retire_capture_urb+0x140/0x2b0 [snd_usb_audio]
> [  120.284005] {HARDIRQ-ON-W} state was registered at:
> [  120.284008]   [<ffffffff810af230>] __lock_acquire+0xc50/0x2380
> [  120.284016]   [<ffffffff810b1631>] lock_acquire+0xb1/0x130
> [  120.284022]   [<ffffffff817fd4a1>] _raw_spin_lock+0x31/0x40
> [  120.284028]   [<ffffffffa05ee81d>] snd_usb_pcm_pointer+0x5d/0xc0
> [snd_usb_audio]
> [  120.284040]   [<ffffffffa01c6498>] snd_pcm_update_hw_ptr0+0x38/0x3a0
> [snd_pcm]
> [  120.284052]   [<ffffffffa01c73f0>] snd_pcm_update_hw_ptr+0x10/0x20
> [snd_pcm]
> [  120.284063]   [<ffffffffa01beae5>] snd_pcm_hwsync+0x45/0xa0 [snd_pcm]
> [  120.284071]   [<ffffffffa01c1347>] snd_pcm_common_ioctl1+0x277/0xce0
> [snd_pcm]
> [  120.284081]   [<ffffffffa01c227e>] snd_pcm_capture_ioctl1+0x1be/0x2d0
> [snd_pcm]
> [  120.284090]   [<ffffffffa01c2444>] snd_pcm_capture_ioctl+0x34/0x40
> [snd_pcm]
> [  120.284100]   [<ffffffff811ed7e1>] do_vfs_ioctl+0x301/0x560
> [  120.284107]   [<ffffffff811edab9>] SyS_ioctl+0x79/0x90
> [  120.284112]   [<ffffffff817fdf17>] entry_SYSCALL_64_fastpath+0x12/0x6f
> [  120.284119] irq event stamp: 823304
> [  120.284122] hardirqs last  enabled at (823301): [<ffffffff816707ad>]
> cpuidle_enter_state+0xed/0x230
> [  120.284129] hardirqs last disabled at (823302): [<ffffffff817fea28>]
> common_interrupt+0x68/0x6d
> [  120.284135] softirqs last  enabled at (823304): [<ffffffff81060351>]
> _local_bh_enable+0x21/0x50
> [  120.284139] softirqs last disabled at (823303): [<ffffffff810611ac>]
> irq_enter+0x4c/0x70
> [  120.284143]
> other info that might help us debug this:
> [  120.284146]  Possible unsafe locking scenario:
> 
> [  120.284149]        CPU0
> [  120.284150]        ----
> [  120.284152]   lock(&(&subs->lock)->rlock);
> [  120.284155]   <Interrupt>
> [  120.284157]     lock(&(&subs->lock)->rlock);
> [  120.284160]
>  *** DEADLOCK ***
> [  120.284163] no locks held by swapper/1/0.
> [  120.284165]
> stack backtrace:
> [  120.284170] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0+ #29
> [  120.284173] Hardware name: Hewlett-Packard HP ProBook 6475b/180F,
> BIOS 68TTU Ver. F.04 08/03/2012
> [  120.284176]  ffffffff828d5630 ffff88023ec83a68 ffffffff817f4ea0
> 0000000000000007
> [  120.284181]  ffff880235a6a500 ffff88023ec83ac8 ffffffff810ad97f
> 0000000000000000
> [  120.284186]  0000000000000000 ffff880200000001 ffffffff810134df
> ffffffff827c5390
> [  120.284192] Call Trace:
> [  120.284194]  <IRQ>  [<ffffffff817f4ea0>] dump_stack+0x45/0x57
> [  120.284203]  [<ffffffff810ad97f>] print_usage_bug+0x1ff/0x210
> [  120.284209]  [<ffffffff810134df>] ? save_stack_trace+0x2f/0x50
> [  120.284214]  [<ffffffff810adffe>] mark_lock+0x66e/0x6f0
> [  120.284218]  [<ffffffff810aceb0>] ?
> print_shortest_lock_dependencies+0x1d0/0x1d0
> [  120.284222]  [<ffffffff810af3ab>] __lock_acquire+0xdcb/0x2380
> [  120.284226]  [<ffffffff81091a2c>] ? __enqueue_entity+0x6c/0x70
> [  120.284230]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
> [  120.284234]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
> [  120.284238]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
> [  120.284242]  [<ffffffff810ab8dd>] ? __lock_is_held+0x4d/0x70
> [  120.284246]  [<ffffffff810b1631>] lock_acquire+0xb1/0x130
> [  120.284256]  [<ffffffffa05ed210>] ? retire_capture_urb+0x140/0x2b0
> [snd_usb_audio]
> [  120.284261]  [<ffffffff817fd61c>] _raw_spin_lock_irqsave+0x3c/0x50
> [  120.284270]  [<ffffffffa05ed210>] ? retire_capture_urb+0x140/0x2b0
> [snd_usb_audio]
> [  120.284276]  [<ffffffff81595325>] ? usb_hcd_get_frame_number+0x25/0x30
> [  120.284285]  [<ffffffffa05ed210>] retire_capture_urb+0x140/0x2b0
> [snd_usb_audio]
> [  120.284294]  [<ffffffffa05e513c>] snd_complete_urb+0x13c/0x250
> [snd_usb_audio]
> [  120.284298]  [<ffffffff81592cb2>] __usb_hcd_giveback_urb+0x72/0x110
> [  120.284303]  [<ffffffff81592e53>] usb_hcd_giveback_urb+0x43/0x140
> [  120.284307]  [<ffffffff815d1b02>] xhci_irq+0xd42/0x1fc0
> [  120.284312]  [<ffffffff815d2d91>] xhci_msi_irq+0x11/0x20
> [  120.284317]  [<ffffffff810c4570>] handle_irq_event_percpu+0x80/0x1a0
> [  120.284322]  [<ffffffff810c46da>] handle_irq_event+0x4a/0x70
> [  120.284325]  [<ffffffff810c7794>] ? handle_edge_irq+0x24/0x150
> [  120.284329]  [<ffffffff810c77f1>] handle_edge_irq+0x81/0x150
> [  120.284333]  [<ffffffff81005c85>] handle_irq+0x25/0x40
> [  120.284337]  [<ffffffff818008ef>] do_IRQ+0x4f/0xe0
> [  120.284341]  [<ffffffff817fea2d>] common_interrupt+0x6d/0x6d
> [  120.284343]  <EOI>  [<ffffffff816707b2>] ? cpuidle_enter_state+0xf2/0x230
> [  120.284351]  [<ffffffff816707ad>] ? cpuidle_enter_state+0xed/0x230
> [  120.284355]  [<ffffffff81670927>] cpuidle_enter+0x17/0x20
> [  120.284360]  [<ffffffff810a3862>] call_cpuidle+0x32/0x60
> [  120.284364]  [<ffffffff81670903>] ? cpuidle_select+0x13/0x20
> [  120.284369]  [<ffffffff810a3aa6>] cpu_startup_entry+0x216/0x2d0
> [  120.284374]  [<ffffffff8103679d>] start_secondary+0x12d/0x150
> [  125.426447] device: 'ep_84': device_unregister
> [  125.426511] PM: Removing info for No Bus:ep_84
> [  125.426542] device: 'ep_84': device_add
> [  125.426602] PM: Adding info for No Bus:ep_84
> 
> -- 
> Shuah Khan
> Sr. Linux Kernel Developer
> Open Source Innovation Group
> Samsung Research America (Silicon Valley)
> shuahkh@osg.samsung.com | (970) 217-8978
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [alsa-devel] Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode
       [not found] ` <55E564ED.4050609@ladisch.de>
@ 2015-09-01 17:40   ` Shuah Khan
  2015-09-01 17:53     ` Clemens Ladisch
  0 siblings, 1 reply; 5+ messages in thread
From: Shuah Khan @ 2015-09-01 17:40 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel, Shuah Khan, linux-media

On 09/01/2015 02:42 AM, Clemens Ladisch wrote:
> Shuah Khan wrote:
>> +++ b/sound/usb/stream.c
>> pcm->private_data = as;
>> pcm->private_free = snd_usb_audio_pcm_free;
>> pcm->info_flags = 0;
>> + pcm->nonatomic = true;
> 
> Why do you think you need nonatomic mode in the USB audio driver?
> 

Short answer is that the need is not a generic one, but a device
specific need to add a fewature. Now the longer version below.

This is for a for AU0828 Hauppauge HVR950Q media device. snd-usb-audio
driver provides Audio Capture support on this device with DVB and Video
drivers driving the device for Digital and Video functions.

I have been working on adding Media Controller support for this chip
as chip specific feature in ALSA. This will allow sharing resources
such as the tuner across the drivers that control the device (DVB,
Video, snd-usb-audio). Media Controller framework uses a mutex to
protect access to resources, hence there is a need to hold this mutex
from SNDRV_PCM_TRIGGER_START and SNDRV_PCM_TRIGGER_STOP which could run
in IRQ context.

The Media Controller mutex can't be converted to a spinlock as it would
break I2C drivers. During review, the idea to run PCM in non-atomic mode
came up as a way to solve the problem. The actual solution would
run PCM in nonatomic context only for the AU0828 Hauppauge HVR950Q chip.

The above change is a quick try to see if PCM nonatomic works with this
device. I have to figure out another way to solve the problem as this
isn't an option.

Hope this helps answer your question. If you would like more information
on the ALSA Media Controller work for this device, I can provide links
to the previous patch series.

thanks,
-- Shuah

-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [alsa-devel] Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode
  2015-09-01 17:40   ` [alsa-devel] " Shuah Khan
@ 2015-09-01 17:53     ` Clemens Ladisch
  2015-09-02 14:54       ` Shuah Khan
  0 siblings, 1 reply; 5+ messages in thread
From: Clemens Ladisch @ 2015-09-01 17:53 UTC (permalink / raw)
  To: Shuah Khan; +Cc: alsa-devel, linux-media

Shuah Khan wrote:> On 09/01/2015 02:42 AM, Clemens Ladisch wrote:
>> Shuah Khan wrote:
>>> +++ b/sound/usb/stream.c
>>> pcm->private_data = as;
>>> pcm->private_free = snd_usb_audio_pcm_free;
>>> pcm->info_flags = 0;
>>> + pcm->nonatomic = true;
>>
>> Why do you think you need nonatomic mode in the USB audio driver?
>
> I have been working on adding Media Controller support for this chip
> as chip specific feature in ALSA. This will allow sharing resources
> such as the tuner across the drivers that control the device (DVB,
> Video, snd-usb-audio). Media Controller framework uses a mutex to
> protect access to resources, hence there is a need to hold this mutex
> from SNDRV_PCM_TRIGGER_START and SNDRV_PCM_TRIGGER_STOP which could run
> in IRQ context.

Resources should be managed in the hw_params/hw_free callbacks.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [alsa-devel] Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode
  2015-09-01 17:53     ` Clemens Ladisch
@ 2015-09-02 14:54       ` Shuah Khan
  0 siblings, 0 replies; 5+ messages in thread
From: Shuah Khan @ 2015-09-02 14:54 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel, linux-media, Shuah Khan

On 09/01/2015 11:53 AM, Clemens Ladisch wrote:
> Shuah Khan wrote:> On 09/01/2015 02:42 AM, Clemens Ladisch wrote:
>>> Shuah Khan wrote:
>>>> +++ b/sound/usb/stream.c
>>>> pcm->private_data = as;
>>>> pcm->private_free = snd_usb_audio_pcm_free;
>>>> pcm->info_flags = 0;
>>>> + pcm->nonatomic = true;
>>>
>>> Why do you think you need nonatomic mode in the USB audio driver?
>>
>> I have been working on adding Media Controller support for this chip
>> as chip specific feature in ALSA. This will allow sharing resources
>> such as the tuner across the drivers that control the device (DVB,
>> Video, snd-usb-audio). Media Controller framework uses a mutex to
>> protect access to resources, hence there is a need to hold this mutex
>> from SNDRV_PCM_TRIGGER_START and SNDRV_PCM_TRIGGER_STOP which could run
>> in IRQ context.
> 
> Resources should be managed in the hw_params/hw_free callbacks.
> 

snd_usb_hw_params() and snd_usb_hw_free() are the two places
I could add resource access logic and try if that works for
what I am trying to do. Thanks for the tip.

thanks,
-- Shuah


-- 
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
shuahkh@osg.samsung.com | (970) 217-8978

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-09-02 14:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-31 22:48 Linux 4.2 ALSA snd-usb-audio inconsistent lock state warn in PCM nonatomic mode Shuah Khan
2015-09-01  4:47 ` Takashi Iwai
     [not found] ` <55E564ED.4050609@ladisch.de>
2015-09-01 17:40   ` [alsa-devel] " Shuah Khan
2015-09-01 17:53     ` Clemens Ladisch
2015-09-02 14:54       ` Shuah Khan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).