All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Shared interrupt usage questions
@ 2009-08-18 22:00 Steve Deiters
  2009-08-25  7:04 ` Jan Kiszka
  0 siblings, 1 reply; 2+ messages in thread
From: Steve Deiters @ 2009-08-18 22:00 UTC (permalink / raw)
  To: xenomai

Is there any acceptable method to share interrupts in userspace using
the native or other skin?  I am writing a userspace driver for a
Freescale mpc5121e PSC serial controller, which has 12 programmable
serial controllers which share a single FIFO controller.  The single
FIFO controller has only a single IRQ line for all 12 PSCs.  This is
further complicated by the fact that I also have to share this IRQ line
with the Linux domain, as it uses it for the console and other devices.

I cannot create multiple descriptors for the same IRQ line using
rt_intr_create and the I_SHARED flag doesn't seem to be exported to
userspace.  Is it valid to create one interrupt object and have multiple
tasks call rt_intr_wait for the same interrupt object?
 
As far as sharing with the Linux domain, from the documentation it seems
I would just pass I_PROPAGATE and this should then be transparent to the
Linux domain.  Are there additional concerns I should be aware of with
sharing the IRQ between domains?

I have set this up with a single shared interrupt object and it seems to
function properly.  I just want to make sure I'm not putting myself in a
condition where I could get some obscure race condition or have a
deadlocked interrupt server task.

Thanks.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Xenomai-help] Shared interrupt usage questions
  2009-08-18 22:00 [Xenomai-help] Shared interrupt usage questions Steve Deiters
@ 2009-08-25  7:04 ` Jan Kiszka
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2009-08-25  7:04 UTC (permalink / raw)
  To: Steve Deiters; +Cc: xenomai

[-- Attachment #1: Type: text/plain, Size: 1600 bytes --]

Steve Deiters wrote:
> Is there any acceptable method to share interrupts in userspace using
> the native or other skin?  I am writing a userspace driver for a
> Freescale mpc5121e PSC serial controller, which has 12 programmable
> serial controllers which share a single FIFO controller.  The single
> FIFO controller has only a single IRQ line for all 12 PSCs.  This is
> further complicated by the fact that I also have to share this IRQ line
> with the Linux domain, as it uses it for the console and other devices.
> 
> I cannot create multiple descriptors for the same IRQ line using
> rt_intr_create and the I_SHARED flag doesn't seem to be exported to
> userspace.  Is it valid to create one interrupt object and have multiple
> tasks call rt_intr_wait for the same interrupt object?
>  
> As far as sharing with the Linux domain, from the documentation it seems
> I would just pass I_PROPAGATE and this should then be transparent to the
> Linux domain.  Are there additional concerns I should be aware of with
> sharing the IRQ between domains?
> 
> I have set this up with a single shared interrupt object and it seems to
> function properly.  I just want to make sure I'm not putting myself in a
> condition where I could get some obscure race condition or have a
> deadlocked interrupt server task.
> 
> Thanks.

I_PROPAGATE does not help resolving the IRQ sharing problem reliably.
See
http://www.xenomai.org/index.php/FAQs#What_can_I_do_if_Xenomai_and_Linux_devices_share_the_same_IRQ.3F
for more information and browse the mailing list archives.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-08-25  7:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-18 22:00 [Xenomai-help] Shared interrupt usage questions Steve Deiters
2009-08-25  7:04 ` Jan Kiszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.