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 <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> I have often regretted my speech, never my silence.
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> --
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to