From: Tomasz Figa <t.figa@samsung.com>
To: Rob Herring <robherring2@gmail.com>
Cc: "linux-samsung-soc@vger.kernel.org"
<linux-samsung-soc@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Kukjin Kim <kgene.kim@samsung.com>,
Thomas Gleixner <tglx@linutronix.de>,
Marc Zyngier <marc.zyngier@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Tomasz Figa <tomasz.figa@gmail.com>
Subject: Re: [PATCH 3/4] irqchip: gic: Add support for per CPU bank offset specification in DT
Date: Thu, 08 May 2014 19:09:19 +0200 [thread overview]
Message-ID: <536BBA3F.4020908@samsung.com> (raw)
In-Reply-To: <CAL_Jsq+wCDWnZ-wemMPc1tvpnK3kd=bx5fkT5GAP_QyLPjQfJQ@mail.gmail.com>
On 08.05.2014 19:04, Rob Herring wrote:
> On Fri, Apr 18, 2014 at 9:43 AM, Tomasz Figa <t.figa@samsung.com> wrote:
>> On most platforms GIC registers are banked, so each CPU can access its
>> registers at the same address. However there is a small number of SoCs
>> on which the banking is not implemented and each CPU has its GIC
>> register set at different offset from GIC base address.
>>
>> Originally the driver used simple maths to calculate the address, i.e.
>> multiplying constant percpu_offset by cpu_logical_map(cpu). However this
>> assumed the namespace of cpu_logical_map() to be from 0 to num_cpus-1,
>> but if CPU topology is specified via DT, this changes to full ID in
>> the same format as MPIDR register and thus breaks the assumption.
>>
>> This patch adds support for per CPU GIC bank offset specification
>> through device tree to separate SoC-internal core wiring from CPU
>> multi-processor IDs.
>>
>> Signed-off-by: Tomasz Figa <t.figa@samsung.com>
>> ---
>> Documentation/devicetree/bindings/arm/cpus.txt | 7 ++
>> Documentation/devicetree/bindings/arm/gic.txt | 34 +++++++++-
>> drivers/irqchip/irq-gic.c | 94 ++++++++++++++++++--------
>> 3 files changed, 105 insertions(+), 30 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
>> index 333f4ae..47654e6 100644
>> --- a/Documentation/devicetree/bindings/arm/cpus.txt
>> +++ b/Documentation/devicetree/bindings/arm/cpus.txt
>> @@ -209,6 +209,13 @@ nodes to be present and contain the properties described below.
>> Value type: <phandle>
>> Definition: Specifies the ACC[2] node associated with this CPU.
>>
>> + - gic-offset
>> + Usage: required for systems that have non-banked GIC
>> + implementation that requires each CPU to use different
>> + offset to access its set of GIC registers
>> + Value type: <u32>
>> + Definition: Specifies the offset of GIC registers specific to
>> + this CPU.
>
> What if you have 1 distributor address and a per cpu address which is
> allowed in the gicv2 spec IIRC.
Hmm, I need to take a look at GIC v2 spec... but I think my proposed
binding would still cover this, as the implementation (if modified to
support this) would simply ignore the offset for distributor in this case.
>
> I think I would rather see this stay contained within the gic node and
> use reg property.
How do we match reg entries with CPUs then? The first idea that comes to
my mind would be adding arm,cpu-map property that would list MPIDR
values of CPUs in the same order as register banks are listed in reg
property but I'm not sure this is a good idea.
Best regards,
Tomasz
WARNING: multiple messages have this Message-ID (diff)
From: t.figa@samsung.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] irqchip: gic: Add support for per CPU bank offset specification in DT
Date: Thu, 08 May 2014 19:09:19 +0200 [thread overview]
Message-ID: <536BBA3F.4020908@samsung.com> (raw)
In-Reply-To: <CAL_Jsq+wCDWnZ-wemMPc1tvpnK3kd=bx5fkT5GAP_QyLPjQfJQ@mail.gmail.com>
On 08.05.2014 19:04, Rob Herring wrote:
> On Fri, Apr 18, 2014 at 9:43 AM, Tomasz Figa <t.figa@samsung.com> wrote:
>> On most platforms GIC registers are banked, so each CPU can access its
>> registers at the same address. However there is a small number of SoCs
>> on which the banking is not implemented and each CPU has its GIC
>> register set at different offset from GIC base address.
>>
>> Originally the driver used simple maths to calculate the address, i.e.
>> multiplying constant percpu_offset by cpu_logical_map(cpu). However this
>> assumed the namespace of cpu_logical_map() to be from 0 to num_cpus-1,
>> but if CPU topology is specified via DT, this changes to full ID in
>> the same format as MPIDR register and thus breaks the assumption.
>>
>> This patch adds support for per CPU GIC bank offset specification
>> through device tree to separate SoC-internal core wiring from CPU
>> multi-processor IDs.
>>
>> Signed-off-by: Tomasz Figa <t.figa@samsung.com>
>> ---
>> Documentation/devicetree/bindings/arm/cpus.txt | 7 ++
>> Documentation/devicetree/bindings/arm/gic.txt | 34 +++++++++-
>> drivers/irqchip/irq-gic.c | 94 ++++++++++++++++++--------
>> 3 files changed, 105 insertions(+), 30 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt
>> index 333f4ae..47654e6 100644
>> --- a/Documentation/devicetree/bindings/arm/cpus.txt
>> +++ b/Documentation/devicetree/bindings/arm/cpus.txt
>> @@ -209,6 +209,13 @@ nodes to be present and contain the properties described below.
>> Value type: <phandle>
>> Definition: Specifies the ACC[2] node associated with this CPU.
>>
>> + - gic-offset
>> + Usage: required for systems that have non-banked GIC
>> + implementation that requires each CPU to use different
>> + offset to access its set of GIC registers
>> + Value type: <u32>
>> + Definition: Specifies the offset of GIC registers specific to
>> + this CPU.
>
> What if you have 1 distributor address and a per cpu address which is
> allowed in the gicv2 spec IIRC.
Hmm, I need to take a look at GIC v2 spec... but I think my proposed
binding would still cover this, as the implementation (if modified to
support this) would simply ignore the offset for distributor in this case.
>
> I think I would rather see this stay contained within the gic node and
> use reg property.
How do we match reg entries with CPUs then? The first idea that comes to
my mind would be adding arm,cpu-map property that would list MPIDR
values of CPUs in the same order as register banks are listed in reg
property but I'm not sure this is a good idea.
Best regards,
Tomasz
next prev parent reply other threads:[~2014-05-08 17:09 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-18 14:42 [PATCH 0/4] Fixes for DT CPU topology specification on Exynos Tomasz Figa
2014-04-18 14:42 ` Tomasz Figa
2014-04-18 14:42 ` [PATCH 1/4] ARM: EXYNOS: Fix definitions of S5P_ARM_CORE_* registers Tomasz Figa
2014-04-18 14:42 ` Tomasz Figa
2014-04-19 7:47 ` Chanwoo Choi
2014-04-19 7:47 ` Chanwoo Choi
2014-04-19 8:42 ` Tomasz Figa
2014-04-19 8:42 ` Tomasz Figa
2014-04-18 14:42 ` [PATCH 2/4] ARM: EXYNOS: Fix core ID used by platsmp and hotplug code Tomasz Figa
2014-04-18 14:42 ` Tomasz Figa
2014-04-20 7:23 ` Chander Kashyap
2014-04-20 7:23 ` Chander Kashyap
2014-04-25 22:47 ` Tomasz Figa
2014-04-25 22:47 ` Tomasz Figa
2014-04-26 10:48 ` Chander Kashyap
2014-04-18 14:43 ` [PATCH 3/4] irqchip: gic: Add support for per CPU bank offset specification in DT Tomasz Figa
2014-04-18 14:43 ` Tomasz Figa
2014-05-08 17:04 ` Rob Herring
2014-05-08 17:04 ` Rob Herring
2014-05-08 17:09 ` Tomasz Figa [this message]
2014-05-08 17:09 ` Tomasz Figa
2014-05-08 18:04 ` Rob Herring
2014-05-08 18:04 ` Rob Herring
2014-05-15 20:12 ` Tomasz Figa
2014-05-15 20:12 ` Tomasz Figa
2014-04-18 14:43 ` [PATCH 4/4] ARM: dts: exynos4: Add CPU topology data Tomasz Figa
2014-04-18 14:43 ` Tomasz Figa
2014-05-08 15:24 ` [PATCH 0/4] Fixes for DT CPU topology specification on Exynos Tomasz Figa
2014-05-08 15:24 ` Tomasz Figa
2014-05-15 20:15 ` Tomasz Figa
2014-05-15 20:15 ` Tomasz Figa
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=536BBA3F.4020908@samsung.com \
--to=t.figa@samsung.com \
--cc=arnd@arndb.de \
--cc=devicetree@vger.kernel.org \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=robherring2@gmail.com \
--cc=tglx@linutronix.de \
--cc=tomasz.figa@gmail.com \
/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.