mirror of https://gitee.com/openkylin/linux.git
868e15dbd2
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> |
||
---|---|---|
.. | ||
Makefile | ||
emu10k1.c | ||
emu10k1_callback.c | ||
emu10k1_main.c | ||
emu10k1_patch.c | ||
emu10k1_synth.c | ||
emu10k1_synth_local.h | ||
emu10k1x.c | ||
emufx.c | ||
emumixer.c | ||
emumpu401.c | ||
emupcm.c | ||
emuproc.c | ||
io.c | ||
irq.c | ||
memory.c | ||
p16v.c | ||
p16v.h | ||
p17v.h | ||
timer.c | ||
tina2.h | ||
voice.c |