All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Thomas Abraham <thomas.abraham@linaro.org>
Cc: Rob Herring <robherring2@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org, marc.zyngier@arm.com,
	jamie@jamieiles.com, b-cousson@ti.com, shawn.guo@linaro.org,
	Rob Herring <rob.herring@calxeda.com>
Subject: Re: [PATCH 5/5] ARM: gic: add OF based initialization
Date: Sun, 18 Sep 2011 00:10:24 -0600	[thread overview]
Message-ID: <20110918061024.GD3523@ponder.secretlab.ca> (raw)
In-Reply-To: <CAJuYYwQ=tSh8k5ZOi2kx6KbMsQ4eVAvgE=T4kdckRSLjdj3dMQ@mail.gmail.com>

On Fri, Sep 16, 2011 at 03:04:11PM +0530, Thomas Abraham wrote:
> Hi Rob,
> 
> On 15 September 2011 18:24, Rob Herring <robherring2@gmail.com> wrote:
> > On 09/15/2011 02:55 AM, Thomas Abraham wrote:
> >>> +void __init gic_of_init(struct device_node *node, struct device_node *parent)
> >>> +{
> >>> +       void __iomem *cpu_base;
> >>> +       void __iomem *dist_base;
> >>> +       int irq;
> >>> +       struct irq_domain *domain = &gic_data[gic_cnt].domain;
> >>> +
> >>> +       if (WARN_ON(!node))
> >>> +               return;
> >>> +
> >>> +       dist_base = of_iomap(node, 0);
> >>> +       WARN(!dist_base, "unable to map gic dist registers\n");
> >>> +
> >>> +       cpu_base = of_iomap(node, 1);
> >>> +       WARN(!cpu_base, "unable to map gic cpu registers\n");
> >>> +
> >>> +       domain->nr_irq = gic_irq_count(dist_base);
> >>> +       domain->irq_base = irq_alloc_descs(-1, 0, domain->nr_irq, numa_node_id());
> >>
> >> For exynos4, all the interrupts originating from GIC are statically
> >> mapped to start from 32 in the linux virq space (GIC SPI interrupts
> >> start from 64). In the above code, since irq_base would be 0 for
> >> exynos4, the interrupt mapping is not working correctly. In your
> >> previous version of the patch, you have given a option to the platform
> >> code to choose the offset. Could that option be added to this series
> >> also. Or a provision to use platform specific translate function
> >> instead of the irq_domain_simple translator.
> >>
> >
> > So I guess you have the A9 external nIRQ hooked up to another
> > controller? Why can't the 0-31 interrupts get mapped to after the gic
> > interrupts? Ultimately we want h/w irq numbers completely decoupled from
> > linux irq numbers. So you will want to put that controller in devicetree
> > and have an DT init function for it as well.
> 
> There are chained interrupt handlers mapped in between linux irq
> number 0 to 31. So the offset for GIC interrupts was set to 32 (SGI[0]
> = 32). The interrupt chaining for the interrupts mapped between 0 to
> 31 seems unnecessary though. I will try removing them and check.

Please note; when using the DT, the linux virq number should be
dynamically assigned and therefore will not matter.  Historically
Exynos may have started from irq 32, but it doesn't really have any
relevance when all IRQ references are via DT irq specifiers.

Plus, for dynamically allocated irq_descs, I really want to make sure
that irq 0 never gets assigned.  We're not supposed to be using it,
and that becomes an easy rule to enforce when interrupt numbers are no
longer assigned with #defines.

g.

WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Thomas Abraham <thomas.abraham-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 5/5] ARM: gic: add OF based initialization
Date: Sun, 18 Sep 2011 00:10:24 -0600	[thread overview]
Message-ID: <20110918061024.GD3523@ponder.secretlab.ca> (raw)
In-Reply-To: <CAJuYYwQ=tSh8k5ZOi2kx6KbMsQ4eVAvgE=T4kdckRSLjdj3dMQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Fri, Sep 16, 2011 at 03:04:11PM +0530, Thomas Abraham wrote:
> Hi Rob,
> 
> On 15 September 2011 18:24, Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > On 09/15/2011 02:55 AM, Thomas Abraham wrote:
> >>> +void __init gic_of_init(struct device_node *node, struct device_node *parent)
> >>> +{
> >>> +       void __iomem *cpu_base;
> >>> +       void __iomem *dist_base;
> >>> +       int irq;
> >>> +       struct irq_domain *domain = &gic_data[gic_cnt].domain;
> >>> +
> >>> +       if (WARN_ON(!node))
> >>> +               return;
> >>> +
> >>> +       dist_base = of_iomap(node, 0);
> >>> +       WARN(!dist_base, "unable to map gic dist registers\n");
> >>> +
> >>> +       cpu_base = of_iomap(node, 1);
> >>> +       WARN(!cpu_base, "unable to map gic cpu registers\n");
> >>> +
> >>> +       domain->nr_irq = gic_irq_count(dist_base);
> >>> +       domain->irq_base = irq_alloc_descs(-1, 0, domain->nr_irq, numa_node_id());
> >>
> >> For exynos4, all the interrupts originating from GIC are statically
> >> mapped to start from 32 in the linux virq space (GIC SPI interrupts
> >> start from 64). In the above code, since irq_base would be 0 for
> >> exynos4, the interrupt mapping is not working correctly. In your
> >> previous version of the patch, you have given a option to the platform
> >> code to choose the offset. Could that option be added to this series
> >> also. Or a provision to use platform specific translate function
> >> instead of the irq_domain_simple translator.
> >>
> >
> > So I guess you have the A9 external nIRQ hooked up to another
> > controller? Why can't the 0-31 interrupts get mapped to after the gic
> > interrupts? Ultimately we want h/w irq numbers completely decoupled from
> > linux irq numbers. So you will want to put that controller in devicetree
> > and have an DT init function for it as well.
> 
> There are chained interrupt handlers mapped in between linux irq
> number 0 to 31. So the offset for GIC interrupts was set to 32 (SGI[0]
> = 32). The interrupt chaining for the interrupts mapped between 0 to
> 31 seems unnecessary though. I will try removing them and check.

Please note; when using the DT, the linux virq number should be
dynamically assigned and therefore will not matter.  Historically
Exynos may have started from irq 32, but it doesn't really have any
relevance when all IRQ references are via DT irq specifiers.

Plus, for dynamically allocated irq_descs, I really want to make sure
that irq 0 never gets assigned.  We're not supposed to be using it,
and that becomes an easy rule to enforce when interrupt numbers are no
longer assigned with #defines.

g.

WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/5] ARM: gic: add OF based initialization
Date: Sun, 18 Sep 2011 00:10:24 -0600	[thread overview]
Message-ID: <20110918061024.GD3523@ponder.secretlab.ca> (raw)
In-Reply-To: <CAJuYYwQ=tSh8k5ZOi2kx6KbMsQ4eVAvgE=T4kdckRSLjdj3dMQ@mail.gmail.com>

On Fri, Sep 16, 2011 at 03:04:11PM +0530, Thomas Abraham wrote:
> Hi Rob,
> 
> On 15 September 2011 18:24, Rob Herring <robherring2@gmail.com> wrote:
> > On 09/15/2011 02:55 AM, Thomas Abraham wrote:
> >>> +void __init gic_of_init(struct device_node *node, struct device_node *parent)
> >>> +{
> >>> + ? ? ? void __iomem *cpu_base;
> >>> + ? ? ? void __iomem *dist_base;
> >>> + ? ? ? int irq;
> >>> + ? ? ? struct irq_domain *domain = &gic_data[gic_cnt].domain;
> >>> +
> >>> + ? ? ? if (WARN_ON(!node))
> >>> + ? ? ? ? ? ? ? return;
> >>> +
> >>> + ? ? ? dist_base = of_iomap(node, 0);
> >>> + ? ? ? WARN(!dist_base, "unable to map gic dist registers\n");
> >>> +
> >>> + ? ? ? cpu_base = of_iomap(node, 1);
> >>> + ? ? ? WARN(!cpu_base, "unable to map gic cpu registers\n");
> >>> +
> >>> + ? ? ? domain->nr_irq = gic_irq_count(dist_base);
> >>> + ? ? ? domain->irq_base = irq_alloc_descs(-1, 0, domain->nr_irq, numa_node_id());
> >>
> >> For exynos4, all the interrupts originating from GIC are statically
> >> mapped to start from 32 in the linux virq space (GIC SPI interrupts
> >> start from 64). In the above code, since irq_base would be 0 for
> >> exynos4, the interrupt mapping is not working correctly. In your
> >> previous version of the patch, you have given a option to the platform
> >> code to choose the offset. Could that option be added to this series
> >> also. Or a provision to use platform specific translate function
> >> instead of the irq_domain_simple translator.
> >>
> >
> > So I guess you have the A9 external nIRQ hooked up to another
> > controller? Why can't the 0-31 interrupts get mapped to after the gic
> > interrupts? Ultimately we want h/w irq numbers completely decoupled from
> > linux irq numbers. So you will want to put that controller in devicetree
> > and have an DT init function for it as well.
> 
> There are chained interrupt handlers mapped in between linux irq
> number 0 to 31. So the offset for GIC interrupts was set to 32 (SGI[0]
> = 32). The interrupt chaining for the interrupts mapped between 0 to
> 31 seems unnecessary though. I will try removing them and check.

Please note; when using the DT, the linux virq number should be
dynamically assigned and therefore will not matter.  Historically
Exynos may have started from irq 32, but it doesn't really have any
relevance when all IRQ references are via DT irq specifiers.

Plus, for dynamically allocated irq_descs, I really want to make sure
that irq 0 never gets assigned.  We're not supposed to be using it,
and that becomes an easy rule to enforce when interrupt numbers are no
longer assigned with #defines.

g.

  reply	other threads:[~2011-09-18  6:31 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-14 16:31 [PATCH 0/5] GIC OF bindings Rob Herring
2011-09-14 16:31 ` Rob Herring
2011-09-14 16:31 ` Rob Herring
2011-09-14 16:31 ` [PATCH 1/5] irq: add declaration of irq_domain_simple_ops to irqdomain.h Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 16:31 ` [PATCH 2/5] irq: fix existing domain check in irq_domain_add Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 16:44   ` Thomas Gleixner
2011-09-14 16:44     ` Thomas Gleixner
2011-09-14 16:44     ` Thomas Gleixner
2011-09-17 23:24     ` Grant Likely
2011-09-17 23:24       ` Grant Likely
2011-09-17 23:24       ` Grant Likely
2011-09-14 16:31 ` [PATCH 3/5] of/irq: introduce of_irq_init Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-15 10:41   ` Arnd Bergmann
2011-09-15 10:41     ` Arnd Bergmann
2011-09-15 10:41     ` Arnd Bergmann
2011-09-17 23:53   ` Grant Likely
2011-09-17 23:53     ` Grant Likely
2011-09-17 23:53     ` Grant Likely
2011-09-18  1:37     ` Rob Herring
2011-09-18  1:37       ` Rob Herring
2011-09-18  1:37       ` Rob Herring
2011-09-18  6:02       ` Grant Likely
2011-09-18  6:02         ` Grant Likely
2011-09-18  6:02         ` Grant Likely
2011-09-14 16:31 ` [PATCH 4/5] ARM: gic: allow irq_start to be 0 Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-18  6:24   ` Grant Likely
2011-09-18  6:24     ` Grant Likely
2011-09-18  6:24     ` Grant Likely
2011-09-18 12:03   ` Russell King - ARM Linux
2011-09-18 12:03     ` Russell King - ARM Linux
2011-09-18 12:03     ` Russell King - ARM Linux
2011-09-14 16:31 ` [PATCH 5/5] ARM: gic: add OF based initialization Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 16:31   ` Rob Herring
2011-09-14 17:46   ` Marc Zyngier
2011-09-14 17:46     ` Marc Zyngier
2011-09-14 17:46     ` Marc Zyngier
2011-09-14 17:57     ` Rob Herring
2011-09-14 17:57       ` Rob Herring
2011-09-14 17:57       ` Rob Herring
2011-09-14 18:34       ` Marc Zyngier
2011-09-14 18:34         ` Marc Zyngier
2011-09-14 18:34         ` Marc Zyngier
2011-09-14 18:51         ` Rob Herring
2011-09-14 18:51           ` Rob Herring
2011-09-14 18:51           ` Rob Herring
2011-09-18  0:13           ` Grant Likely
2011-09-18  0:13             ` Grant Likely
2011-09-18  0:13             ` Grant Likely
2011-09-15  7:55   ` Thomas Abraham
2011-09-15  7:55     ` Thomas Abraham
2011-09-15 10:07     ` Cousson, Benoit
2011-09-15 10:07       ` Cousson, Benoit
2011-09-15 10:07       ` Cousson, Benoit
2011-09-15 10:29       ` Russell King - ARM Linux
2011-09-15 10:29         ` Russell King - ARM Linux
2011-09-15 10:29         ` Russell King - ARM Linux
2011-09-15 12:28         ` Cousson, Benoit
2011-09-15 12:28           ` Cousson, Benoit
2011-09-15 12:28           ` Cousson, Benoit
2011-09-15 12:51           ` Russell King - ARM Linux
2011-09-15 12:51             ` Russell King - ARM Linux
2011-09-15 12:51             ` Russell King - ARM Linux
2011-09-15 13:03             ` Cousson, Benoit
2011-09-15 13:03               ` Cousson, Benoit
2011-09-15 13:03               ` Cousson, Benoit
2011-09-15 13:11       ` Rob Herring
2011-09-15 13:11         ` Rob Herring
2011-09-15 13:11         ` Rob Herring
2011-09-15 13:52         ` Cousson, Benoit
2011-09-15 13:52           ` Cousson, Benoit
2011-09-15 13:52           ` Cousson, Benoit
2011-09-15 16:43           ` Rob Herring
2011-09-15 16:43             ` Rob Herring
2011-09-15 16:43             ` Rob Herring
2011-09-18 21:23             ` Rob Herring
2011-09-18 21:23               ` Rob Herring
2011-09-18 21:23               ` Rob Herring
2011-09-19 12:09               ` Cousson, Benoit
2011-09-19 12:09                 ` Cousson, Benoit
2011-09-19 12:09                 ` Cousson, Benoit
2011-09-19 13:48                 ` Rob Herring
2011-09-19 13:48                   ` Rob Herring
2011-09-19 13:48                   ` Rob Herring
2011-09-19 14:32                   ` Cousson, Benoit
2011-09-19 14:32                     ` Cousson, Benoit
2011-09-19 14:32                     ` Cousson, Benoit
2011-09-19 21:14                   ` Grant Likely
2011-09-19 21:14                     ` Grant Likely
2011-09-19 21:14                     ` Grant Likely
2011-09-19 21:53                     ` Rob Herring
2011-09-19 21:53                       ` Rob Herring
2011-09-19 21:53                       ` Rob Herring
2011-09-20  0:22                       ` Grant Likely
2011-09-20  0:22                         ` Grant Likely
2011-09-20  0:22                         ` Grant Likely
2011-09-20  4:18                       ` Grant Likely
2011-09-20  4:18                         ` Grant Likely
2011-09-20  4:18                         ` Grant Likely
2011-09-20 15:23                       ` Cousson, Benoit
2011-09-20 15:23                         ` Cousson, Benoit
2011-09-20 15:23                         ` Cousson, Benoit
2011-09-19 16:00                 ` Russell King - ARM Linux
2011-09-19 16:00                   ` Russell King - ARM Linux
2011-09-19 16:00                   ` Russell King - ARM Linux
2011-09-19 20:49               ` Grant Likely
2011-09-19 20:49                 ` Grant Likely
2011-09-19 20:49                 ` Grant Likely
2011-09-19  9:47             ` Cousson, Benoit
2011-09-19  9:47               ` Cousson, Benoit
2011-09-19  9:47               ` Cousson, Benoit
2011-09-19 13:33               ` Russell King - ARM Linux
2011-09-19 13:33                 ` Russell King - ARM Linux
2011-09-19 13:33                 ` Russell King - ARM Linux
2011-09-19 17:44                 ` Grant Likely
2011-09-19 17:44                   ` Grant Likely
2011-09-19 17:44                   ` Grant Likely
2011-09-16 16:09       ` Dave Martin
2011-09-16 16:09         ` Dave Martin
2011-09-16 16:09         ` Dave Martin
2011-09-18  6:21         ` Grant Likely
2011-09-18  6:21           ` Grant Likely
2011-09-18  6:21           ` Grant Likely
2011-09-19 12:07           ` Dave Martin
2011-09-19 12:07             ` Dave Martin
2011-09-19 12:07             ` Dave Martin
2011-09-19 13:08             ` Cousson, Benoit
2011-09-19 13:08               ` Cousson, Benoit
2011-09-19 13:08               ` Cousson, Benoit
2011-09-18  6:15       ` Grant Likely
2011-09-18  6:15         ` Grant Likely
2011-09-18  6:15         ` Grant Likely
2011-09-19  8:47         ` Cousson, Benoit
2011-09-19  8:47           ` Cousson, Benoit
2011-09-19  8:47           ` Cousson, Benoit
2011-09-15 12:54     ` Rob Herring
2011-09-15 12:54       ` Rob Herring
2011-09-15 12:54       ` Rob Herring
2011-09-16  9:34       ` Thomas Abraham
2011-09-16  9:34         ` Thomas Abraham
2011-09-16  9:34         ` Thomas Abraham
2011-09-18  6:10         ` Grant Likely [this message]
2011-09-18  6:10           ` Grant Likely
2011-09-18  6:10           ` Grant Likely
2011-09-19 12:59           ` Thomas Abraham
2011-09-19 12:59             ` Thomas Abraham
2011-09-19 12:59             ` Thomas Abraham
2011-09-15 10:43   ` Arnd Bergmann
2011-09-15 10:43     ` Arnd Bergmann
2011-09-15 10:43     ` Arnd Bergmann
2011-09-18  6:30   ` Grant Likely
2011-09-18  6:30     ` Grant Likely
2011-09-18  6:30     ` Grant Likely
2011-09-15  8:50 ` [PATCH 0/5] GIC OF bindings Jamie Iles
2011-09-15  8:50   ` Jamie Iles
2011-09-15 13:53 ` Shawn Guo
2011-09-15 13:53   ` Shawn Guo
2011-09-15 13:53   ` Shawn Guo

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=20110918061024.GD3523@ponder.secretlab.ca \
    --to=grant.likely@secretlab.ca \
    --cc=b-cousson@ti.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=jamie@jamieiles.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=rob.herring@calxeda.com \
    --cc=robherring2@gmail.com \
    --cc=shawn.guo@linaro.org \
    --cc=thomas.abraham@linaro.org \
    /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.