From mboxrd@z Thu Jan 1 00:00:00 1970 From: robherring2@gmail.com (Rob Herring) Date: Wed, 14 Dec 2011 17:29:06 -0600 Subject: [PATCH 3/9] irq: convert generic-chip to use irq_domain In-Reply-To: References: <1323876538-20406-1-git-send-email-robherring2@gmail.com> <1323876538-20406-4-git-send-email-robherring2@gmail.com> <4EE913C7.1060901@gmail.com> Message-ID: <4EE93142.9060904@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 12/14/2011 03:26 PM, Grant Likely wrote: > On Wed, Dec 14, 2011 at 2:23 PM, Rob Herring wrote: >> >> >> On 12/14/2011 03:14 PM, Grant Likely wrote: >>> On Wed, Dec 14, 2011 at 8:28 AM, Rob Herring wrote: >>>> From: Rob Herring >>>> >>>> Add irq domain support to irq generic-chip. This enables users of >>>> generic-chip to support dynamic irq assignment needed for DT interrupt >>>> binding. Users must be converted to use irq_data.hwirq for determining >>>> local interrupt numbers rather than using the Linux irq number. >>>> >>>> irq_base is kept for now as there are a few users of it. Once they >>>> are converted to use the irq domain, it can be removed. >>>> >>>> Signed-off-by: Rob Herring >>>> Cc: Thomas Gleixner >>>> --- >>>> include/linux/irq.h | 2 +- >>>> kernel/irq/Kconfig | 1 + >>>> kernel/irq/generic-chip.c | 57 ++++++++++++++++++++++++++++---------------- >>>> 3 files changed, 38 insertions(+), 22 deletions(-) >>>> >>>> diff --git a/include/linux/irq.h b/include/linux/irq.h >>>> index bff29c5..9ba8a30 100644 >>>> --- a/include/linux/irq.h >>>> +++ b/include/linux/irq.h >>>> @@ -664,7 +664,7 @@ struct irq_chip_generic { >>>> raw_spinlock_t lock; >>>> void __iomem *reg_base; >>>> unsigned int irq_base; >>>> - unsigned int irq_cnt; >>>> + struct irq_domain *domain; >>> >>> Instead of making domain a pointer, why not embed the structure inside >>> irq_chip_generic? I don't see a reason for keeping it separate. >>> >> >> There is a circular header dependency between irq.h and irq_domain.h. >> Maybe I just need to put the include of irq_domain.h just above here >> rather than the top of the file. > > Yes, try that. I'd rather get the dependency problem sorted out. > Alternately, problematic bit of irq_domain.h can be moved to another > header. > Things always start out so simple... Removing irq.h from irqdomain.h fixes my original problem. However, that breaks on x86 since x86 has it's own struct irq_domain. Some ifdef'ing could fix it since x86 doesn't use irq_chip_generic. Didn't you have converting x86 in your original irq domain patches? Rob From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH 3/9] irq: convert generic-chip to use irq_domain Date: Wed, 14 Dec 2011 17:29:06 -0600 Message-ID: <4EE93142.9060904@gmail.com> References: <1323876538-20406-1-git-send-email-robherring2@gmail.com> <1323876538-20406-4-git-send-email-robherring2@gmail.com> <4EE913C7.1060901@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Grant Likely Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree-discuss@lists.ozlabs.org, shawn.guo@freescale.com, Kukjin Kim , Kevin Hilman , Tony Lindgren , Barry Song , Linus Walleij , Thomas Gleixner List-Id: devicetree@vger.kernel.org On 12/14/2011 03:26 PM, Grant Likely wrote: > On Wed, Dec 14, 2011 at 2:23 PM, Rob Herring wrote: >> >> >> On 12/14/2011 03:14 PM, Grant Likely wrote: >>> On Wed, Dec 14, 2011 at 8:28 AM, Rob Herring wrote: >>>> From: Rob Herring >>>> >>>> Add irq domain support to irq generic-chip. This enables users of >>>> generic-chip to support dynamic irq assignment needed for DT interrupt >>>> binding. Users must be converted to use irq_data.hwirq for determining >>>> local interrupt numbers rather than using the Linux irq number. >>>> >>>> irq_base is kept for now as there are a few users of it. Once they >>>> are converted to use the irq domain, it can be removed. >>>> >>>> Signed-off-by: Rob Herring >>>> Cc: Thomas Gleixner >>>> --- >>>> include/linux/irq.h | 2 +- >>>> kernel/irq/Kconfig | 1 + >>>> kernel/irq/generic-chip.c | 57 ++++++++++++++++++++++++++++---------------- >>>> 3 files changed, 38 insertions(+), 22 deletions(-) >>>> >>>> diff --git a/include/linux/irq.h b/include/linux/irq.h >>>> index bff29c5..9ba8a30 100644 >>>> --- a/include/linux/irq.h >>>> +++ b/include/linux/irq.h >>>> @@ -664,7 +664,7 @@ struct irq_chip_generic { >>>> raw_spinlock_t lock; >>>> void __iomem *reg_base; >>>> unsigned int irq_base; >>>> - unsigned int irq_cnt; >>>> + struct irq_domain *domain; >>> >>> Instead of making domain a pointer, why not embed the structure inside >>> irq_chip_generic? I don't see a reason for keeping it separate. >>> >> >> There is a circular header dependency between irq.h and irq_domain.h. >> Maybe I just need to put the include of irq_domain.h just above here >> rather than the top of the file. > > Yes, try that. I'd rather get the dependency problem sorted out. > Alternately, problematic bit of irq_domain.h can be moved to another > header. > Things always start out so simple... Removing irq.h from irqdomain.h fixes my original problem. However, that breaks on x86 since x86 has it's own struct irq_domain. Some ifdef'ing could fix it since x86 doesn't use irq_chip_generic. Didn't you have converting x86 in your original irq domain patches? Rob