linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: allwinner: a64: Re-add PMU node
@ 2019-11-05 11:06 Andre Przywara
  2019-11-06 12:07 ` Maxime Ripard
  0 siblings, 1 reply; 2+ messages in thread
From: Andre Przywara @ 2019-11-05 11:06 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Rutland, Rob Herring, Emmanuel Vadot, Jared D . McNeill,
	linux-sunxi, devicetree, Clément Péron, Harald Geyer,
	linux-arm-kernel

As it was found recently, the Performance Monitoring Unit (PMU) on the
Allwinner A64 SoC was not generating (the right) interrupts. With the
SPI numbers from the manual the kernel did not receive any overflow
interrupts, so perf was not happy at all.
It turns out that the numbers were just off by 4, so the PMU interrupts
are from 148 to 151, not from 152 to 155 as the manual describes.

This was found by playing around with U-Boot, which typically does not
use interrupts, so the GIC is fully available for experimentation:
With *every* PPI and SPI enabled, an overflowing PMU cycle counter was
found to set a bit in one of the GICD_ISPENDR registers, with careful
counting this was determined to be number 148.

Tested with perf record and perf top on a Pine64-LTS. Also tested with
tasksetting to every core to confirm the assignment between IRQs and
cores.

This somewhat "revert-fixes" commit ed3e9406bcbc ("arm64: dts: allwinner:
a64: Drop PMU node").

Fixes: 34a97fcc71c2 ("arm64: dts: allwinner: a64: Add PMU node")
Fixes: ed3e9406bcbc ("arm64: dts: allwinner: a64: Drop PMU node")
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 70f4cce6be43..ba41c1b85887 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -142,6 +142,15 @@
 		clock-output-names = "ext-osc32k";
 	};
 
+	pmu {
+		compatible = "arm,cortex-a53-pmu";
+		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+	};
+
 	psci {
 		compatible = "arm,psci-0.2";
 		method = "smc";
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH] arm64: dts: allwinner: a64: Re-add PMU node
  2019-11-05 11:06 [PATCH] arm64: dts: allwinner: a64: Re-add PMU node Andre Przywara
@ 2019-11-06 12:07 ` Maxime Ripard
  0 siblings, 0 replies; 2+ messages in thread
From: Maxime Ripard @ 2019-11-06 12:07 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, Rob Herring, Emmanuel Vadot, devicetree,
	Jared D . McNeill, linux-sunxi, Chen-Yu Tsai,
	Clément Péron, Harald Geyer, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1306 bytes --]

Hi,

On Tue, Nov 05, 2019 at 11:06:51AM +0000, Andre Przywara wrote:
> As it was found recently, the Performance Monitoring Unit (PMU) on the
> Allwinner A64 SoC was not generating (the right) interrupts. With the
> SPI numbers from the manual the kernel did not receive any overflow
> interrupts, so perf was not happy at all.
> It turns out that the numbers were just off by 4, so the PMU interrupts
> are from 148 to 151, not from 152 to 155 as the manual describes.
>
> This was found by playing around with U-Boot, which typically does not
> use interrupts, so the GIC is fully available for experimentation:
> With *every* PPI and SPI enabled, an overflowing PMU cycle counter was
> found to set a bit in one of the GICD_ISPENDR registers, with careful
> counting this was determined to be number 148.
>
> Tested with perf record and perf top on a Pine64-LTS. Also tested with
> tasksetting to every core to confirm the assignment between IRQs and
> cores.
>
> This somewhat "revert-fixes" commit ed3e9406bcbc ("arm64: dts: allwinner:
> a64: Drop PMU node").
>
> Fixes: 34a97fcc71c2 ("arm64: dts: allwinner: a64: Add PMU node")
> Fixes: ed3e9406bcbc ("arm64: dts: allwinner: a64: Drop PMU node")
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>

Applied, thanks for figuring this out!
Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2019-11-06 12:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-05 11:06 [PATCH] arm64: dts: allwinner: a64: Re-add PMU node Andre Przywara
2019-11-06 12:07 ` Maxime Ripard

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).