On 17/09/2007, Takashi Iwai tiwai@suse.de wrote:
At Sun, 16 Sep 2007 12:12:08 +0100, Adrian McMenamin wrote:
Resending this as I typed the wrong address for alsa-devel last night. A general clean up as well as some changes to interrupt handling.
This patch handles instability on the Dreamcast G2 bus while PIO or DMA is underway on the System -> AICA channel.
Without the suspension of interrupts when PIO or DMA is underway the G2 bus is prone to timeouts leading to seemingly random crashes. This is particularly visible in cases such as maple bus (see http://lkml.org/lkml/2007/9/15/181) hotplugging but the patch is good for all conditions.
Hm, it isn't optimal but if it's safe...
BTW, what is the exat matter? Is it race or do you have to always disable IRQ during DMA? In the former case, spin_lock_irqsave() is basically the way to go.
I'm afraid it is a hardware bug/feature rather than a race. I'll rework and repost