Re: [PATCH v5 2/9] drivers: irqchip: Add STM32 external interrupts support

From: Alexandre Torgue
Date: Tue Sep 20 2016 - 11:29:40 EST


On 09/20/2016 04:02 PM, Thomas Gleixner wrote:
On Tue, 20 Sep 2016, Alexandre Torgue wrote:
On 09/20/2016 02:44 PM, Thomas Gleixner wrote:
Free will be called when a interrupt in the child domain is torn down,
i.e. when irq_domain_free_irqs() is called. And it will be called for both
domains like the alloc callback is invoked on both domains via

Thanks Thomas for this clarification (I'm sure now that we need .free
irq_domain_free_irqs() is called in 2 scenario:
1- when issue occurs in irq_create_fwspec_mapping()
2- when irq_dispose_mapping() is called

Case 2 is the one I tested some times ago. In this case, I need to mask
interrupts in .free callback of EXTI (parent) domain to avoid spurious

And why would irq_dispose_mapping() be called on an unmasked, i.e. active,
interrupt? The masking is just papering over that.

Ok. So my test was wrong and irq_dispose_mapping() has to be called when irq is masked (for example just after free_irq()). For sure in this case the mask inside exti free callback has no sens (catch :))

I will change .free callback by:

static void stm32_exti_free(struct irq_domain *d, unsigned int virq,
unsigned int nr_irqs)
struct irq_data *data = irq_domain_get_irq_data(d, virq);

so if you agree I will resend only patches concerning stm32 exti driver [1],[2],[3],[4]

Thanks for your time.