2021-03-22 04:55:22

by Samuel Holland

[permalink] [raw]
Subject: [PATCH v2 0/5] arm64: sunxi: Enable the sun4i timer

In preparation for adding CPU idle states, hook up the sun4i timer.
Having a non-c3stop clockevent source available is necessary for all
CPUs to simultaneously enter a local-timer-stop idle state.

Changes from v1:
- Removed H616 changes (depends on an unmerged patch set)
- Reworded the patch 4-5 commit messages for clarity
- Added Acked-by tags

Samuel Holland (5):
dt-bindings: timer: Simplify conditional expressions
dt-bindings: timer: Add compatibles for sun50i timers
arm64: dts: allwinner: a64: Sort watchdog node
arm64: dts: allwinner: Add sun4i MMIO timer nodes
arm64: sunxi: Build the sun4i timer driver

.../timer/allwinner,sun4i-a10-timer.yaml | 42 +++++++++----------
arch/arm64/Kconfig.platforms | 1 +
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 25 +++++++----
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 9 ++++
4 files changed, 46 insertions(+), 31 deletions(-)

--
2.26.2


2021-03-22 14:20:17

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] arm64: sunxi: Enable the sun4i timer

On 22/03/2021 05:47, Samuel Holland wrote:
> In preparation for adding CPU idle states, hook up the sun4i timer.
> Having a non-c3stop clockevent source available is necessary for all
> CPUs to simultaneously enter a local-timer-stop idle state.

Why simultaneously ?

> Changes from v1:
> - Removed H616 changes (depends on an unmerged patch set)
> - Reworded the patch 4-5 commit messages for clarity
> - Added Acked-by tags
>
> Samuel Holland (5):
> dt-bindings: timer: Simplify conditional expressions
> dt-bindings: timer: Add compatibles for sun50i timers
> arm64: dts: allwinner: a64: Sort watchdog node
> arm64: dts: allwinner: Add sun4i MMIO timer nodes
> arm64: sunxi: Build the sun4i timer driver
>
> .../timer/allwinner,sun4i-a10-timer.yaml | 42 +++++++++----------
> arch/arm64/Kconfig.platforms | 1 +
> arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 25 +++++++----
> arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 9 ++++
> 4 files changed, 46 insertions(+), 31 deletions(-)
>


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

2021-03-24 09:42:42

by Samuel Holland

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] arm64: sunxi: Enable the sun4i timer

On 3/22/21 9:18 AM, Daniel Lezcano wrote:
> On 22/03/2021 05:47, Samuel Holland wrote:
>> In preparation for adding CPU idle states, hook up the sun4i timer.
>> Having a non-c3stop clockevent source available is necessary for all
>> CPUs to simultaneously enter a local-timer-stop idle state.
>
> Why simultaneously ?
Because the CPU providing (the hrtimer providing) the broadcast timer
cannot enter an idle state which would stop that timer. So in my case,
with 4 CPUs, I was seeing at most 3 CPUs enter idle at any given time.
This prevented any cluster-level idle states from doing anything. After
applying this series, I was able to observe the whole cluster powering
down when appropriate.

Regards,
Samuel

>> Changes from v1:
>> - Removed H616 changes (depends on an unmerged patch set)
>> - Reworded the patch 4-5 commit messages for clarity
>> - Added Acked-by tags
>>
>> Samuel Holland (5):
>> dt-bindings: timer: Simplify conditional expressions
>> dt-bindings: timer: Add compatibles for sun50i timers
>> arm64: dts: allwinner: a64: Sort watchdog node
>> arm64: dts: allwinner: Add sun4i MMIO timer nodes
>> arm64: sunxi: Build the sun4i timer driver
>>
>> .../timer/allwinner,sun4i-a10-timer.yaml | 42 +++++++++----------
>> arch/arm64/Kconfig.platforms | 1 +
>> arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 25 +++++++----
>> arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 9 ++++
>> 4 files changed, 46 insertions(+), 31 deletions(-)
>>
>
>

2021-03-24 11:15:23

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] arm64: sunxi: Enable the sun4i timer

On 24/03/2021 04:51, Samuel Holland wrote:
> On 3/22/21 9:18 AM, Daniel Lezcano wrote:
>> On 22/03/2021 05:47, Samuel Holland wrote:
>>> In preparation for adding CPU idle states, hook up the sun4i timer.
>>> Having a non-c3stop clockevent source available is necessary for all
>>> CPUs to simultaneously enter a local-timer-stop idle state.
>>
>> Why simultaneously ?
> Because the CPU providing (the hrtimer providing) the broadcast timer
> cannot enter an idle state which would stop that timer. So in my case,
> with 4 CPUs, I was seeing at most 3 CPUs enter idle at any given time.
> This prevented any cluster-level idle states from doing anything. After
> applying this series, I was able to observe the whole cluster powering
> down when appropriate.

Ah, ok. I did not realize this fourth CPU was acting as the broadcast
timer, so allowing at least a CPU power down. This setup is unusual.

The changes make sense.

Acked-by: Daniel Lezcano <[email protected]>



--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog