linux/sound
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
..
aoa [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
arm [ALSA] pxa2xx-ac97: Support PXA3xx AC97 2008-04-24 12:00:41 +02:00
core SOUND: fix race in device_create 2008-05-20 13:31:55 -07:00
drivers [ALSA] snd-pcsp - fix pcsp_treble_info() to honour an item number 2008-05-25 18:21:10 +02:00
i2c [ALSA] some fixes and cleanup for ICE1724 cards 2008-04-24 12:00:25 +02:00
isa [ALSA] sound: replace remaining __FUNCTION__ occurences 2008-04-24 12:00:20 +02:00
mips [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
oss msnd_* is ISA-only 2008-05-21 16:55:59 -07:00
parisc [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
pci sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card 2008-06-06 11:16:06 +02:00
pcmcia [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
ppc [ALSA] snd-powermac: style burgundy.c 2008-04-24 12:00:38 +02:00
sh Remove duplicated unlikely() in IS_ERR() 2008-04-29 08:06:25 -07:00
soc [ALSA] ASoC: Fix wrong enum count for jack_function in N810 machine driver 2008-05-13 15:15:58 +02:00
sparc [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
spi [ALSA] at73c213: Add constraints for periods value 2008-04-24 12:00:26 +02:00
synth [ALSA] emux midi synthesizer doesn't honor SOFT_PEDAL-release event 2008-05-13 14:47:43 +02:00
usb caiaq endianness fix 2008-05-21 16:56:00 -07:00
ac97_bus.c [ALSA] ac97_bus power management 2007-02-09 09:03:54 +01:00
Kconfig snd-pcsp: adjust help texts to frighten users 2008-05-19 12:04:35 +02:00
last.c [ALSA] Remove sound/driver.h 2008-01-31 17:29:48 +01:00
Makefile [ALSA] Add SPI devices to ALSA Kconfig and Makefile 2007-10-16 15:57:47 +02:00
sound_core.c [PATCH] mark struct file_operations const 9 2007-02-12 09:48:46 -08:00
sound_firmware.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00