Am 30.08.2007, 08:55 Uhr, schrieb Jan Kiszka <[EMAIL PROTECTED]>:

> Axel Beierlein wrote:
>> Am 29.08.2007, 16:42 Uhr, schrieb Jan Kiszka <[EMAIL PROTECTED]>:
>>
>>> Axel Beierlein wrote:
>>>> what could it be that an simple rt_dev_open locks up my system when it
>>>> calls rtdm_lock_put_irqrestore?
>>>>
>>>> [...]
>>>> if (rtdm_irq_request(&ctx->irq_handle,
>>>>                 MPC5xxx_PSC2_IRQ,
>>>>             rt_psc_interrupt,
>>>>             RTDM_IRQTYPE_SHARED | RTDM_IRQTYPE_EDGE,
>>>>                 context->device->proc_name,
>>>>                 ctx))
>>>>     {
>>>>         printk ("psc5200B.c: request_irq() failed\n");
>>>>         return -1;
>>>>     }
>>>>
>>>>      rtdm_irq_enable(&ctx->irq_handle);
>>>>
>>>>      rtdm_lock_get_irqsave(&ctx->lock, lock_ctx);
>>>>
>>>>      ctx->imr_status = MPC5xxx_PSC_IMR_RXRDY;
>>>>     out_be16(&psc->mpc5xxx_psc_imr, ctx->imr_status);
>>>
>>> Let me guess: this line arms the related IRQ source at hw level, no?
>>>
>>
>> Yes you are right. This Bit enables the RX_Ready IRQ at hw level. Sorry
>> for the little Code fragment but the code relates to your 16550A.c and i
>> don´t want to post all the routines at the moment.
>>
>>>>
>>>>     rtdm_lock_put_irqrestore(&ctx->lock, lock_ctx);
>>>>     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>     Here i get the crash
>>>
>>> Because it enabled local IRQ delivery again, and the system ends up in
>>> an IRQ storm, or some endless loop in the IRQ handler, or some crash
>>> related to IRQ handling. Still just guessing...
>>>
>>> Jan
>>>
>>
>> But how your UART driver handle this Problem? I have check the Irq
>> Handler an implement an printk in it to see where it hangs, but it
>> doesn´t step into this handler.
>
> In case you have an IRQ storm or your handler runs in an endless loop,
> you won't be able to read that printk even if it's executed - Linux will
> have no chance to dump the message.
>
> Start debugging with shrinking the handler down to a plain "return
> RTDM_IRQ_HANDLED" (or even RTDM_IRQ_NONE so that Xenomai disables the
> line), then slowly re-enabling and reviewing your code.

That has no effect. It doesn´t step into it.
I think there is another Problem, cause when i go back to the userspace  
applikation after i have opened the device the system locks up when i call  
a funktion like getchar()
Just in following dev_open and dev_close is workin for only one time. But  
when i call the same applikation a second time it locks up in the rt_open  
routine at rtdm_lock_put_irqrestore.

>
> Jan
>
> PS: reply-to-all

Ups, wrong button. Now i know why my message doesn´t appear in the mailing  
list ;-)


Axel





_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to