Messages in this thread |  | | Date | Mon, 9 Sep 1996 13:22:17 +0300 (EET DST) | From | Hannu Savolainen <> | Subject | Re: 2.0.18 locks up during sound init |
| |
On Mon, 9 Sep 1996, Duncan Roe wrote:
> (have been away a while - hope this isn't a FAQ :) Actually it's a FAQ but a less frequently answered one.
> Hi, > > Can anyone help with this? I would be happy to try out any patches or supply > other requested info, if you would give me directions how to get it. I don't yet > know enough about kernel internels to do much more myself... > > I tried installing 2.0.18 but the system locked solid after the boot message: > > "Sound initialization started"
The immediate cause begind this problem is that the MIDI port of SB16 (happens only with DSP versions 4.5 and 4.11) causes interrupt before the driver is ready to process it. Actually the interrupt is already pending when the driver installs the interrupt handler. As far as I know this happens only after warm boot (propability to get it after cold boot is very rare). Even with early DSP versions the problem doesn't occur on all systems (such as mine).
For some reason kernels earlier than 2.0.1 were immune to this problem.
There are some (alternative) known solutions: - Use Linux 2.0.14 or later as loadable module. Unload the module always before rebooting. The unload routine resets the MIDI port so that it's not active. - Compile hernel without MIDI support. - Always cold boot the machine.
I have been told that reversing a code movement made between 2.0.4 and 2.0.5 fixes the problem. This change is counter intuative and I'm not sure if it has any effect. However I have enclosed it in case someone volunteers to test it. Please let me know about your experiences.
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 Mon Sep 9 12:45:01 1996 --- sb_common.c Mon Sep 9 12:45:43 1996 *************** *** 674,682 **** 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) { --- 674,679 ---- *************** *** 684,689 **** --- 681,689 ---- irq2devc[hw_config->irq] = NULL; return; } + + irq2devc[hw_config->irq] = devc; + devc->irq_ok = 0; if (devc->major == 4) if (!sb16_set_irq_hw (devc, devc->irq)) /* Unsupported IRQ */
|  |