alistair23-linux/sound/pci
Konstantin Ozerkov 228cf79376 ALSA: intel8x0: Improve performance in virtual environment
v3: detection code is x86 and KVM specific, hide it under ifdef
v2: add detection for virtual environments (KVM and Parallels)

This patch is intended to improve performance in virtualized environments
like Parallels Desktop or KVM/VirtualBox/QEMU (virtual ICH/AC97 audio).

I/O access is very time-expensive operation in virtual world: VCPU
can be rescheduled and in the worst case we get more than 10ms delay on
each I/O access.

In the virtual environment loop exit rule
(old_civ == current_civ && old_picb == current_picb) is never satisfied,
because old_picb is never the same as current_picb due to delay inspired
by reading current_civ. As a result loop ended by timeout and we get 10x
more I/O operations.

Experimental data from Prallels Desktop 7, RHEL6 guest (I/O ops per
second):

Original code:
In Port    Counter         Callback
   f014      41550         fffff00000179d00 ac97_bm_read_civ+0x000
   f018      41387         fffff0000017a580 ac97_bm_read_picb+0x000

With patch:
In Port    Counter         Callback
   f014       4090         fffff00000179d00 ac97_bm_read_civ+0x000
   f018       1964         fffff0000017a580 ac97_bm_read_picb+0x000

Signed-off-by: Konstantin Ozerkov <kozerkov@parallels.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-10-31 10:03:28 +01:00
..
ac97 ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist 2011-08-15 10:26:37 +02:00
ali5451 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
asihpi ALSA: asihpi - use kzalloc() 2011-08-07 17:32:52 +02:00
au88x0 ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
aw2 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
ca0106 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
cs46xx ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
cs5535audio Merge branch 'topic/misc' into for-linus 2011-07-22 08:43:24 +02:00
ctxfi ALSA: ctxfi: Bump playback substreams to 256 2011-08-24 10:39:44 +02:00
echoaudio atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
emu10k1 ALSA: emu10k1: allow to disable the SRC 2011-09-20 08:56:58 +02:00
hda ALSA: hda - Fix ADC input-amp handling for Cx20549 codec 2011-10-27 16:58:11 +02:00
ice1712 ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
korg1212 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
lola ALSA: lola - Fix for Lola280 board 2011-06-24 12:54:43 +02:00
lx6464es atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
mixart ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
nm256 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
oxygen ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
pcxhr ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
riptide ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
rme9652 ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards 2011-10-31 09:53:54 +01:00
trident ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
vx222 ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
ymfpci ALSA: ymfpci: allow to disable the SRC 2011-09-20 08:56:56 +02:00
ad1889.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
ad1889.h
ak4531_codec.c
als300.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
als4000.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
atiixp.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
atiixp_modem.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
azt3328.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
azt3328.h
bt87x.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
cmipci.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
cs4281.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
cs5530.c ALSA: Use KBUILD_MODNAME for pci_driver.name entries 2011-06-10 16:20:20 +02:00
ens1370.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
ens1371.c
es1938.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
es1968.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
fm801.c ALSA: fm801 - Clean up redundant reference to snd_fm801_tea575x_gpios[] 2011-09-23 07:18:22 +02:00
intel8x0.c ALSA: intel8x0: Improve performance in virtual environment 2011-10-31 10:03:28 +01:00
intel8x0m.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
Kconfig ALSA: Fix dependency of CONFIG_SND_TEA575X 2011-08-07 17:54:17 +02:00
maestro3.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
Makefile ALSA: Add the driver for Digigram Lola PCI-e boards 2011-05-03 16:31:05 +02:00
rme32.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
rme96.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00
sis7019.c sound: irq: Remove IRQF_DISABLED 2011-09-22 11:19:20 +02:00
sis7019.h
sonicvibes.c ALSA: mpu401: clean up interrupt specification 2011-09-14 11:00:51 +02:00
via82xx.c ALSA: via82xx: allow to disable the SRC 2011-09-20 08:57:00 +02:00
via82xx_modem.c ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* 2011-06-10 16:36:37 +02:00