[alsa-devel] Bug in sound-unstable-2.6 ice1724

Takashi Iwai tiwai at suse.de
Sun Nov 2 19:21:37 CET 2008


At Sun, 2 Nov 2008 15:21:05 +0200,
Karsten Wiese wrote:
> 
> Am Sonntag, 2. November 2008 schrieb Takashi Iwai:
> > nAt Sat, 1 Nov 2008 19:08:59 +0200,
> > Karsten Wiese wrote:
> > > 
> > > Hi Takashi,
> > > 
> > > Am Sonntag, 26. Oktober 2008 schrieb Takashi Iwai:
> > > > At Sun, 26 Oct 2008 17:31:02 +0100,
> > > > =?UTF-8?Q?Vedran_Mileti=C4=87?= wrote:
> > > > > 
> > > > > Yeap, that one does it. No need to revert it fully, though. I just
> > > > > uncommented the unsigned char mask line and removed that #if 0 and
> > > > > #endif. Now it works perfectly. Thanks! Can you fix it in your tree?
> > > > 
> > > > Well, before doing that, I'd like to understand the problem more.
> > > > 
> > > > If the problem is about the initial IRQ mask value, setting 0 should
> > > > work as well.
> > > > Could you change the code just to do like below, and check whether it
> > > > works?
> > > > 	outb(0, ICEREG1724(ice, IRQMASK));
> > > 
> > > Makes a pc hang sometimes here, while reverting the entire patch is stable.
> > > no midi tested though, only audio.
> > 
> > Hmm, that's a bad news.
> > Basically my change is just to disable MPU_TX irq when unresolved irqs
> > occur.  The detection was already there, but it was enabled only when
> > CONFIG_SND_DEBUG.
> > 
> > So, the question is, whether does the hang-up happens even with the
> > old code when you enable CONFIG_SND_DEBUG?
> > 
> > Also, a bit more detail would be appreciated -- what kind of hang-up,
> > whether you get the error message, or so.
> 
> the hang happened on an always on production machine. I don't have a second
> card to test with currently, nor do i like to test on that machine again ;-)
> 
> May be its just that the mask has to be applied the other way round:
> I'd guess a 1 means "masked" or "not active".

Damn, you must be right!
Could you give the patch below?


Takashi

diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
index 40725df..0dfa054 100644
--- a/sound/pci/ice1712/ice1724.c
+++ b/sound/pci/ice1712/ice1724.c
@@ -395,8 +395,8 @@ static irqreturn_t snd_vt1724_interrupt(int irq, void *dev_id)
 			       "status = 0x%x\n", status);
 			if (status & VT1724_IRQ_MPU_TX) {
 				printk(KERN_ERR "ice1724: Disabling MPU_TX\n");
-				outb(inb(ICEREG1724(ice, IRQMASK)) &
-				     ~VT1724_IRQ_MPU_TX,
+				outb(inb(ICEREG1724(ice, IRQMASK)) |
+				     VT1724_IRQ_MPU_TX,
 				     ICEREG1724(ice, IRQMASK));
 			}
 			break;
@@ -2413,8 +2413,8 @@ static int __devinit snd_vt1724_create(struct snd_card *card,
 		return -EIO;
 	}
 
-	/* clear interrupts -- otherwise you'll get irq problems later */
-	outb(0, ICEREG1724(ice, IRQMASK));
+	/* MPU_RX and TX irq masks are cleared later dynamically */
+	outb(VT1724_IRQ_MPU_RX | VT1724_IRQ_MPU_TX , ICEREG1724(ice, IRQMASK));
 
 	/* don't handle FIFO overrun/underruns (just yet),
 	 * since they cause machine lockups


More information about the Alsa-devel mailing list