Re: [Patch irqdomain: Enhance irq_domain_free_irqs_common() to support parentless irqdomain

Jiang Liu
2014-11-23T13:28:31Z

On 2014/11/23 18:36, Thomas Gleixner wrote:
> On Sun, 23 Nov 2014, Thomas Gleixner wrote:
>
>> On Fri, 21 Nov 2014, Jiang Liu wrote:
>>
>>> Originally irq_domain_free_irqs_common() is designed to be used by
>>> irqdomains with parent. But there are desires to reuse for parentless
>>> irqdomains for code reduction.
>>> So check domain->parent before invoking irq_domain_free_irqs_parent().
>>>
>>> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
>>> ---
>>> Hi Thomas,
>>> This patch applies to tip/irq/irqdomain, it helps to reduce code
>>> size on ARM. Seems we still have chance to merge it into tip/irq/irqdomain:)
>>> Regards!
>>> Gerry
>>> ---
>>> kernel/irq/irqdomain.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
>>> index 029acf11efed..0449d2869e17 100644
>>> --- a/kernel/irq/irqdomain.c
>>> +++ b/kernel/irq/irqdomain.c
>>> @@ -975,7 +975,8 @@ void irq_domain_free_irqs_common(struct irq_domain *domain, unsigned int virq,
>>> if (irq_data)
>>> irq_domain_reset_irq_data(irq_data);
>>> }
>>> - irq_domain_free_irqs_parent(domain, virq, nr_irqs);
>>> + if (domain->parent)
>>> + irq_domain_free_irqs_parent(domain, virq, nr_irqs);
>>
>> irq_domain_free_irqs_parent()
>> {
>> if (domain->parent && domain->parent->ops->free)
>> ...
>> }
>>
>> So the above is redundant and does not change anything.
>
> Except that this function gets replaced later in the series and drops
> the parent check.
>
> Though we should not put the conditionals on the call sites. We want
> the functions handle it.
>
> /me goes fixing.
Thanks, Thomas!

>
> Thanks,
>
> tglx
>