Re: Hang problem on Tyan K7 Thunder resolved -- SB Live! heads-up

Linus Torvalds
2001-08-12T23:00:08Z

On Sun, 12 Aug 2001, Manuel McLure wrote:
> >
> > Can you try just adding the line
> >
> > if (!woinst)
> > return;
> >
> > to the top of the function (just before the "spin_lock_irqsave()"). Does
> > that fix it for you?
> >
> > Linus
>
> So far so good - however I don't have a consistent way to reproduce this.
> I'll just keep running and see if the Oops happens again.

Mind trying an alternate approach: remove the "if (!woinst)" thing, and
instead move the line that initializes the tasklets down two lines
(there's two places, they look something like

tasklet_init(&wiinst->timer.tasklet, emu10k1_wavein_bh, (unsigned long) wave_dev);
wave_dev->wiinst = wiinst;
emu10k1_wavein_setformat(wave_dev, &wiinst->format);

and they _should_ do the "tasklet_init()" _after_ the other
initializations, ie move that line down a bit, like so:

wave_dev->wiinst = wiinst;
emu10k1_wavein_setformat(wave_dev, &wiinst->format);
tasklet_init(&wiinst->timer.tasklet, emu10k1_wavein_bh, (unsigned long) wave_dev);

Does that also fix it?

And sure, I realize that you want to run it for a while..

Linus