Re: 2.0.4 Sound oops

Hannu Savolainen (hannu@voxware.pp.fi)
Wed, 10 Jul 1996 00:27:04 +0300 (EET DST)


On Tue, 9 Jul 1996 neuron@arn.net wrote:

> I got this oops with 2.0.4 with sound compiled in. The system initializes
> the console then tries to init the sound, then dies with this:
[snip]
There seem to be some initializations which should have been done before
installing the interrupt handler.

The following patch should fix the crash.

Best regards,

Hannu
-----------------------------
Hannu Savolainen (hannu@voxware.pp.fi, hannu@4front-tech.com)
http://personal.eunet.fi/pp/voxware/hannu.html (my home page)
http://www.4Front-Tech.com/uss.html (UNIX Sound System (USS))
http://personal.eunet.fi/pp/voxware (USS Lite/TASD/VoxWare)
-------- cut here -------------
*** sb_common.c.old Wed Jul 10 00:21:08 1996
--- sb_common.c Wed Jul 10 00:21:27 1996
***************
*** 130,143 ****

sb_devc *devc = irq2devc[irq];

- devc->irq_ok = 1;
-
if (devc == NULL || devc->irq != irq)
{
DEB (printk ("sbintr: Bogus interrupt IRQ%d\n", irq));
return;
}

if (devc->model == MDL_SB16)
{

--- 130,143 ----

sb_devc *devc = irq2devc[irq];

if (devc == NULL || devc->irq != irq)
{
DEB (printk ("sbintr: Bogus interrupt IRQ%d\n", irq));
return;
}

+ devc->irq_ok = 1;
+
if (devc->model == MDL_SB16)
{

***************
*** 671,680 ****
--- 671,684 ----
devc->dev = num_audiodevs;
devc->caps = hw_config->driver_use_1;

+ irq2devc[hw_config->irq] = devc;
+ devc->irq_ok = 0;
+
if (snd_set_irq_handler (hw_config->irq,
sbintr, "sound blaster", devc->osp) < 0)
{
printk ("SB: Can't allocate IRQ%d\n", hw_config->irq);
+ irq2devc[hw_config->irq] = NULL;
return;
}

***************
*** 696,704 ****
DDB (printk ("This is a genuine SB Pro\n"));
}
}
-
- irq2devc[hw_config->irq] = devc;
- devc->irq_ok = 0;

for (n = 0; n < 3 && devc->irq_ok == 0; n++)
if (sb_dsp_command (devc, 0xf2)) /* Cause interrupt immediately */
--- 700,705 ----