Hello Mohan,

I've taken a summary look at the code and I think the following is
the problem:

mohan kumar wrote:
> ...
>     case 0:
>             adeos_control_irq(INT_NUM,0,IPIPE_PASS_MASK);
>             break;
> ...

I don't think that adeos_control_irq() will work like this alone.
Have a look at arch/i386/ipipe.c:ipipe_handle_irq(). Notice that
the setting of interrupt flags for the various domains is done
prior to any domain handler being called. By disabling the passing
of the interrupts in domain_entry() as you do, all subsequent
interrupts are not passed on. What you actually do with
adeos_control_irq() in the interrupt handler only influences the
next round of interrupts. Given the code in the interrupt handler,
however, I think that you should be making the following call if
you want the interrupts to propagate the next time they occur:
adeos_control_irq(INT_NUM,IPIPE_PASS_MASK,1);

If you disabled the interrupt passing and would still want to
propagate the IRQ down the ipipe, then have a look at the latest
code in the CVS by Philippe. Particularily, try using
adeos_propagate_irq() in your handler.

Cheers,

Karim

===================================================
                 Karim Yaghmour
               [EMAIL PROTECTED]
      Embedded and Real-Time Linux Expert
===================================================

Reply via email to