Re: [PATCH] arm/arm64: DT: Fix GICv2 CPU interface size

2014-06-25 Thread Maxime Ripard
On Wed, Jun 25, 2014 at 11:37:54AM +0100, Marc Zyngier wrote:
> All the Cortex-{A7,A15} implementations are using a GICv2. Same for
> the current arm64 platforms.
> 
> Turns out that most of these platforms have described their GIC CPU
> interface size as being 4kB. while it is actually 8kB (the GICC_DIR
> register lives at offset 0x1000).
> 
> This was found when converting the GIC driver to use EOImode==1 on
> GICv2-based systems. It uses the GICC_DIR register, and the result
> is a very early firework...
> 
> Signed-off-by: Marc Zyngier 

Just tested this on an Allwinner A31.

Acked-by: Maxime Ripard 
Tested-by: Maxime Ripard 

Thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


signature.asc
Description: Digital signature


Re: [PATCH] arm/arm64: DT: Fix GICv2 CPU interface size

2014-06-25 Thread Marc Zyngier
On Wed, Jun 25 2014 at 01:21:17 PM, Rob Herring  wrote:
> On Wed, Jun 25, 2014 at 5:37 AM, Marc Zyngier  wrote:
>> All the Cortex-{A7,A15} implementations are using a GICv2. Same for
>> the current arm64 platforms.
>>
>> Turns out that most of these platforms have described their GIC CPU
>> interface size as being 4kB. while it is actually 8kB (the GICC_DIR
>> register lives at offset 0x1000).
>>
>> This was found when converting the GIC driver to use EOImode==1 on
>> GICv2-based systems. It uses the GICC_DIR register, and the result
>> is a very early firework...
>
> What's your plan for making the kernel change? Updating the dts files
> is good, but that doesn't immediately help you if you have old dtbs.

See at the end of https://lkml.org/lkml/2014/6/25/243

Basically, we stay with a GICv1 behaviour if we detect the mess.

>> Signed-off-by: Marc Zyngier 
>> ---
>>  arch/arm/boot/dts/axm55xx.dtsi  | 2 +-
>>  arch/arm/boot/dts/dra7.dtsi | 2 +-
>>  arch/arm/boot/dts/ecx-2000.dts  | 2 +-
>
> Acked-by: Rob Herring 

Thanks,

M.
-- 
Jazz is not dead. It just smells funny.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] arm/arm64: DT: Fix GICv2 CPU interface size

2014-06-25 Thread Rob Herring
On Wed, Jun 25, 2014 at 5:37 AM, Marc Zyngier  wrote:
> All the Cortex-{A7,A15} implementations are using a GICv2. Same for
> the current arm64 platforms.
>
> Turns out that most of these platforms have described their GIC CPU
> interface size as being 4kB. while it is actually 8kB (the GICC_DIR
> register lives at offset 0x1000).
>
> This was found when converting the GIC driver to use EOImode==1 on
> GICv2-based systems. It uses the GICC_DIR register, and the result
> is a very early firework...

What's your plan for making the kernel change? Updating the dts files
is good, but that doesn't immediately help you if you have old dtbs.

> Signed-off-by: Marc Zyngier 
> ---
>  arch/arm/boot/dts/axm55xx.dtsi  | 2 +-
>  arch/arm/boot/dts/dra7.dtsi | 2 +-
>  arch/arm/boot/dts/ecx-2000.dts  | 2 +-

Acked-by: Rob Herring 

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] arm/arm64: DT: Fix GICv2 CPU interface size

2014-06-25 Thread Thierry Reding
On Wed, Jun 25, 2014 at 11:37:54AM +0100, Marc Zyngier wrote:
> All the Cortex-{A7,A15} implementations are using a GICv2. Same for
> the current arm64 platforms.
> 
> Turns out that most of these platforms have described their GIC CPU
> interface size as being 4kB. while it is actually 8kB (the GICC_DIR
> register lives at offset 0x1000).
> 
> This was found when converting the GIC driver to use EOImode==1 on
> GICv2-based systems. It uses the GICC_DIR register, and the result
> is a very early firework...
> 
> Signed-off-by: Marc Zyngier 
> ---
>  arch/arm/boot/dts/axm55xx.dtsi  | 2 +-
>  arch/arm/boot/dts/dra7.dtsi | 2 +-
>  arch/arm/boot/dts/ecx-2000.dts  | 2 +-
>  arch/arm/boot/dts/exynos3250.dtsi   | 2 +-
>  arch/arm/boot/dts/exynos5.dtsi  | 2 +-
>  arch/arm/boot/dts/exynos5260.dtsi   | 2 +-
>  arch/arm/boot/dts/exynos5410.dtsi   | 2 +-
>  arch/arm/boot/dts/exynos5440.dtsi   | 2 +-
>  arch/arm/boot/dts/omap5.dtsi| 2 +-
>  arch/arm/boot/dts/r8a73a4.dtsi  | 2 +-
>  arch/arm/boot/dts/r8a7790.dtsi  | 2 +-
>  arch/arm/boot/dts/r8a7791.dtsi  | 2 +-
>  arch/arm/boot/dts/sun6i-a31.dtsi| 2 +-
>  arch/arm/boot/dts/sun7i-a20.dtsi| 2 +-
>  arch/arm/boot/dts/tegra114.dtsi | 2 +-
>  arch/arm/boot/dts/tegra124.dtsi | 2 +-
>  arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 2 +-
>  arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts  | 2 +-
>  arch/arm64/boot/dts/apm-storm.dtsi  | 2 +-
>  arch/arm64/boot/dts/foundation-v8.dts   | 2 +-
>  arch/arm64/boot/dts/rtsm_ve-aemv8a.dts  | 2 +-
>  21 files changed, 21 insertions(+), 21 deletions(-)

For the Tegra114 and Tegra124 patches:

Tested-by: Thierry Reding 
Acked-by: Thierry Reding 


pgpWE1cQD5evb.pgp
Description: PGP signature


[PATCH] arm/arm64: DT: Fix GICv2 CPU interface size

2014-06-25 Thread Marc Zyngier
All the Cortex-{A7,A15} implementations are using a GICv2. Same for
the current arm64 platforms.

Turns out that most of these platforms have described their GIC CPU
interface size as being 4kB. while it is actually 8kB (the GICC_DIR
register lives at offset 0x1000).

This was found when converting the GIC driver to use EOImode==1 on
GICv2-based systems. It uses the GICC_DIR register, and the result
is a very early firework...

Signed-off-by: Marc Zyngier 
---
 arch/arm/boot/dts/axm55xx.dtsi  | 2 +-
 arch/arm/boot/dts/dra7.dtsi | 2 +-
 arch/arm/boot/dts/ecx-2000.dts  | 2 +-
 arch/arm/boot/dts/exynos3250.dtsi   | 2 +-
 arch/arm/boot/dts/exynos5.dtsi  | 2 +-
 arch/arm/boot/dts/exynos5260.dtsi   | 2 +-
 arch/arm/boot/dts/exynos5410.dtsi   | 2 +-
 arch/arm/boot/dts/exynos5440.dtsi   | 2 +-
 arch/arm/boot/dts/omap5.dtsi| 2 +-
 arch/arm/boot/dts/r8a73a4.dtsi  | 2 +-
 arch/arm/boot/dts/r8a7790.dtsi  | 2 +-
 arch/arm/boot/dts/r8a7791.dtsi  | 2 +-
 arch/arm/boot/dts/sun6i-a31.dtsi| 2 +-
 arch/arm/boot/dts/sun7i-a20.dtsi| 2 +-
 arch/arm/boot/dts/tegra114.dtsi | 2 +-
 arch/arm/boot/dts/tegra124.dtsi | 2 +-
 arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 2 +-
 arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts  | 2 +-
 arch/arm64/boot/dts/apm-storm.dtsi  | 2 +-
 arch/arm64/boot/dts/foundation-v8.dts   | 2 +-
 arch/arm64/boot/dts/rtsm_ve-aemv8a.dts  | 2 +-
 21 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/arch/arm/boot/dts/axm55xx.dtsi b/arch/arm/boot/dts/axm55xx.dtsi
index ea288f0..40aacc9 100644
--- a/arch/arm/boot/dts/axm55xx.dtsi
+++ b/arch/arm/boot/dts/axm55xx.dtsi
@@ -62,7 +62,7 @@
#address-cells = <0>;
interrupt-controller;
reg = <0x20 0x01001000 0 0x1000>,
- <0x20 0x01002000 0 0x1000>,
+ <0x20 0x01002000 0 0x2000>,
  <0x20 0x01004000 0 0x2000>,
  <0x20 0x01006000 0 0x2000>;
interrupts = ;
reg = <0x48211000 0x1000>,
- <0x48212000 0x1000>,
+ <0x48212000 0x2000>,
  <0x48214000 0x2000>,
  <0x48216000 0x2000>;
interrupts = ;
diff --git a/arch/arm/boot/dts/ecx-2000.dts b/arch/arm/boot/dts/ecx-2000.dts
index 2ccbb57f..c15e7e0 100644
--- a/arch/arm/boot/dts/ecx-2000.dts
+++ b/arch/arm/boot/dts/ecx-2000.dts
@@ -99,7 +99,7 @@
interrupt-controller;
interrupts = <1 9 0xf04>;
reg = <0xfff11000 0x1000>,
- <0xfff12000 0x1000>,
+ <0xfff12000 0x2000>,
  <0xfff14000 0x2000>,
  <0xfff16000 0x2000>;
};
diff --git a/arch/arm/boot/dts/exynos3250.dtsi 
b/arch/arm/boot/dts/exynos3250.dtsi
index 3e678fa..bbd177a 100644
--- a/arch/arm/boot/dts/exynos3250.dtsi
+++ b/arch/arm/boot/dts/exynos3250.dtsi
@@ -173,7 +173,7 @@
#interrupt-cells = <3>;
interrupt-controller;
reg = <0x10481000 0x1000>,
- <0x10482000 0x1000>,
+ <0x10482000 0x2000>,
  <0x10484000 0x2000>,
  <0x10486000 0x2000>;
interrupts = <1 9 0xf04>;
diff --git a/arch/arm/boot/dts/exynos5.dtsi b/arch/arm/boot/dts/exynos5.dtsi
index 79d0608..15fdc3b 100644
--- a/arch/arm/boot/dts/exynos5.dtsi
+++ b/arch/arm/boot/dts/exynos5.dtsi
@@ -44,7 +44,7 @@
#interrupt-cells = <3>;
interrupt-controller;
reg =   <0x10481000 0x1000>,
-   <0x10482000 0x1000>,
+   <0x10482000 0x2000>,
<0x10484000 0x2000>,
<0x10486000 0x2000>;
interrupts = <1 9 0xf04>;
diff --git a/arch/arm/boot/dts/exynos5260.dtsi 
b/arch/arm/boot/dts/exynos5260.dtsi
index 5398a60..c0e2341 100644
--- a/arch/arm/boot/dts/exynos5260.dtsi
+++ b/arch/arm/boot/dts/exynos5260.dtsi
@@ -161,7 +161,7 @@
#size-cells = <0>;
interrupt-controller;
reg = <0x10481000 0x1000>,
-   <0x10482000 0x1000>,
+   <0x10482000 0x2000>,
<0x10484000 0x2000>,
<0x10486000 0x2000>;
interrupts = <1 9 0xf04>;
diff --git a/arch/arm/boot/dts/exynos5410.dtsi 
b/arch/arm/boot/dts/exynos5410.dtsi
index 3839c26..aa76aa5 100644
--- a/arch/arm/boot/dts/exynos5410.dtsi
+++ b/arch/arm/boot/dts/exynos5410.dtsi
@@ -76,7 +76,7 @@
#interr