[alsa-devel] PATCH - MIDI on ice1724 - real-time kernel problem SOLVED(?)

Pavel Hofman pavel.hofman at insite.cz
Thu May 29 11:35:35 CEST 2008


Martin Krüger wrote:
> Martin Krüger schrieb:
>> Takashi Iwai schrieb:
>>   
>>> At Mon, 26 May 2008 12:54:32 +0200,
>>> Martin Krüger wrote:
>>>   
>>>     
>>>> Pavel Hofman wrote:
>>>>     
>>>>       
>>>>> Martin Krüger wrote:
>>>>>   
>>>>>       
>>>>>         
>>>>>       
>>>>>         
>>>> Hello Pavel,
>>>>
>>>> i just compiled a new 2.6.25.4 kernel with realtime support. the kernel 
>>>> is from kernel.org, so without any patches except the realtime patch 
>>>> from the alsa wiki.
>>>>     
>>>>       
>>> To be sure -- does 2.6.25.4 without realtime support work?
>>>
>>>
>>> Takashi
>>>   
>>>     
>> No. Not with an unpatched kernel set to "Preemptible Kernel (Low-Latency 
>> Desktop) PREEMPT_DESKTOP". I didn't test the lower preemption modes.
>>
>> Martin
>> _______________________________________________
>> Alsa-devel mailing list
>> Alsa-devel at alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>   
> Hi,
> 
> i just compiled a 2.6.25-3 with Preemption disabled and i still get the 
> the same.
> 
> Midi in works, Midi out leads to a complete system freeze.
> Is there a workaroud of disabling just Midi out? That would solve the 
> bug for me, and would prevent other users from freezing their system...
> 

Hi Martin,

I will try a newer kernel on my home Ubuntu 7.10.

We really need to find out what freezes your system. Is it a complete 
freeze, or just heavy overload?

Originally, I experienced a complete freeze caused by infinite loop in 
IRQ handler ice1724.c:snd_vt1724_interrupt. This loop is already avoided 
by the timeout variable. Do you run with  CONFIG_SND_DEBUG? Does dmesg 
list any of the "ice1724: Too long irq loop..." messages?

Later on, I experienced an IRQ flood, caused by intermittent throwing 
ICE1724 IRQ (MPU transmit). I could see the IRQxx "process" hogging the 
CPU in top. If that is the case, please add some debug statements to 
ice1724.c:snd_vt1724_interrupt and look which IRQ gets fired (variable 
status).

In any case, please make sure you are using the latest GIT version with 
all the patches, so that we all work on the same code.

Disabling MIDI OUT - I have not tested the following patch, perhaps it 
needs some changes:


diff --git a/pci/ice1712/ice1724.c b/pci/ice1712/ice1724.c
index e596d77..13695de 100644
--- a/pci/ice1712/ice1724.c
+++ b/pci/ice1712/ice1724.c
@@ -2546,7 +2546,7 @@ static int __devinit snd_vt1724_probe(struct 
pci_dev *pci,
                 if (ice->eeprom.data[ICE_EEP2_SYSCONF] & 
VT1724_CFG_MPU401) {
                         struct snd_rawmidi *rmidi;

-                       err = snd_rawmidi_new(card, "MIDI", 0, 1, 1, 
&rmidi);
+                       err = snd_rawmidi_new(card, "MIDI", 0, 0, 1, 
&rmidi);
                         if (err < 0) {
                                 snd_card_free(card);
                                 return err;
@@ -2554,11 +2554,7 @@ static int __devinit snd_vt1724_probe(struct 
pci_dev *pci
                         ice->rmidi[0] = rmidi;
                         rmidi->private_data = ice;
                         strcpy(rmidi->name, "ICE1724 MIDI");
-                       rmidi->info_flags = SNDRV_RAWMIDI_INFO_OUTPUT |
-                                           SNDRV_RAWMIDI_INFO_INPUT |
-                                           SNDRV_RAWMIDI_INFO_DUPLEX;
-                       snd_rawmidi_set_ops(rmidi, 
SNDRV_RAWMIDI_STREAM_OUTPUT,
-                                           &vt1724_midi_output_ops);
+                       rmidi->info_flags = SNDRV_RAWMIDI_INFO_INPUT;
                         snd_rawmidi_set_ops(rmidi, 
SNDRV_RAWMIDI_STREAM_INPUT,
                                             &vt1724_midi_input_ops);






Regards,

Pavel.


More information about the Alsa-devel mailing list