]> git.baikalelectronics.ru Git - kernel.git/commit
ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader
authorTakashi Iwai <tiwai@suse.de>
Fri, 15 Mar 2013 08:19:11 +0000 (09:19 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 20 Mar 2013 17:36:06 +0000 (18:36 +0100)
commit0b2a15a5fd51dc9a3b493a0b8f161d14b18624aa
tree13fcb4aedfee2a58bd690690b7ca7f17b0608cf9
parent790bb1836dbb989a0a15c576120c9bbb243d127b
ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader

The current DSP loader code abuses snd_hda_lock_devices() for ensuring
the DSP loader not conflicting with the other normal operations.  But
this trick obviously doesn't work for the PM resume since the streams
are kept opened there where snd_hda_lock_devices() returns -EBUSY.
That means we need another lock mechanism instead of abuse.

This patch provides the new lock state to azx_dev.  Theoretically it's
possible that the DSP loader conflicts with the stream that has been
already assigned for another PCM.  If it's running, the DSP loader
should simply fail.  If not -- it's the case for PM resume --, we
should assign this stream temporarily to the DSP loader, and take it
back to the PCM after finishing DSP loading.  If the PCM is operated
during the DSP loading, it should get an error, too.

Reported-and-tested-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_intel.c