diff mbox series

arm64: tegra186: Add missing CPU PMUs

Message ID 20201013095851.311478-1-maz@kernel.org
State Accepted
Headers show
Series arm64: tegra186: Add missing CPU PMUs | expand

Commit Message

Marc Zyngier Oct. 13, 2020, 9:58 a.m. UTC
Add the description of CPU PMUs for both the Denver and A57 clusters,
which enables the perf subsystem.

Signed-off-by: Marc Zyngier <maz@kernel.org>
---
 arch/arm64/boot/dts/nvidia/tegra186.dtsi | 28 +++++++++++++++++++-----
 1 file changed, 22 insertions(+), 6 deletions(-)

Comments

Thierry Reding Nov. 10, 2020, 5:36 p.m. UTC | #1
On Tue, Oct 13, 2020 at 10:58:51AM +0100, Marc Zyngier wrote:
> Add the description of CPU PMUs for both the Denver and A57 clusters,
> which enables the perf subsystem.
> 
> Signed-off-by: Marc Zyngier <maz@kernel.org>
> ---
>  arch/arm64/boot/dts/nvidia/tegra186.dtsi | 28 +++++++++++++++++++-----
>  1 file changed, 22 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/nvidia/tegra186.dtsi b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
> index fd44545e124d..6bb03668a8d3 100644
> --- a/arch/arm64/boot/dts/nvidia/tegra186.dtsi
> +++ b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
> @@ -1321,7 +1321,7 @@ cpus {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  
> -		cpu@0 {
> +		denver_0: cpu@0 {
>  			compatible = "nvidia,tegra186-denver";
>  			device_type = "cpu";
>  			i-cache-size = <0x20000>;
> @@ -1334,7 +1334,7 @@ cpu@0 {
>  			reg = <0x000>;
>  		};
>  
> -		cpu@1 {
> +		denver_1: cpu@1 {
>  			compatible = "nvidia,tegra186-denver";
>  			device_type = "cpu";
>  			i-cache-size = <0x20000>;
> @@ -1347,7 +1347,7 @@ cpu@1 {
>  			reg = <0x001>;
>  		};
>  
> -		cpu@2 {
> +		ca57_0: cpu@2 {
>  			compatible = "arm,cortex-a57";
>  			device_type = "cpu";
>  			i-cache-size = <0xC000>;
> @@ -1360,7 +1360,7 @@ cpu@2 {
>  			reg = <0x100>;
>  		};
>  
> -		cpu@3 {
> +		ca57_1: cpu@3 {
>  			compatible = "arm,cortex-a57";
>  			device_type = "cpu";
>  			i-cache-size = <0xC000>;
> @@ -1373,7 +1373,7 @@ cpu@3 {
>  			reg = <0x101>;
>  		};
>  
> -		cpu@4 {
> +		ca57_2: cpu@4 {
>  			compatible = "arm,cortex-a57";
>  			device_type = "cpu";
>  			i-cache-size = <0xC000>;
> @@ -1386,7 +1386,7 @@ cpu@4 {
>  			reg = <0x102>;
>  		};
>  
> -		cpu@5 {
> +		ca57_3: cpu@5 {
>  			compatible = "arm,cortex-a57";
>  			device_type = "cpu";
>  			i-cache-size = <0xC000>;
> @@ -1418,6 +1418,22 @@ L2_A57: l2-cache1 {
>  		};
>  	};
>  
> +	pmu_denver {
> +		compatible = "nvidia,denver-pmu", "arm,armv8-pmuv3";

checkpatch complains that this isn't documented. Did I miss the DT
bindings patch or do we not have one for this?

Thierry
Marc Zyngier Nov. 10, 2020, 6:08 p.m. UTC | #2
On 2020-11-10 17:36, Thierry Reding wrote:
> On Tue, Oct 13, 2020 at 10:58:51AM +0100, Marc Zyngier wrote:
>> Add the description of CPU PMUs for both the Denver and A57 clusters,
>> which enables the perf subsystem.
>> 
>> Signed-off-by: Marc Zyngier <maz@kernel.org>

[...]

>> 
>> +	pmu_denver {
>> +		compatible = "nvidia,denver-pmu", "arm,armv8-pmuv3";
> 
> checkpatch complains that this isn't documented. Did I miss the DT
> bindings patch or do we not have one for this?

We don't. But I don't think adding a compatible string for each
and every micro-architecture makes much sense unless we have something
useful to add to that compatible string. Such as a full description
of the implementation specific events.

Thanks,

         M.
Thierry Reding Nov. 10, 2020, 6:22 p.m. UTC | #3
On Tue, Nov 10, 2020 at 06:08:31PM +0000, Marc Zyngier wrote:
> On 2020-11-10 17:36, Thierry Reding wrote:
> > On Tue, Oct 13, 2020 at 10:58:51AM +0100, Marc Zyngier wrote:
> > > Add the description of CPU PMUs for both the Denver and A57 clusters,
> > > which enables the perf subsystem.
> > > 
> > > Signed-off-by: Marc Zyngier <maz@kernel.org>
> 
> [...]
> 
> > > 
> > > +	pmu_denver {
> > > +		compatible = "nvidia,denver-pmu", "arm,armv8-pmuv3";
> > 
> > checkpatch complains that this isn't documented. Did I miss the DT
> > bindings patch or do we not have one for this?
> 
> We don't. But I don't think adding a compatible string for each
> and every micro-architecture makes much sense unless we have something
> useful to add to that compatible string. Such as a full description
> of the implementation specific events.

I'm wondering if this isn't going to upset Rob's json-schema bot and
make him mad.

Thierry
Marc Zyngier Nov. 10, 2020, 6:27 p.m. UTC | #4
On 2020-11-10 18:22, Thierry Reding wrote:
> On Tue, Nov 10, 2020 at 06:08:31PM +0000, Marc Zyngier wrote:
>> On 2020-11-10 17:36, Thierry Reding wrote:
>> > On Tue, Oct 13, 2020 at 10:58:51AM +0100, Marc Zyngier wrote:
>> > > Add the description of CPU PMUs for both the Denver and A57 clusters,
>> > > which enables the perf subsystem.
>> > >
>> > > Signed-off-by: Marc Zyngier <maz@kernel.org>
>> 
>> [...]
>> 
>> > >
>> > > +	pmu_denver {
>> > > +		compatible = "nvidia,denver-pmu", "arm,armv8-pmuv3";
>> >
>> > checkpatch complains that this isn't documented. Did I miss the DT
>> > bindings patch or do we not have one for this?
>> 
>> We don't. But I don't think adding a compatible string for each
>> and every micro-architecture makes much sense unless we have something
>> useful to add to that compatible string. Such as a full description
>> of the implementation specific events.
> 
> I'm wondering if this isn't going to upset Rob's json-schema bot and
> make him mad.

Rob going mad? Never! ;-)

If you *really* want it, I'll respin this patch with the Denver 
compatible
added to Documentation/devicetree/bindings/arm/pmu.yaml.

         M.
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/nvidia/tegra186.dtsi b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
index fd44545e124d..6bb03668a8d3 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra186.dtsi
@@ -1321,7 +1321,7 @@  cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
 
-		cpu@0 {
+		denver_0: cpu@0 {
 			compatible = "nvidia,tegra186-denver";
 			device_type = "cpu";
 			i-cache-size = <0x20000>;
@@ -1334,7 +1334,7 @@  cpu@0 {
 			reg = <0x000>;
 		};
 
-		cpu@1 {
+		denver_1: cpu@1 {
 			compatible = "nvidia,tegra186-denver";
 			device_type = "cpu";
 			i-cache-size = <0x20000>;
@@ -1347,7 +1347,7 @@  cpu@1 {
 			reg = <0x001>;
 		};
 
-		cpu@2 {
+		ca57_0: cpu@2 {
 			compatible = "arm,cortex-a57";
 			device_type = "cpu";
 			i-cache-size = <0xC000>;
@@ -1360,7 +1360,7 @@  cpu@2 {
 			reg = <0x100>;
 		};
 
-		cpu@3 {
+		ca57_1: cpu@3 {
 			compatible = "arm,cortex-a57";
 			device_type = "cpu";
 			i-cache-size = <0xC000>;
@@ -1373,7 +1373,7 @@  cpu@3 {
 			reg = <0x101>;
 		};
 
-		cpu@4 {
+		ca57_2: cpu@4 {
 			compatible = "arm,cortex-a57";
 			device_type = "cpu";
 			i-cache-size = <0xC000>;
@@ -1386,7 +1386,7 @@  cpu@4 {
 			reg = <0x102>;
 		};
 
-		cpu@5 {
+		ca57_3: cpu@5 {
 			compatible = "arm,cortex-a57";
 			device_type = "cpu";
 			i-cache-size = <0xC000>;
@@ -1418,6 +1418,22 @@  L2_A57: l2-cache1 {
 		};
 	};
 
+	pmu_denver {
+		compatible = "nvidia,denver-pmu", "arm,armv8-pmuv3";
+		interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-affinity = <&denver_0 &denver_1>;
+	};
+
+	pmu_a57 {
+		compatible = "arm,cortex-a57-pmu", "arm,armv8-pmuv3";
+		interrupts = <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-affinity = <&ca57_0 &ca57_1 &ca57_2 &ca57_3>;
+	};
+
 	thermal-zones {
 		a57 {
 			polling-delay = <0>;