All of lore.kernel.org
 help / color / mirror / Atom feed
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3.17-rc4 v7 4/6] irqchip: gic: Add support for IPI FIQ
Date: Thu, 18 Sep 2014 22:46:22 +0100	[thread overview]
Message-ID: <867g10vbyp.fsf@arm.com> (raw)
In-Reply-To: <20140917185138.GX12361@n2100.arm.linux.org.uk> (Russell King's message of "Wed, 17 Sep 2014 19:51:38 +0100")

On Wed, Sep 17 2014 at 07:51:38 PM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:

Hi Russell,

> On Wed, Sep 17, 2014 at 09:10:16AM -0700, Daniel Thompson wrote:
>> This patch provides support for arm's newly added IPI FIQ. It works
>> by placing all interrupt sources *except* IPI FIQ in group 1 and
>> then flips a configuration bit in the GIC such that group 1
>> interrupts use IRQ and group 0 interrupts use FIQ.
>>
>> All GIC hardware except GICv1-without-TrustZone support provides a means
>> to group exceptions into group 0 and group 1. However the hardware
>> functionality is unavailable to the kernel when a secure monitor is
>> present because access to the grouping registers are prohibited outside
>> "secure world" (a feature that allows grouping to be used to allow
>> hardware peripherals to send interrupts into the secure world). However
>> when grouping is not available we can rely on the GIC's RAZ/WI semantics
>> and avoid conditional code.
>
> I've been chasing a bug with this on the Versatile Express CT9x4.  It
> seems that the GIC there is a GICv1, with secure extensions.  It seems
> to support interrupt grouping.
>
> However, setting SPIs to group 1, with the control registers enabling
> both group 0 and group 1 (such that both groups are treated as IRQs)
> results in no SPIs being delivered to the kernel.  In other words,
> setting GIC_DIST_IGROUP for SPIs, and setting both GIC_CPU_CTRL and
> GIC_DIST_CTRL to 3.
>
> This is rather worrying, because we seem to have a GIC which for all
> intents and purposes appears to be compatible with what we want to do,
> appears to conform with the GIC architecture specifications, but doesn't
> actually work.
>
> I suspect that running the Versatile Express CT9x4 in non-secure mode
> wouldn't work (because in non-secure mode, the GIC only allows access
> to group 1 interrupts.)
>
> I've added Will and Mark to this to see whether they have any comment.

I'm rather far away from my VE-A9 board (and won't be to get back to it
for another two weeks), so this is all a shot in the dark...

Can you have a look at the GICC_AIAR register (located at GICC_IAR +
0x14)? It *shouldn't* exist on this HW, assuming this is a real
GICv1. But what you describe makes me think of something like this.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny.

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Daniel Thompson <daniel.thompson@linaro.org>,
	Will Deacon <Will.Deacon@arm.com>,
	"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel\@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"patches\@linaro.org" <patches@linaro.org>,
	"linaro-kernel\@lists.linaro.org"
	<linaro-kernel@lists.linaro.org>,
	John Stultz <john.stultz@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Jason Cooper <jason@lakedaemon.net>
Subject: Re: [PATCH 3.17-rc4 v7 4/6] irqchip: gic: Add support for IPI FIQ
Date: Thu, 18 Sep 2014 22:46:22 +0100	[thread overview]
Message-ID: <867g10vbyp.fsf@arm.com> (raw)
In-Reply-To: <20140917185138.GX12361@n2100.arm.linux.org.uk> (Russell King's message of "Wed, 17 Sep 2014 19:51:38 +0100")

On Wed, Sep 17 2014 at 07:51:38 PM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:

Hi Russell,

> On Wed, Sep 17, 2014 at 09:10:16AM -0700, Daniel Thompson wrote:
>> This patch provides support for arm's newly added IPI FIQ. It works
>> by placing all interrupt sources *except* IPI FIQ in group 1 and
>> then flips a configuration bit in the GIC such that group 1
>> interrupts use IRQ and group 0 interrupts use FIQ.
>>
>> All GIC hardware except GICv1-without-TrustZone support provides a means
>> to group exceptions into group 0 and group 1. However the hardware
>> functionality is unavailable to the kernel when a secure monitor is
>> present because access to the grouping registers are prohibited outside
>> "secure world" (a feature that allows grouping to be used to allow
>> hardware peripherals to send interrupts into the secure world). However
>> when grouping is not available we can rely on the GIC's RAZ/WI semantics
>> and avoid conditional code.
>
> I've been chasing a bug with this on the Versatile Express CT9x4.  It
> seems that the GIC there is a GICv1, with secure extensions.  It seems
> to support interrupt grouping.
>
> However, setting SPIs to group 1, with the control registers enabling
> both group 0 and group 1 (such that both groups are treated as IRQs)
> results in no SPIs being delivered to the kernel.  In other words,
> setting GIC_DIST_IGROUP for SPIs, and setting both GIC_CPU_CTRL and
> GIC_DIST_CTRL to 3.
>
> This is rather worrying, because we seem to have a GIC which for all
> intents and purposes appears to be compatible with what we want to do,
> appears to conform with the GIC architecture specifications, but doesn't
> actually work.
>
> I suspect that running the Versatile Express CT9x4 in non-secure mode
> wouldn't work (because in non-secure mode, the GIC only allows access
> to group 1 interrupts.)
>
> I've added Will and Mark to this to see whether they have any comment.

I'm rather far away from my VE-A9 board (and won't be to get back to it
for another two weeks), so this is all a shot in the dark...

Can you have a look at the GICC_AIAR register (located at GICC_IAR +
0x14)? It *shouldn't* exist on this HW, assuming this is a real
GICv1. But what you describe makes me think of something like this.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny.

  parent reply	other threads:[~2014-09-18 21:46 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-17 16:10 [PATCH 3.17-rc4 v7 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Thompson
2014-09-17 16:10 ` Daniel Thompson
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 1/6] ARM: remove unused do_unexp_fiq() function Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 2/6] arm: fiq: Replace default FIQ handler Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 3/6] arm64: Introduce dummy version of asm/fiq.h Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-09-22  9:16   ` Catalin Marinas
2014-09-22  9:16     ` Catalin Marinas
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 4/6] irqchip: gic: Add support for IPI FIQ Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-09-17 18:51   ` Russell King - ARM Linux
2014-09-17 18:51     ` Russell King - ARM Linux
2014-09-17 20:12     ` Daniel Thompson
2014-09-17 20:12       ` Daniel Thompson
2014-09-17 21:07       ` Russell King - ARM Linux
2014-09-17 21:07         ` Russell King - ARM Linux
2014-09-18  7:48         ` Russell King - ARM Linux
2014-09-18  7:48           ` Russell King - ARM Linux
2014-09-18 21:46     ` Marc Zyngier [this message]
2014-09-18 21:46       ` Marc Zyngier
2014-09-18  8:17   ` Russell King - ARM Linux
2014-09-18  8:17     ` Russell King - ARM Linux
2014-09-18 21:20     ` Daniel Thompson
2014-09-18 21:20       ` Daniel Thompson
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 5/6] ARM: add basic support for on-demand backtrace of other CPUs Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-09-17 16:10 ` [PATCH 3.17-rc4 v7 6/6] arm: smp: Handle ipi_cpu_backtrace() using FIQ (if available) Daniel Thompson
2014-09-17 16:10   ` Daniel Thompson
2014-10-14 22:37 ` [PATCH 3.17-rc4 v7 0/6] arm: Implement arch_trigger_all_cpu_backtrace Daniel Drake
2014-10-14 22:37   ` Daniel Drake
2014-10-14 23:31   ` Russell King - ARM Linux
2014-10-14 23:31     ` Russell King - ARM Linux
2014-10-16  9:33     ` Daniel Thompson
2014-10-16  9:33       ` Daniel Thompson
2014-11-04 17:05       ` Daniel Thompson
2014-11-04 17:05         ` Daniel Thompson
2014-11-04 17:19         ` Russell King - ARM Linux
2014-11-04 17:19           ` Russell King - ARM Linux
2014-10-16  9:23   ` Daniel Thompson
2014-10-16  9:23     ` Daniel Thompson
2014-10-16 12:23     ` Russell King - ARM Linux
2014-10-16 12:23       ` Russell King - ARM Linux
2014-10-16 13:15       ` Daniel Thompson
2014-10-16 13:15         ` Daniel Thompson

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=867g10vbyp.fsf@arm.com \
    --to=marc.zyngier@arm.com \
    --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 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.