linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] ARM: gic: add OF based initialization
Date: Tue, 14 Jun 2011 07:56:28 -0600	[thread overview]
Message-ID: <BANLkTi=eYVftJLyckv5Jpz-Qq1KpPc7AgQ@mail.gmail.com> (raw)
In-Reply-To: <20110613221447.GI13643@n2100.arm.linux.org.uk>

On Mon, Jun 13, 2011 at 4:14 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Mon, Jun 13, 2011 at 10:53:16AM -0600, Grant Likely wrote:
>> On Tue, Jun 07, 2011 at 09:22:20AM -0500, Rob Herring wrote:
>> > +- interrupt-controller : Identifies the node as an interrupt controller
>> > +- #interrupt-cells : Specifies the number of cells needed to encode an
>> > + ?interrupt source. ?The type shall be a <u32> and the value shall be 1.
>> > +- reg : Specifies base physical address(s) and size of the GIC registers. The
>> > + ?first 2 values are the GIC distributor register base and size. The 2nd 2
>> > + ?values are the GIC cpu interface register base and size.
>> > +- irq-start : The first actual interrupt that is connected to h/w.
>>
>> Drop irq-start. ?That's a Linux internal implementation detail, and
>> Linux can easily handle dynamic assignment of irq ranges.
>
> Something has to be done with the IRQs on GIC, because Linux probably
> won't have a 1:1 mapping between the hardware IRQ numbers and the Linux
> IRQ numbers
>
> Have you seen the patches from Marc which deal with the per-CPU
> interrupts by creating individual Linux IRQ numbers for each CPU for
> each per-CPU interrupt? ?So you can end up with 16 per-CPU x 4 CPUs =
> 64 Linux interrupts for 16 "hardware" interrupts.
>
> How would DT deal with that - and how would you specify a connection
> between a per-CPU PMU and one of the per-CPU interrupts?

In general, bindings focus on the hardware and hardware configuration
instead of what Linux needs internally.  For a lot of interrupt
controllers, an irq specifier consists of two u32 values.  The first
value being the hardware irq number (perhaps 0-15 in this case), and
the second value being a set of flags.

Without looking deeply and the GIC interface details, I suspect that
the CPU affinity would best be represented as a field in the flags
value.

The per-CPU PMU connections then wouldn't be any different from any
other irq in that the irq specifier would include a CPU affinity
value.

>
> The sensible thing from a DT point of view I think would be to ignore
> that abstraction, and have some kind of mapping layer between DT and
> drivers which knew about that.

Yup, and that is exactly what is done.  On powerpc it uses the virtual
irq infrastructure.  For ARM and everyone else, there are patches on
list for irq_domain which implements the required behaviour.  The
interrupt controller driver can make decisions about how to map the
hardware irq to a linux irq number.  For most irq controllers, it will
be a simple 1:1 mapping, but for something complex like the gic, it
can do something different if need be.

> ?But that sounds like a world of pain.

Actually, it turns out not to be.  We've been needing/wanting some
form of irq_domains anyway for a while now to better manage hwirq ->
linuxirq mappings.  Adding DT to the mix means also suppling a DT
decode function to get the hwirq number from the interrupt specifier.

I'll be reposting a bunch of patches in the next few days that fills
in most of the missing pieces for irq mapping.

g.

  reply	other threads:[~2011-06-14 13:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-07 14:22 [PATCH v2 0/3] DT bindings for Cortex A9 peripherals Rob Herring
2011-06-07 14:22 ` [PATCH 1/3] ARM: pmu: add OF probing support Rob Herring
2011-06-08 15:54   ` Mark Rutland
2011-06-08 16:40     ` Rob Herring
2011-06-13  9:35       ` [PATCH 0/4] ARM: pmu: improve PMU type identification Mark Rutland
2011-06-13  9:35       ` [PATCH 1/4] ARM: pmu: refactor reservation Mark Rutland
2011-06-13  9:35       ` [PATCH 2/4] ARM: pmu: reject duplicate PMU registrations Mark Rutland
2011-06-13  9:35       ` [PATCH 3/4] ARM: pmu: add OF probing support Mark Rutland
2011-06-13 13:40         ` Rob Herring
2011-06-13 13:48           ` Mark Rutland
2011-06-13 13:55             ` Rob Herring
2011-06-13  9:35       ` [PATCH 4/4] ARM: pmu: add platform_device_id table support Mark Rutland
2011-06-13 12:33         ` Sergei Shtylyov
2011-06-13 12:41           ` Mark Rutland
2011-06-13 14:29         ` Jamie Iles
2011-06-13 16:44       ` [PATCH 1/3] ARM: pmu: add OF probing support Grant Likely
2011-06-07 14:22 ` [PATCH 2/3] ARM: gic: add OF based initialization Rob Herring
2011-06-13 16:53   ` Grant Likely
2011-06-13 21:39     ` Rob Herring
2011-06-13 22:14     ` Russell King - ARM Linux
2011-06-14 13:56       ` Grant Likely [this message]
2011-06-07 14:22 ` [PATCH 3/3] ARM: l2x0: Add " Rob Herring
2011-06-07 16:20   ` Olof Johansson
2011-06-07 16:54     ` Rob Herring
2011-06-07 18:49       ` Olof Johansson
  -- strict thread matches above, loose matches on Subject: below --
2011-06-01 16:37 [PATCH 0/3] DT bindings Cortex A9 peripherals Rob Herring
2011-06-01 16:37 ` [PATCH 2/3] ARM: gic: add OF based initialization Rob Herring

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='BANLkTi=eYVftJLyckv5Jpz-Qq1KpPc7AgQ@mail.gmail.com' \
    --to=grant.likely@secretlab.ca \
    --cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).