All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Rob Herring <robherring2@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org, b-cousson@ti.com,
	marc.zyngier@arm.com, Rob Herring <rob.herring@calxeda.com>,
	grant.likely@secretlab.ca, thomas.abraham@linaro.org,
	jamie@jamieiles.com, shawn.guo@linaro.org
Subject: Re: [PATCH 4/5] ARM: gic: allow irq_start to be 0
Date: Sun, 18 Sep 2011 13:03:12 +0100	[thread overview]
Message-ID: <20110918120312.GL16381@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1316017900-19918-5-git-send-email-robherring2@gmail.com>

On Wed, Sep 14, 2011 at 11:31:39AM -0500, Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
> 
> There's really no need to set irq_start per platform for the primary gic.
> The SGIs and PPIs are not handled as normal irqs, so how irqs 0-31 are
> setup doesn't really matter. So allow irq_start to be set to 0 to match
> the linux irq numbering.

That's not correct.  The hardware starts numbering SPI IRQs from 32 when
reading the INTACK register.  The number which gets passed through into
asm_do_IRQ() will therefore be from 32 and above.

There's several reasons for this:
1. To avoid IRQ0, which is commonly used to indicate 'no interrupt' to
   drivers.
2. To avoid the ISA IRQ range 1-15 which are hard-coded into various
   drivers (and we want those to fail.)
3. It's wasteful and pointless to manipulate the IRQ number given that we
   have sparse irq support.

Also, bear in mind that gic_irq(SPI0) needs to return 32 to hit the
right registers - so you'd have to set gic->irq_start to -32 to make
SPI0 = IRQ0 work.

Finally, the valid range for irq_start is 16 to 32 + the Linux IRQ base
for the first GIC (SGI) interrupt.  We should probably make gic_init()
BUG() if its passed values less than 16.

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@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 4/5] ARM: gic: allow irq_start to be 0
Date: Sun, 18 Sep 2011 13:03:12 +0100	[thread overview]
Message-ID: <20110918120312.GL16381@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1316017900-19918-5-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

On Wed, Sep 14, 2011 at 11:31:39AM -0500, Rob Herring wrote:
> From: Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> 
> There's really no need to set irq_start per platform for the primary gic.
> The SGIs and PPIs are not handled as normal irqs, so how irqs 0-31 are
> setup doesn't really matter. So allow irq_start to be set to 0 to match
> the linux irq numbering.

That's not correct.  The hardware starts numbering SPI IRQs from 32 when
reading the INTACK register.  The number which gets passed through into
asm_do_IRQ() will therefore be from 32 and above.

There's several reasons for this:
1. To avoid IRQ0, which is commonly used to indicate 'no interrupt' to
   drivers.
2. To avoid the ISA IRQ range 1-15 which are hard-coded into various
   drivers (and we want those to fail.)
3. It's wasteful and pointless to manipulate the IRQ number given that we
   have sparse irq support.

Also, bear in mind that gic_irq(SPI0) needs to return 32 to hit the
right registers - so you'd have to set gic->irq_start to -32 to make
SPI0 = IRQ0 work.

Finally, the valid range for irq_start is 16 to 32 + the Linux IRQ base
for the first GIC (SGI) interrupt.  We should probably make gic_init()
BUG() if its passed values less than 16.

WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/5] ARM: gic: allow irq_start to be 0
Date: Sun, 18 Sep 2011 13:03:12 +0100	[thread overview]
Message-ID: <20110918120312.GL16381@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1316017900-19918-5-git-send-email-robherring2@gmail.com>

On Wed, Sep 14, 2011 at 11:31:39AM -0500, Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
> 
> There's really no need to set irq_start per platform for the primary gic.
> The SGIs and PPIs are not handled as normal irqs, so how irqs 0-31 are
> setup doesn't really matter. So allow irq_start to be set to 0 to match
> the linux irq numbering.

That's not correct.  The hardware starts numbering SPI IRQs from 32 when
reading the INTACK register.  The number which gets passed through into
asm_do_IRQ() will therefore be from 32 and above.

There's several reasons for this:
1. To avoid IRQ0, which is commonly used to indicate 'no interrupt' to
   drivers.
2. To avoid the ISA IRQ range 1-15 which are hard-coded into various
   drivers (and we want those to fail.)
3. It's wasteful and pointless to manipulate the IRQ number given that we
   have sparse irq support.

Also, bear in mind that gic_irq(SPI0) needs to return 32 to hit the
right registers - so you'd have to set gic->irq_start to -32 to make
SPI0 = IRQ0 work.

Finally, the valid range for irq_start is 16 to 32 + the Linux IRQ base
for the first GIC (SGI) interrupt.  We should probably make gic_init()
BUG() if its passed values less than 16.

  parent reply	other threads:[~2011-09-18 12:03 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 [this message]
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
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=20110918120312.GL16381@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=b-cousson@ti.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --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.