alistair23-linux/sound/pci
Jaroslav Franek 868e15dbd2 sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card
When the Linux kernel is compiled with CONFIG_DEBUG_SHIRQ=y,
the Soundblaster Audigy2 ZS Notebook PCMCIA card causes the
system hang during boot (udev stage) or when the card is hot-plug.
The CONFIG_DEBUG_SHIRQ flag is by default 'y' with all Fedora
kernels since 2.6.23. The problem was reported as
https://bugzilla.redhat.com/show_bug.cgi?id=326411

The issue was hunted down to the snd_emu10k1_create() routine:

/* pseudo-code */
snd_emu10k1_create(...) {
	...
	request_irq(... IRQF_SHARED ...) {
		register the irq handler
		#ifdef CONFIG_DEBUG_SHIRQ
		call the irq handler: snd_emu10k1_interrupt() {
			poll I/O port   // <---- !! system hangs
			...
		}
		#endif
	}
	...
	snd_emu10k1_cardbus_init(...) {
		initialize I/O ports
	}
	...
}

The early access to I/O port in the interrupt handler causes
the freeze. Obviously it is necessary to init the I/O ports
before accessing them. This patch moves the registration of
the irq handler after the initialization of the I/O ports.

Signed-off-by: Jaroslav Franek <jarin.franek@post.cz>
Acked-by: James Courtier-Dutton <James@superbug.co.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2008-06-06 11:16:06 +02:00
..
ac97 [ALSA] ac97 - Fix ASUS A9T laptop output 2008-05-30 16:20:42 +02:00
ali5451 [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
au88x0 [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
aw2 [ALSA] aw2: remove duplicate MODULE_LICENSE 2008-04-24 12:00:31 +02:00
ca0106 [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
cs46xx [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
cs5535audio [ALSA] fix cs5535 section mismatch 2008-01-31 17:30:12 +01:00
echoaudio [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
emu10k1 sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card 2008-06-06 11:16:06 +02:00
hda [ALSA] hda - COMPAL IFL90/JFL-92 laptop quirk 2008-06-04 12:12:35 +02:00
ice1712 [ALSA] ice1724 - Enable watermarks 2008-04-29 19:01:56 +02:00
korg1212 [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
mixart [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
nm256 [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
oxygen [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
pcxhr [ALSA] sound/pci/pcxhr/pcxhr.c: fix warnings 2008-04-24 12:00:29 +02:00
riptide [ALSA] sound: riptide.c fix shadowed variable warnings 2008-04-24 12:00:18 +02:00
rme9652 [ALSA] sound/pci/rme9652/hdspm.c: stop inlining largish static functions 2008-04-24 12:00:33 +02:00
trident [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
vx222 [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
ymfpci [ALSA] ymfpci - Fix race at removal 2008-04-24 12:00:30 +02:00
ad1889.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
ad1889.h
als300.c [ALSA] sound: replace remaining __FUNCTION__ occurences 2008-04-24 12:00:20 +02:00
als4000.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
atiixp.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
atiixp_modem.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
azt3328.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
azt3328.h
bt87x.c [ALSA] bt87X: fix freeing of shared interrupt 2008-02-22 14:20:09 -08:00
cmipci.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
cs4281.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
cs5530.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
ens1370.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
ens1371.c
es1938.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
es1968.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
fm801.c [ALSA] sound: fm801.c fix shadowed variable warning 2008-04-24 12:00:16 +02:00
intel8x0.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
intel8x0m.c [ALSA] Fix possible races at free_irq in PCI drivers 2008-04-24 12:00:41 +02:00
Kconfig [ALSA] fm801 - Fix kconfig dependency mess of fm801-tea575x 2008-05-05 14:12:08 +02:00
maestro3.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
Makefile [ALSA] Emagic Audiowerk 2 ALSA driver. 2008-04-24 12:00:13 +02:00
rme32.c [ALSA] sound: rme32.c fix integer as NULL pointer warning 2008-04-24 12:00:16 +02:00
rme96.c [ALSA] sound: rme96.c fix integer as NULL pointer warning 2008-04-24 12:00:17 +02:00
sis7019.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
sis7019.h [ALSA] sis7019: support the SiS 7019 Audio Accelerator 2008-01-31 17:29:36 +01:00
sonicvibes.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
via82xx.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00
via82xx_modem.c [ALSA] Fix synchronize_irq() bugs, redundancies 2008-04-24 12:00:40 +02:00