On 04/06/2013 11:43 AM, Jan Kiszka wrote:

> On 2013-04-02 23:44, Gilles Chanteperdrix wrote:
>> On 03/27/2013 02:30 PM, Jan Kiszka wrote:
>>
>>> I'm wondering now why we need this differently for the I-pipe case.
>>>
>>> Let's revisit what happens with a fasteoi normally:
>>>
>>> - it's masked only if it's a oneshot IRQ before calling the flow handler
>>> - it's unmasked after the flow handling if the thread was not woken up
>>>
>>> With I-pipe we already enter handle_fasteoi_irq with the IRQ masked. The
>>> conditions and spots to unmask are:
>>> - from handle_fasteoi_irq if the thread wasn't woken up or we have
>>>   non-threaded or non-oneshot handling
>>> - otherwise on end_irq from the handler thread
>>>
>>> Do you think this is correct? If so, I do not think it matches this
>>> patch yet.
>>
>>
>> Hi,
>>
>> here is a much simpler patch:
>> diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
>> index 11e75d1..a1c9918 100644
>> --- a/kernel/irq/chip.c
>> +++ b/kernel/irq/chip.c
>> @@ -421,6 +421,13 @@ static inline void preflow_handler(struct irq_desc 
>> *desc)
>>  static inline void preflow_handler(struct irq_desc *desc) { }
>>  #endif
>>  
>> +static void cond_release_fasteoi_irq(struct irq_desc *desc)
>> +{
>> +    if (desc->irq_data.chip->irq_release && 
>> +        !irqd_irq_disabled(&desc->irq_data) && !desc->threads_oneshot)
>> +            desc->irq_data.chip->irq_release(&desc->irq_data);
>> +}
>> +
>>  /**
>>   *  handle_fasteoi_irq - irq handler for transparent controllers
>>   *  @irq:   the interrupt number
>> @@ -463,8 +470,7 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc 
>> *desc)
>>  
>>  #ifdef CONFIG_IPIPE
>>      /* XXX: IRQCHIP_EOI_IF_HANDLED is ignored. */
> 
> Makes me wonder what this comment wants to tell us. That there is an
> unhandled corner case or that this is intentionally ignored? I support
> the latter as I-pipe already does EOI when accepting the IRQ, no? Maybe
> you can clarify that line at this chance.


I have no idea where this comment come from. I do not think this flag
can be handled with the I-pipe kernel, as the EOI is sent before trying
to handle the IRQ. The only users are in arch/sparc and arch/powerpc,
maybe Philippe knows more?

-- 
                                                                Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to