devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: rockchip: Describe PX30 caches
@ 2019-12-04 10:39 Miquel Raynal
  2019-12-04 15:36 ` Peter Geis
  2019-12-20  0:55 ` Heiko Stübner
  0 siblings, 2 replies; 7+ messages in thread
From: Miquel Raynal @ 2019-12-04 10:39 UTC (permalink / raw)
  To: Heiko Stuebner, linux-rockchip, Rob Herring, Mark Rutland, devicetree
  Cc: Paul Kocialkowski, Maxime Chevallier, Thomas Petazzoni, Miquel Raynal

PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
Cortex-A35 manual), D-cache is 4-way set associative (ARM
Cortex-A35manual).

An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
is 8-way set associative (ARM Cortex-A35 manual).

Describe all of them in the PX30 DTSI.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
index 1fd12bd09e83..0e10a224a84b 100644
--- a/arch/arm64/boot/dts/rockchip/px30.dtsi
+++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
@@ -48,6 +48,13 @@
 			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
 			dynamic-power-coefficient = <90>;
 			operating-points-v2 = <&cpu0_opp_table>;
+			i-cache-size = <0x8000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>;
+			d-cache-size = <0x8000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <128>;
+			next-level-cache = <&l2>;
 		};
 
 		cpu1: cpu@1 {
@@ -60,6 +67,13 @@
 			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
 			dynamic-power-coefficient = <90>;
 			operating-points-v2 = <&cpu0_opp_table>;
+			i-cache-size = <0x8000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>;
+			d-cache-size = <0x8000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <128>;
+			next-level-cache = <&l2>;
 		};
 
 		cpu2: cpu@2 {
@@ -72,6 +86,13 @@
 			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
 			dynamic-power-coefficient = <90>;
 			operating-points-v2 = <&cpu0_opp_table>;
+			i-cache-size = <0x8000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>;
+			d-cache-size = <0x8000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <128>;
+			next-level-cache = <&l2>;
 		};
 
 		cpu3: cpu@3 {
@@ -84,6 +105,13 @@
 			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
 			dynamic-power-coefficient = <90>;
 			operating-points-v2 = <&cpu0_opp_table>;
+			i-cache-size = <0x8000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>;
+			d-cache-size = <0x8000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <128>;
+			next-level-cache = <&l2>;
 		};
 
 		idle-states {
@@ -107,6 +135,13 @@
 				min-residency-us = <2000>;
 			};
 		};
+
+		l2: l2-cache {
+			compatible = "cache";
+			cache-size = <0x40000>;
+			cache-line-size = <64>;
+			cache-sets = <512>;
+		};
 	};
 
 	cpu0_opp_table: cpu0-opp-table {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-04 10:39 [PATCH] arm64: dts: rockchip: Describe PX30 caches Miquel Raynal
@ 2019-12-04 15:36 ` Peter Geis
  2019-12-04 15:44   ` Miquel Raynal
  2019-12-20  0:55 ` Heiko Stübner
  1 sibling, 1 reply; 7+ messages in thread
From: Peter Geis @ 2019-12-04 15:36 UTC (permalink / raw)
  To: Miquel Raynal
  Cc: Heiko Stuebner, open list:ARM/Rockchip SoC...,
	Rob Herring, Mark Rutland, devicetree, Paul Kocialkowski,
	Thomas Petazzoni, Maxime Chevallier

On Wed, Dec 4, 2019 at 5:40 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> Cortex-A35 manual), D-cache is 4-way set associative (ARM
> Cortex-A35manual).
>
> An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> is 8-way set associative (ARM Cortex-A35 manual).
>
> Describe all of them in the PX30 DTSI.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
>  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> index 1fd12bd09e83..0e10a224a84b 100644
> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> @@ -48,6 +48,13 @@
>                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>                         dynamic-power-coefficient = <90>;
>                         operating-points-v2 = <&cpu0_opp_table>;
> +                       i-cache-size = <0x8000>;
> +                       i-cache-line-size = <64>;
> +                       i-cache-sets = <256>;
> +                       d-cache-size = <0x8000>;
> +                       d-cache-line-size = <64>;
> +                       d-cache-sets = <128>;
> +                       next-level-cache = <&l2>;

If the i-cache is 2-way associative and the d-cache is 4-way, wouldn't
that mean these two values are backwards?

>                 };
>
>                 cpu1: cpu@1 {
> @@ -60,6 +67,13 @@
>                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>                         dynamic-power-coefficient = <90>;
>                         operating-points-v2 = <&cpu0_opp_table>;
> +                       i-cache-size = <0x8000>;
> +                       i-cache-line-size = <64>;
> +                       i-cache-sets = <256>;
> +                       d-cache-size = <0x8000>;
> +                       d-cache-line-size = <64>;
> +                       d-cache-sets = <128>;
> +                       next-level-cache = <&l2>;
>                 };
>
>                 cpu2: cpu@2 {
> @@ -72,6 +86,13 @@
>                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>                         dynamic-power-coefficient = <90>;
>                         operating-points-v2 = <&cpu0_opp_table>;
> +                       i-cache-size = <0x8000>;
> +                       i-cache-line-size = <64>;
> +                       i-cache-sets = <256>;
> +                       d-cache-size = <0x8000>;
> +                       d-cache-line-size = <64>;
> +                       d-cache-sets = <128>;
> +                       next-level-cache = <&l2>;
>                 };
>
>                 cpu3: cpu@3 {
> @@ -84,6 +105,13 @@
>                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>                         dynamic-power-coefficient = <90>;
>                         operating-points-v2 = <&cpu0_opp_table>;
> +                       i-cache-size = <0x8000>;
> +                       i-cache-line-size = <64>;
> +                       i-cache-sets = <256>;
> +                       d-cache-size = <0x8000>;
> +                       d-cache-line-size = <64>;
> +                       d-cache-sets = <128>;
> +                       next-level-cache = <&l2>;
>                 };
>
>                 idle-states {
> @@ -107,6 +135,13 @@
>                                 min-residency-us = <2000>;
>                         };
>                 };
> +
> +               l2: l2-cache {
> +                       compatible = "cache";
> +                       cache-size = <0x40000>;
> +                       cache-line-size = <64>;
> +                       cache-sets = <512>;
> +               };
>         };
>
>         cpu0_opp_table: cpu0-opp-table {
> --
> 2.20.1
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-04 15:36 ` Peter Geis
@ 2019-12-04 15:44   ` Miquel Raynal
  2019-12-04 17:14     ` Peter Geis
  0 siblings, 1 reply; 7+ messages in thread
From: Miquel Raynal @ 2019-12-04 15:44 UTC (permalink / raw)
  To: Peter Geis
  Cc: Heiko Stuebner, open list:ARM/Rockchip SoC...,
	Rob Herring, Mark Rutland, devicetree, Paul Kocialkowski,
	Thomas Petazzoni, Maxime Chevallier

Hi Peter,

Peter Geis <pgwipeout@gmail.com> wrote on Wed, 4 Dec 2019 10:36:19
-0500:

> On Wed, Dec 4, 2019 at 5:40 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> >
> > PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> > instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> > lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> > Cortex-A35 manual), D-cache is 4-way set associative (ARM
> > Cortex-A35manual).
> >
> > An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> > wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> > is 8-way set associative (ARM Cortex-A35 manual).
> >
> > Describe all of them in the PX30 DTSI.
> >
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> >  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
> >  1 file changed, 35 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > index 1fd12bd09e83..0e10a224a84b 100644
> > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > @@ -48,6 +48,13 @@
> >                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> >                         dynamic-power-coefficient = <90>;
> >                         operating-points-v2 = <&cpu0_opp_table>;
> > +                       i-cache-size = <0x8000>;
> > +                       i-cache-line-size = <64>;
> > +                       i-cache-sets = <256>;
> > +                       d-cache-size = <0x8000>;
> > +                       d-cache-line-size = <64>;
> > +                       d-cache-sets = <128>;
> > +                       next-level-cache = <&l2>;  
> 
> If the i-cache is 2-way associative and the d-cache is 4-way, wouldn't
> that mean these two values are backwards?

Which value are you referring to? Do you mean cache-sets? The following
calculation is my understanding of the situation but it is the first
time I am doing it so I might be totally wrong.

My understanding is that if there are 32768 cache bytes made of 64-byte
lines, so there are 512 lines in both cases.

Then, if the instruction cache is 2-way associative, it means there are
512 / 2 = 256 sets. For the data cache (4-way), it would be 512 / 4 =
128. Am I wrong?

Thanks,
Miquèl

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-04 15:44   ` Miquel Raynal
@ 2019-12-04 17:14     ` Peter Geis
  2019-12-04 17:17       ` Miquel Raynal
  0 siblings, 1 reply; 7+ messages in thread
From: Peter Geis @ 2019-12-04 17:14 UTC (permalink / raw)
  To: Miquel Raynal
  Cc: Heiko Stuebner, open list:ARM/Rockchip SoC...,
	Rob Herring, Mark Rutland, devicetree, Paul Kocialkowski,
	Thomas Petazzoni, Maxime Chevallier

On Wed, Dec 4, 2019 at 10:44 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> Hi Peter,
>
> Peter Geis <pgwipeout@gmail.com> wrote on Wed, 4 Dec 2019 10:36:19
> -0500:
>
> > On Wed, Dec 4, 2019 at 5:40 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> > >
> > > PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> > > instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> > > lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> > > Cortex-A35 manual), D-cache is 4-way set associative (ARM
> > > Cortex-A35manual).
> > >
> > > An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> > > wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> > > is 8-way set associative (ARM Cortex-A35 manual).
> > >
> > > Describe all of them in the PX30 DTSI.
> > >
> > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > > ---
> > >  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
> > >  1 file changed, 35 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > index 1fd12bd09e83..0e10a224a84b 100644
> > > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > @@ -48,6 +48,13 @@
> > >                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> > >                         dynamic-power-coefficient = <90>;
> > >                         operating-points-v2 = <&cpu0_opp_table>;
> > > +                       i-cache-size = <0x8000>;
> > > +                       i-cache-line-size = <64>;
> > > +                       i-cache-sets = <256>;
> > > +                       d-cache-size = <0x8000>;
> > > +                       d-cache-line-size = <64>;
> > > +                       d-cache-sets = <128>;
> > > +                       next-level-cache = <&l2>;
> >
> > If the i-cache is 2-way associative and the d-cache is 4-way, wouldn't
> > that mean these two values are backwards?
>
> Which value are you referring to? Do you mean cache-sets? The following
> calculation is my understanding of the situation but it is the first
> time I am doing it so I might be totally wrong.
>
> My understanding is that if there are 32768 cache bytes made of 64-byte
> lines, so there are 512 lines in both cases.
>
> Then, if the instruction cache is 2-way associative, it means there are
> 512 / 2 = 256 sets. For the data cache (4-way), it would be 512 / 4 =
> 128. Am I wrong?

Apologies, you are correct, it was I who was mistaken.
>
> Thanks,
> Miquèl

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-04 17:14     ` Peter Geis
@ 2019-12-04 17:17       ` Miquel Raynal
  0 siblings, 0 replies; 7+ messages in thread
From: Miquel Raynal @ 2019-12-04 17:17 UTC (permalink / raw)
  To: Peter Geis
  Cc: Heiko Stuebner, open list:ARM/Rockchip SoC...,
	Rob Herring, Mark Rutland, devicetree, Paul Kocialkowski,
	Thomas Petazzoni, Maxime Chevallier

Hi Peter,

Peter Geis <pgwipeout@gmail.com> wrote on Wed, 4 Dec 2019 12:14:40
-0500:

> On Wed, Dec 4, 2019 at 10:44 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> >
> > Hi Peter,
> >
> > Peter Geis <pgwipeout@gmail.com> wrote on Wed, 4 Dec 2019 10:36:19
> > -0500:
> >  
> > > On Wed, Dec 4, 2019 at 5:40 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote:  
> > > >
> > > > PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> > > > instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> > > > lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> > > > Cortex-A35 manual), D-cache is 4-way set associative (ARM
> > > > Cortex-A35manual).
> > > >
> > > > An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> > > > wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> > > > is 8-way set associative (ARM Cortex-A35 manual).
> > > >
> > > > Describe all of them in the PX30 DTSI.
> > > >
> > > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > > > ---
> > > >  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
> > > >  1 file changed, 35 insertions(+)
> > > >
> > > > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > index 1fd12bd09e83..0e10a224a84b 100644
> > > > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > > > @@ -48,6 +48,13 @@
> > > >                         cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> > > >                         dynamic-power-coefficient = <90>;
> > > >                         operating-points-v2 = <&cpu0_opp_table>;
> > > > +                       i-cache-size = <0x8000>;
> > > > +                       i-cache-line-size = <64>;
> > > > +                       i-cache-sets = <256>;
> > > > +                       d-cache-size = <0x8000>;
> > > > +                       d-cache-line-size = <64>;
> > > > +                       d-cache-sets = <128>;
> > > > +                       next-level-cache = <&l2>;  
> > >
> > > If the i-cache is 2-way associative and the d-cache is 4-way, wouldn't
> > > that mean these two values are backwards?  
> >
> > Which value are you referring to? Do you mean cache-sets? The following
> > calculation is my understanding of the situation but it is the first
> > time I am doing it so I might be totally wrong.
> >
> > My understanding is that if there are 32768 cache bytes made of 64-byte
> > lines, so there are 512 lines in both cases.
> >
> > Then, if the instruction cache is 2-way associative, it means there are
> > 512 / 2 = 256 sets. For the data cache (4-way), it would be 512 / 4 =
> > 128. Am I wrong?  
> 
> Apologies, you are correct, it was I who was mistaken.

No problem, I was not 100% sure either. Thanks for the review anyway!

Cheers,
Miquèl

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-04 10:39 [PATCH] arm64: dts: rockchip: Describe PX30 caches Miquel Raynal
  2019-12-04 15:36 ` Peter Geis
@ 2019-12-20  0:55 ` Heiko Stübner
  2019-12-23  9:03   ` Miquel Raynal
  1 sibling, 1 reply; 7+ messages in thread
From: Heiko Stübner @ 2019-12-20  0:55 UTC (permalink / raw)
  To: Miquel Raynal
  Cc: linux-rockchip, Rob Herring, Mark Rutland, devicetree,
	Paul Kocialkowski, Maxime Chevallier, Thomas Petazzoni

Am Mittwoch, 4. Dezember 2019, 11:39:40 CET schrieb Miquel Raynal:
> PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> Cortex-A35 manual), D-cache is 4-way set associative (ARM
> Cortex-A35manual).
> 
> An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> is 8-way set associative (ARM Cortex-A35 manual).
> 
> Describe all of them in the PX30 DTSI.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
>  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> index 1fd12bd09e83..0e10a224a84b 100644
> --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> @@ -48,6 +48,13 @@
>  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>  			dynamic-power-coefficient = <90>;
>  			operating-points-v2 = <&cpu0_opp_table>;
> +			i-cache-size = <0x8000>;
> +			i-cache-line-size = <64>;
> +			i-cache-sets = <256>;
> +			d-cache-size = <0x8000>;
> +			d-cache-line-size = <64>;
> +			d-cache-sets = <128>;
> +			next-level-cache = <&l2>;
>  		};
>  
>  		cpu1: cpu@1 {
> @@ -60,6 +67,13 @@
>  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>  			dynamic-power-coefficient = <90>;
>  			operating-points-v2 = <&cpu0_opp_table>;
> +			i-cache-size = <0x8000>;
> +			i-cache-line-size = <64>;
> +			i-cache-sets = <256>;
> +			d-cache-size = <0x8000>;
> +			d-cache-line-size = <64>;
> +			d-cache-sets = <128>;
> +			next-level-cache = <&l2>;
>  		};
>  
>  		cpu2: cpu@2 {
> @@ -72,6 +86,13 @@
>  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>  			dynamic-power-coefficient = <90>;
>  			operating-points-v2 = <&cpu0_opp_table>;
> +			i-cache-size = <0x8000>;
> +			i-cache-line-size = <64>;
> +			i-cache-sets = <256>;
> +			d-cache-size = <0x8000>;
> +			d-cache-line-size = <64>;
> +			d-cache-sets = <128>;
> +			next-level-cache = <&l2>;
>  		};
>  
>  		cpu3: cpu@3 {
> @@ -84,6 +105,13 @@
>  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
>  			dynamic-power-coefficient = <90>;
>  			operating-points-v2 = <&cpu0_opp_table>;
> +			i-cache-size = <0x8000>;
> +			i-cache-line-size = <64>;
> +			i-cache-sets = <256>;
> +			d-cache-size = <0x8000>;
> +			d-cache-line-size = <64>;
> +			d-cache-sets = <128>;
> +			next-level-cache = <&l2>;
>  		};
>  
>  		idle-states {
> @@ -107,6 +135,13 @@
>  				min-residency-us = <2000>;
>  			};
>  		};
> +
> +		l2: l2-cache {
> +			compatible = "cache";
> +			cache-size = <0x40000>;
> +			cache-line-size = <64>;
> +			cache-sets = <512>;
> +		};
>  	};

Looks like Rob did answer my unspoken question, citing his reply to
	"arm64: dts: amazon: add Amazon's Annapurna Labs Alpine v3 support" [0]

"We only define cache attributes if not discoverable or the cache ID 
registers are wrong and you need to override what's discoverable."

So unless the cache information read during boot is wrong, it looks
like we don't need this.

Heiko


[0] https://patchwork.kernel.org/patch/11279705/




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] arm64: dts: rockchip: Describe PX30 caches
  2019-12-20  0:55 ` Heiko Stübner
@ 2019-12-23  9:03   ` Miquel Raynal
  0 siblings, 0 replies; 7+ messages in thread
From: Miquel Raynal @ 2019-12-23  9:03 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: linux-rockchip, Rob Herring, Mark Rutland, devicetree,
	Paul Kocialkowski, Maxime Chevallier, Thomas Petazzoni

Hi Heiko,

Heiko Stübner <heiko@sntech.de> wrote on Fri, 20 Dec 2019 01:55:58
+0100:

> Am Mittwoch, 4. Dezember 2019, 11:39:40 CET schrieb Miquel Raynal:
> > PX30 SoCs feature 4 Cortex-A35 CPUs with each of them a L1 data and
> > instruction cache. Both are 32kiB wide (PX30 TRM) and made of 64-bit
> > lines (ARM Cortex-A35 manual). I-cache is 2-way set associative (ARM
> > Cortex-A35 manual), D-cache is 4-way set associative (ARM
> > Cortex-A35manual).
> > 
> > An L2 cache is placed after these 4 L1 caches (PX30 TRM), is 256kiB
> > wide (PX30 TRM) and made of 64-bit lines (ARM Cortex-A35 manual) and
> > is 8-way set associative (ARM Cortex-A35 manual).
> > 
> > Describe all of them in the PX30 DTSI.
> > 
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> >  arch/arm64/boot/dts/rockchip/px30.dtsi | 35 ++++++++++++++++++++++++++
> >  1 file changed, 35 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > index 1fd12bd09e83..0e10a224a84b 100644
> > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > @@ -48,6 +48,13 @@
> >  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> >  			dynamic-power-coefficient = <90>;
> >  			operating-points-v2 = <&cpu0_opp_table>;
> > +			i-cache-size = <0x8000>;
> > +			i-cache-line-size = <64>;
> > +			i-cache-sets = <256>;
> > +			d-cache-size = <0x8000>;
> > +			d-cache-line-size = <64>;
> > +			d-cache-sets = <128>;
> > +			next-level-cache = <&l2>;
> >  		};
> >  
> >  		cpu1: cpu@1 {
> > @@ -60,6 +67,13 @@
> >  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> >  			dynamic-power-coefficient = <90>;
> >  			operating-points-v2 = <&cpu0_opp_table>;
> > +			i-cache-size = <0x8000>;
> > +			i-cache-line-size = <64>;
> > +			i-cache-sets = <256>;
> > +			d-cache-size = <0x8000>;
> > +			d-cache-line-size = <64>;
> > +			d-cache-sets = <128>;
> > +			next-level-cache = <&l2>;
> >  		};
> >  
> >  		cpu2: cpu@2 {
> > @@ -72,6 +86,13 @@
> >  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> >  			dynamic-power-coefficient = <90>;
> >  			operating-points-v2 = <&cpu0_opp_table>;
> > +			i-cache-size = <0x8000>;
> > +			i-cache-line-size = <64>;
> > +			i-cache-sets = <256>;
> > +			d-cache-size = <0x8000>;
> > +			d-cache-line-size = <64>;
> > +			d-cache-sets = <128>;
> > +			next-level-cache = <&l2>;
> >  		};
> >  
> >  		cpu3: cpu@3 {
> > @@ -84,6 +105,13 @@
> >  			cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
> >  			dynamic-power-coefficient = <90>;
> >  			operating-points-v2 = <&cpu0_opp_table>;
> > +			i-cache-size = <0x8000>;
> > +			i-cache-line-size = <64>;
> > +			i-cache-sets = <256>;
> > +			d-cache-size = <0x8000>;
> > +			d-cache-line-size = <64>;
> > +			d-cache-sets = <128>;
> > +			next-level-cache = <&l2>;
> >  		};
> >  
> >  		idle-states {
> > @@ -107,6 +135,13 @@
> >  				min-residency-us = <2000>;
> >  			};
> >  		};
> > +
> > +		l2: l2-cache {
> > +			compatible = "cache";
> > +			cache-size = <0x40000>;
> > +			cache-line-size = <64>;
> > +			cache-sets = <512>;
> > +		};
> >  	};  
> 
> Looks like Rob did answer my unspoken question, citing his reply to
> 	"arm64: dts: amazon: add Amazon's Annapurna Labs Alpine v3 support" [0]
> 
> "We only define cache attributes if not discoverable or the cache ID 
> registers are wrong and you need to override what's discoverable."
> 
> So unless the cache information read during boot is wrong, it looks
> like we don't need this.

Well, I actually met the:

         "Unable to detect cache hierarchy for CPU <x>"

warning in the dmesg. Do you know anything about cache ID registers?

There is some kind of "i-cache" infos [TRM page 391] but it doesn't
seem enough to describe the cache hierarchy.

> 
> Heiko
> 
> 
> [0] https://patchwork.kernel.org/patch/11279705/

Thanks,
Miquèl

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-12-23  9:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-04 10:39 [PATCH] arm64: dts: rockchip: Describe PX30 caches Miquel Raynal
2019-12-04 15:36 ` Peter Geis
2019-12-04 15:44   ` Miquel Raynal
2019-12-04 17:14     ` Peter Geis
2019-12-04 17:17       ` Miquel Raynal
2019-12-20  0:55 ` Heiko Stübner
2019-12-23  9:03   ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).