From: Rob Herring <robherring2@gmail.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: sfr@canb.auug.org.au, Russell King <linux@arm.linux.org.uk>,
linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [RFC 12/14] irq_domain: Add support for base irq and hwirq in legacy mappings
Date: Thu, 12 Jan 2012 18:37:25 -0600 [thread overview]
Message-ID: <4F0F7CC5.5080900@gmail.com> (raw)
In-Reply-To: <1326313337-24603-13-git-send-email-grant.likely@secretlab.ca>
On 01/11/2012 02:22 PM, Grant Likely wrote:
> Add support for a legacy mapping where irq = (hwirq - first_hwirq + first_irq)
> so that a controller driver can allocate a fixed range of irq_descs and use
> a simple calculation to translate back and forth between linux and hw irq
> numbers. This is needed to use an irq_domain with many of the ARM interrupt
> controller drivers that manage their own irq_desc allocations. Ultimately
> the goal is to migrate those drivers to use the linear revmap, but doing it
> this way allows each driver to be converted separately which makes the
> migration path easier.
>
> This patch generalizes the IRQ_DOMAIN_MAP_LEGACY method to use
> (first_irq-first_hwirq) as the offset between hwirq and linux irq number,
> and adds checks to make sure that the hwirq number does not exceed range
> assigned to the controller.
>
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
> arch/powerpc/include/asm/irq.h | 3 -
> arch/powerpc/sysdev/i8259.c | 2 +-
> arch/powerpc/sysdev/tsi108_pci.c | 2 +-
> include/linux/irqdomain.h | 20 +++++++++-
> kernel/irq/irqdomain.c | 78 +++++++++++++++++++++++++-------------
> 5 files changed, 73 insertions(+), 32 deletions(-)
>
snip...
> @@ -454,8 +477,11 @@ unsigned int irq_find_mapping(struct irq_domain *domain,
> return 0;
>
> /* legacy -> bail early */
> - if (domain->revmap_type == IRQ_DOMAIN_MAP_LEGACY)
> - return hwirq;
> + if (domain->revmap_type == IRQ_DOMAIN_MAP_LEGACY) {
> + if (hwirq > domain->revmap_data.legacy.size)
> + return 0;
> + return domain->revmap_data.legacy.first_irq + hwirq;
This needs a "- domain->revmap_data.legacy.first_hwirq"
Rob
> + }
>
> /* Slow path does a linear search of the map */
> if (hint < NUM_ISA_INTERRUPTS)
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robherring2@gmail.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linux-kernel@vger.kernel.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Thomas Gleixner <tglx@linutronix.de>,
linuxppc-dev@lists.ozlabs.org,
Russell King <linux@arm.linux.org.uk>,
sfr@canb.auug.org.au
Subject: Re: [RFC 12/14] irq_domain: Add support for base irq and hwirq in legacy mappings
Date: Thu, 12 Jan 2012 18:37:25 -0600 [thread overview]
Message-ID: <4F0F7CC5.5080900@gmail.com> (raw)
In-Reply-To: <1326313337-24603-13-git-send-email-grant.likely@secretlab.ca>
On 01/11/2012 02:22 PM, Grant Likely wrote:
> Add support for a legacy mapping where irq = (hwirq - first_hwirq + first_irq)
> so that a controller driver can allocate a fixed range of irq_descs and use
> a simple calculation to translate back and forth between linux and hw irq
> numbers. This is needed to use an irq_domain with many of the ARM interrupt
> controller drivers that manage their own irq_desc allocations. Ultimately
> the goal is to migrate those drivers to use the linear revmap, but doing it
> this way allows each driver to be converted separately which makes the
> migration path easier.
>
> This patch generalizes the IRQ_DOMAIN_MAP_LEGACY method to use
> (first_irq-first_hwirq) as the offset between hwirq and linux irq number,
> and adds checks to make sure that the hwirq number does not exceed range
> assigned to the controller.
>
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---
> arch/powerpc/include/asm/irq.h | 3 -
> arch/powerpc/sysdev/i8259.c | 2 +-
> arch/powerpc/sysdev/tsi108_pci.c | 2 +-
> include/linux/irqdomain.h | 20 +++++++++-
> kernel/irq/irqdomain.c | 78 +++++++++++++++++++++++++-------------
> 5 files changed, 73 insertions(+), 32 deletions(-)
>
snip...
> @@ -454,8 +477,11 @@ unsigned int irq_find_mapping(struct irq_domain *domain,
> return 0;
>
> /* legacy -> bail early */
> - if (domain->revmap_type == IRQ_DOMAIN_MAP_LEGACY)
> - return hwirq;
> + if (domain->revmap_type == IRQ_DOMAIN_MAP_LEGACY) {
> + if (hwirq > domain->revmap_data.legacy.size)
> + return 0;
> + return domain->revmap_data.legacy.first_irq + hwirq;
This needs a "- domain->revmap_data.legacy.first_hwirq"
Rob
> + }
>
> /* Slow path does a linear search of the map */
> if (hint < NUM_ISA_INTERRUPTS)
next prev parent reply other threads:[~2012-01-13 0:37 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-11 20:22 [RFC 0/14] Finish up irq_domain generalization Grant Likely
2012-01-11 20:22 ` [RFC 01/14] dt: Make irqdomain less verbose Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 02/14] irq_domain: Make irq_domain structure match powerpc's irq_host Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 03/14] irq_domain: convert microblaze from irq_host to irq_domain Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 04/14] irq_domain/powerpc: Use common irq_domain structure instead of irq_host Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 05/14] irq_domain/powerpc: eliminate irq_map; use irq_alloc_desc() instead Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 06/14] irq_domain/powerpc: Eliminate virq_is_host() Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-12 10:17 ` Milton Miller
2012-01-18 0:38 ` Grant Likely
2012-01-18 0:38 ` Grant Likely
2012-01-18 21:25 ` Grant Likely
2012-01-11 20:22 ` [RFC 07/14] irq_domain: Move irq_domain code from powerpc to kernel/irq Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 08/14] irqdomain: remove NO_IRQ from irq domain code Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 09/14] irq_domain: Remove references to old irq_host names Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 10/14] irq_domain: Replace irq_alloc_host() with revmap-specific initializers Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 20:22 ` [RFC 11/14] powerpc: Eliminate NO_IRQ usage Grant Likely
2012-01-11 20:22 ` Grant Likely
2013-07-25 21:58 ` Geert Uytterhoeven
2013-07-25 21:58 ` Geert Uytterhoeven
2013-07-26 3:56 ` Grant Likely
2013-07-26 3:56 ` Grant Likely
2013-08-23 13:18 ` Geert Uytterhoeven
2013-08-23 13:18 ` Geert Uytterhoeven
2013-08-23 13:22 ` Geert Uytterhoeven
2013-08-23 13:22 ` Geert Uytterhoeven
2012-01-11 20:22 ` [RFC 12/14] irq_domain: Add support for base irq and hwirq in legacy mappings Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-13 0:37 ` Rob Herring [this message]
2012-01-13 0:37 ` Rob Herring
2012-01-13 0:53 ` Grant Likely
2012-01-13 0:53 ` Grant Likely
2012-01-11 20:22 ` [RFC 13/14] irq_domain: Remove 'new' irq_domain in favour of the ppc one Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 21:15 ` Rob Herring
2012-01-11 21:15 ` Rob Herring
2012-01-11 21:27 ` Grant Likely
2012-01-11 21:27 ` Grant Likely
2012-01-13 0:31 ` Rob Herring
2012-01-13 0:31 ` Rob Herring
2012-01-13 0:31 ` Rob Herring
2012-01-13 0:47 ` Grant Likely
2012-01-13 0:47 ` Grant Likely
2012-01-13 0:47 ` Grant Likely
2012-01-13 0:53 ` Rob Herring
2012-01-13 0:53 ` Rob Herring
2012-01-13 0:53 ` Rob Herring
2012-01-13 2:20 ` Grant Likely
2012-01-13 2:20 ` Grant Likely
2012-01-13 2:20 ` Grant Likely
2012-01-17 2:43 ` Michael Bohan
2012-01-17 2:43 ` Michael Bohan
2012-01-17 2:43 ` Michael Bohan
2012-01-17 2:43 ` Michael Bohan
2012-01-17 3:42 ` Benjamin Herrenschmidt
2012-01-17 3:42 ` Benjamin Herrenschmidt
2012-01-17 3:42 ` Benjamin Herrenschmidt
2012-01-18 0:28 ` Grant Likely
2012-01-18 0:28 ` Grant Likely
2012-01-18 0:28 ` Grant Likely
2012-01-18 2:16 ` Benjamin Herrenschmidt
2012-01-18 2:16 ` Benjamin Herrenschmidt
2012-01-18 2:16 ` Benjamin Herrenschmidt
2012-01-18 6:50 ` Grant Likely
2012-01-18 6:50 ` Grant Likely
2012-01-11 20:22 ` [RFC 14/14] irq_domain: Remove irq_domain_add_simple() Grant Likely
2012-01-11 20:22 ` Grant Likely
2012-01-11 21:39 ` [RFC 0/14] Finish up irq_domain generalization Randy Dunlap
2012-01-11 21:39 ` Randy Dunlap
2012-01-11 20:50 ` Grant Likely
2012-01-11 20:50 ` Grant Likely
2012-01-11 21:23 ` Grant Likely
2012-01-11 21:23 ` Grant Likely
2012-01-11 22:48 ` Randy Dunlap
2012-01-11 22:48 ` Randy Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F0F7CC5.5080900@gmail.com \
--to=robherring2@gmail.com \
--cc=grant.likely@secretlab.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=sfr@canb.auug.org.au \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.