From: Sander Vanheule <sander@svanheule.net>
To: Marc Zyngier <maz@kernel.org>, Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org,
Bartosz Golaszewski <brgl@bgdev.pl>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Bert Vermeulen <bert@biot.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 3/6] gpio: realtek-otto: Support per-cpu interrupts
Date: Fri, 22 Apr 2022 22:40:39 +0200 [thread overview]
Message-ID: <9ceab104f5189664648c219fb9d1e0d70d6bda9f.camel@svanheule.net> (raw)
In-Reply-To: <b8b62753ad5235e065b4cb0856a7a7c33438dfbb.camel@svanheule.net>
On Fri, 2022-04-22 at 09:04 +0200, Sander Vanheule wrote:
> Hi Linus, Marc,
>
> On Thu, 2022-04-21 at 10:48 +0100, Marc Zyngier wrote:
> > On Thu, 21 Apr 2022 00:04:16 +0100,
> > Linus Walleij <linus.walleij@linaro.org> wrote:
> > >
> > > On Sat, Apr 9, 2022 at 9:56 PM Sander Vanheule <sander@svanheule.net> wrote:
> > >
> > > > On SoCs with multiple cores, it is possible that the GPIO interrupt
> > > > controller supports assigning specific pins to one or more cores.
> > > >
> > > > IRQ balancing can be performed on a line-by-line basis if the parent
> > > > interrupt is routed to all available cores, which is the default upon
> > > > initialisation.
> > > >
> > > > Signed-off-by: Sander Vanheule <sander@svanheule.net>
> > >
> > > That sounds complicated.
> > >
> > > Sounds like something the IRQ maintainer (Marc Z) should
> > > have a quick look at.
> >
> > This is pretty odd indeed. There seem to be a direct mapping between
> > the GPIOs and the CPU it interrupts (or at least that's what the code
> > seem to express). However, I don't see a direct relation between the
> > CPUs and the chained interrupt. It isn't even clear if this interrupt
> > itself is per-CPU.
> >
> > So this begs a few questions:
> >
> > - is the affinity actually affecting the target CPU? or is it
> > affecting the target mux?
> >
> > - how is the affinity of the mux interrupt actually enforced?
>
> There are three interrupt controllers at play here:
> 1. MIPS CPU interrupt controller: drivers/irqchip/irq-mips-cpu.c
> One interrupt controller per VPE, so in this case there are two. Provides
> per-CPU interrupts.
> 2. SoC interrupt controller: drivers/irqchip/irq-realtek-rtl.c
> Also one interrupt controller per VPE. I suppose these will also be per-
> CPU, although this isn't implemented in the driver yet, and I don't think
> I yet fully understand how should work in the kernel.
> 3. GPIO interrupt controller: drivers/gpio/gpio-realtek-otto.c
> One interrupt controller for the entire GPIO bank, with optional
> configurable affinity (this patch) for the different VPEs.
>
> For the RTL839x series of SoCs, this results in the following:
Sorry for the messed up formattng, let me try that again.
GPIO LINES SOC IRQ MIPS
+--------+ LINE +-----------+ HW IRQ +--------+
--->| GPIO | | SOC IRQ | LINES | IRQ |
--->| BANK |-----o-->| VPE0 CTRL |=========>| VPE0 |
. | | | +-----------+ +--------+
. +--------+ |
. |
| +-----------+ +--------+
\-->| SOC IRQ | | IRQ |
| VPE1 CTRL |=========>| VPE1 |
+-----------+ +--------+
> For RTL930x, where GPIO IRQ affinity is configurable:
GPIO LINES SOC IRQ MIPS
+--------+ LINE +-----------+ HW IRQ +--------+
--->| GPIO |-------->| SOC IRQ | LINES | IRQ |
--->| BANK | | VPE0 CTRL |=========>| VPE0 |
. | |-----\ +-----------+ +--------+
. +--------+ |
. |
| +-----------+ +--------+
\-->| SOC IRQ | | IRQ |
| VPE1 CTRL |=========>| VPE1 |
+-----------+ +--------+
> The interrupt for the GPIO controller can be muxed to any of the MIPS HW
> interrupts on any (or all) of the VPEs, and these muxes (SoC IRQ controllers)
> can be configured independently per CPU. The SoC IRQ line index is fixed, and
> consistent for both VPEs.
> Only in the second diagram can individual GPIO interrupts be muxed to any of the
> VPEs, but there is still only one IRQ line per VPE for all selected GPIO lines.
>
> I hopes this helps to clarify the situation. We don't have any real
> documentation, so this is basically derived from registers descriptions in SDK
> headers and testing the interrupt behaviour.
>
> Best,
> Sander
next prev parent reply other threads:[~2022-04-22 21:55 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-09 19:55 [PATCH v1 0/6] Support for RTL930x/RTL931x GPIOs Sander Vanheule
2022-04-09 19:55 ` [PATCH v1 1/6] dt-bindings: gpio: realtek-otto: Add rtl9300 compatible Sander Vanheule
2022-04-10 14:16 ` Krzysztof Kozlowski
2022-04-10 14:34 ` Sander Vanheule
2022-04-09 19:55 ` [PATCH v1 2/6] gpio: realtek-otto: Support reversed port layouts Sander Vanheule
2022-04-20 23:01 ` Linus Walleij
2022-04-21 7:55 ` Sander Vanheule
2022-04-22 21:14 ` Linus Walleij
2022-04-09 19:55 ` [PATCH v1 3/6] gpio: realtek-otto: Support per-cpu interrupts Sander Vanheule
2022-04-20 23:04 ` Linus Walleij
2022-04-21 9:48 ` Marc Zyngier
2022-04-22 7:04 ` Sander Vanheule
2022-04-22 20:40 ` Sander Vanheule [this message]
2022-04-09 19:55 ` [PATCH v1 4/6] gpio: realtek-otto: Add RTL930x support Sander Vanheule
2022-04-09 19:55 ` [PATCH v1 5/6] dt-bindings: gpio: realtek-otto: Add rtl9310 compatible Sander Vanheule
2022-04-10 14:16 ` Krzysztof Kozlowski
2022-04-09 19:55 ` [PATCH v1 6/6] gpio: realtek-otto: Add RTL931x support Sander Vanheule
2022-04-11 12:31 ` [PATCH v1 0/6] Support for RTL930x/RTL931x GPIOs Bartosz Golaszewski
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=9ceab104f5189664648c219fb9d1e0d70d6bda9f.camel@svanheule.net \
--to=sander@svanheule.net \
--cc=bert@biot.com \
--cc=brgl@bgdev.pl \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=robh+dt@kernel.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
all inboxes | Powered by JetHome®