[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [rtl] RT-Linux interrupts.
This is the standard problem of shared interrupts. A shared
interrupt with some RT and some non-RT is rather peculiar
and if it is done at all, it must be specially handled by the RT
handler. In RTLinux this is simple: the RT handler catches all
interrupts and determines whether an RT device has asserted the
interrupt. If not, the RThandler can assert a soft interrupt for
Linux - that is the nonRT driver must be completely virtualized.
A more sloppy approach is certainly possible.
On Thu, Nov 08, 2001 at 12:52:44PM +0100, Wolfgang Denk wrote:
> In message <200111080749.fA87nBw03498@hofr.at> <der.herr@hofr.at> wrote:
> >
> > I guess the problem ist that SCCx + SMCx are all one interrupt to the core
> > comming from the CPM, so you can't catch the SCC1 interrupt but you must
> > catch the CPM interrupt and in case it is the SCC1 handle it if not pass
> > it on to Linux for handling. If you catch the CPM interrupt with an rt-handler
> > then you will have to take care of checking the devices on the CPM so I
> > don't think this can be done without changing the CPM related code.
>
> It's even worse if you have to serve "RT" and "normal" interrupts on
> CPM devices. The current implementation for a CPM interrupt works
> something like that:
>
> 1. get, ack and disable SIU IRQ
> 2. call CPM handler
> 3. get, ack and disable CPM Source
> 4. call handler for CPM Source
> 5. re-enable CPM Source
> 6. re-enable SIU IRQ
>
> In a RT environment you don't want to wait until Linux re-enables the
> SIU interrupts (6) [because all CPM interrupts are blocked until
> then], but on the other hand you can re-enable an interrupt only
> after it has been served.
>
>
> We changed the interrupt handling to allow for RT interrupts from CPM
> devices under RTAI; the proposal was posted to the PPC Embedded
> mailing list. However, for the known reasons we did this for RTAI
> only.
> (see http://lists.linuxppc.org/linuxppc-embedded/200110/msg00305.html)
>
> Wolfgang Denk
>
> --
> Software Engineering: Embedded and Realtime Systems, Embedded Linux
> Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de
> I have often regretted my speech, never my silence.
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail majordomo@rtlinux.org OR
> echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.org
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/