Re: VIA VT82C686 AC97 hickup

From: Marcelo Tosatti
Date: Fri Apr 30 2004 - 07:20:03 EST


On Mon, Mar 22, 2004 at 04:29:36PM +0100, Henrik Persson wrote:
> Hi.
>
> For a month or two I've been experiencing some trouble with the VIA AC97
> sound card attached to my motherboard.. The machine in question is
> running smoothly and playing mp3s and movies and then all of a sudden
> (usually when it has been on for about 10 days or so) this will flood
> dmesg and /var/log/messages:
>
> Mar 22 16:22:43 eurisco kernel: Assertion failed! chan->is_active ==
> sg_active(chan->iobase),via82cxxx_audio.c,via_chan_maybe_start,line=1388
>
> Any ideas?

I'm always seeing this too in my box (which is running 2.6.0).

Jeff, Alan, the assert seem erroneous?

/**
* via_chan_maybe_start - Initiate audio hardware DMA operation
* @chan: Channel whose DMA is to be started
*
* Initiate DMA operation, if the DMA engine for the given
* channel @chan is not already active.
*/

static inline void via_chan_maybe_start (struct via_channel *chan)
{
assert (chan->is_active == sg_active(chan->iobase));

and

static int sg_active (long iobase)
{
u8 tmp = inb (iobase + VIA_PCM_STATUS);
if ((tmp & VIA_SGD_STOPPED) || (tmp & VIA_SGD_PAUSED)) {
printk(KERN_WARNING "via82cxxx warning: SG stopped or paused\n");
return 0;
}
if (tmp & VIA_SGD_ACTIVE)
return 1;
return 0;
}

The driver works normally, even with the assert happening:

via_audio: ignoring drain playback error -11
via_audio: ignoring drain playback error -11
via_audio: ignoring drain playback error -11
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
Assertion failed! chan->is_active == sg_active(chan->iobase),sound/oss/via82cxxx _audio.c,via_chan_maybe_start,line=1388
via_audio: ignoring drain playback error -11
via_audio: ignoring drain playback error -11



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/