linux/sound/pci
Takashi Iwai 88452da92b ALSA: hda: Use standard waitqueue for RIRB wakeup
The HD-audio CORB/RIRB communication was programmed in a way that was
documented in the reference in decades ago, which is essentially a
polling in the waiter side.  It's working fine but costs CPU cycles on
some platforms that support only slow communications.  Also, for some
platforms that had unreliable communications, we put longer wait time
(2 ms), which accumulate quite long time if you execute many verbs in
a shot (e.g. at the initialization or resume phase).

This patch attempts to improve the situation by introducing the
standard waitqueue in the RIRB waiter side instead of polling.  The
test results on my machine show significant improvements.  The time
spent for "cat /proc/asound/card*/codec#*" were changed like:

* Intel SKL + Realtek codec
  before the patch:
   0.00user 0.04system 0:00.10elapsed 40.0%CPU
  after the patch:
   0.00user 0.01system 0:00.10elapsed 10.0%CPU

* Nvidia GP107GL + Nvidia HDMI codec
  before the patch:
   0.00user 0.00system 0:02.76elapsed 0.0%CPU
  after the patch:
   0.00user 0.00system 0:00.01elapsed 17.0%CPU

So, for Intel chips, the total time is same, while the total time is
greatly reduced (from 2.76 to 0.01s) for Nvidia chips.
The only negative data here is the increase of CPU time for Nvidia,
but this is the unavoidable cost for faster wakeups, supposedly.

Link: https://lore.kernel.org/r/20191210145727.22054-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2019-12-10 18:22:46 +01:00
..
ac97 ALSA: ac97: remove unused variable 'snd_ac97_controls_master_mono' 2019-08-09 11:28:43 +02:00
ali5451 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
asihpi ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
au88x0 ALSA: au88x0: Fix incorrect device pointer for preallocation 2019-11-12 15:33:52 +01:00
aw2 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
ca0106 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
cs46xx ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
cs5535audio ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
ctxfi ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
echoaudio ALSA: echoaudio: simplify get_audio_levels 2019-12-08 09:47:43 +01:00
emu10k1 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
hda ALSA: hda: Use standard waitqueue for RIRB wakeup 2019-12-10 18:22:46 +01:00
ice1712 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
korg1212 ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
lola ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
lx6464es ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
mixart ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
nm256 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
oxygen ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
pcxhr ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
riptide ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
rme9652 ALSA: rme: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
trident ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
vx222 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ymfpci ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
Kconfig sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ad1889.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
ad1889.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ak4531_codec.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
als300.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
als4000.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
atiixp.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
atiixp_modem.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
azt3328.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
azt3328.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bt87x.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
cmipci.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
cs4281.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
cs5530.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 118 2019-05-24 17:39:02 +02:00
ens1370.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
ens1371.c
es1938.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
es1968.c ALSA: es1968: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
fm801.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
intel8x0.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
intel8x0m.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
maestro3.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
rme32.c ALSA: rme32: Remove superfluous snd_dma_continuous_data() 2019-11-06 15:47:41 +01:00
rme96.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
sis7019.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
sis7019.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 274 2019-06-05 17:30:30 +02:00
sonicvibes.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
via82xx.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00
via82xx_modem.c ALSA: pci: Avoid non-standard macro usage 2019-11-06 15:47:43 +01:00