[v1,1/2] arm: rockchip: Kconfig: remove select ARM_GLOBAL_TIMER

Message ID 88e93a81-ef9f-adcc-db83-f8b5ba615c47@gmail.com
State New
Headers
Series [v1,1/2] arm: rockchip: Kconfig: remove select ARM_GLOBAL_TIMER |

Commit Message

Johan Jonker Oct. 30, 2022, 6:36 p.m. UTC
  The clocksource and the sched_clock provided by the arm_global_timer
on Rockchip rk3066a/rk3188 are quite unstable because their rates
depend on the cpu frequency.

Recent changes to the arm_global_timer driver makes it impossible to use.

On the other side, the arm_global_timer has a higher rating than the
rockchip_timer, it will be selected by default by the time framework
while we want to use the stable rockchip clocksource.

Let's disable the arm_global_timer in order to have the ROCKCHIP_TIMER
(rk3188) or DW_APB_TIMER (rk3066a) selected by default.

Signed-off-by: Johan Jonker <jbx6244@gmail.com>
---

ARM: dts: rockchip: disable arm-global-timer for rk3188
https://lore.kernel.org/linux-rockchip/1492374441-23336-26-git-send-email-daniel.lezcano@linaro.org/

clocksource: arm_global_timer: implement rate compensation whenever source clock changes
https://lore.kernel.org/all/20210406130045.15491-2-andrea.merello@gmail.com/
---
 arch/arm/mach-rockchip/Kconfig | 2 --
 1 file changed, 2 deletions(-)

--
2.20.1
  

Comments

Heiko Stübner Oct. 30, 2022, 7:30 p.m. UTC | #1
Hi Johan,

Am Sonntag, 30. Oktober 2022, 19:36:01 CET schrieb Johan Jonker:
> The clocksource and the sched_clock provided by the arm_global_timer
> on Rockchip rk3066a/rk3188 are quite unstable because their rates
> depend on the cpu frequency.
> 
> Recent changes to the arm_global_timer driver makes it impossible to use.
> 
> On the other side, the arm_global_timer has a higher rating than the
> rockchip_timer, it will be selected by default by the time framework
> while we want to use the stable rockchip clocksource.
> 
> Let's disable the arm_global_timer in order to have the ROCKCHIP_TIMER
> (rk3188) or DW_APB_TIMER (rk3066a) selected by default.

Doing that change won't help you with the issue you see.
These days kernel images are supposed to run on as many
platforms as possible with the _same_ kernel image.

So the muliplatform image build from the kernel's defconfig will
include most of the time other platforms that will pull in the
global-timer again.


I do see that you disable the global-timer
in the rk3066 dtsi in patch2, though this would leave the rk3188
still using the global-timer. Why not do this in the rk3xxx.dtsi?

I.e. keep the global-timer node, but add a disabled property
together with a comment above the status=disabled, describing
the issue. [This should keep people from re-adding the global-timer
in the future :-) ]

Thanks
Heiko

> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
> ---
> 
> ARM: dts: rockchip: disable arm-global-timer for rk3188
> https://lore.kernel.org/linux-rockchip/1492374441-23336-26-git-send-email-daniel.lezcano@linaro.org/
> 
> clocksource: arm_global_timer: implement rate compensation whenever source clock changes
> https://lore.kernel.org/all/20210406130045.15491-2-andrea.merello@gmail.com/
> ---
>  arch/arm/mach-rockchip/Kconfig | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index b7855cc66..0432a4430 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -15,8 +15,6 @@ config ARCH_ROCKCHIP
>  	select DW_APB_TIMER_OF
>  	select REGULATOR if PM
>  	select ROCKCHIP_TIMER
> -	select ARM_GLOBAL_TIMER
> -	select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
>  	select ZONE_DMA if ARM_LPAE
>  	select PM
>  	help
> --
> 2.20.1
> 
>
  
Johan Jonker Oct. 30, 2022, 7:45 p.m. UTC | #2
On 10/30/22 20:30, Heiko Stuebner wrote:
> Hi Johan,
> 
> Am Sonntag, 30. Oktober 2022, 19:36:01 CET schrieb Johan Jonker:
>> The clocksource and the sched_clock provided by the arm_global_timer
>> on Rockchip rk3066a/rk3188 are quite unstable because their rates
>> depend on the cpu frequency.
>>
>> Recent changes to the arm_global_timer driver makes it impossible to use.
>>
>> On the other side, the arm_global_timer has a higher rating than the
>> rockchip_timer, it will be selected by default by the time framework
>> while we want to use the stable rockchip clocksource.
>>
>> Let's disable the arm_global_timer in order to have the ROCKCHIP_TIMER
>> (rk3188) or DW_APB_TIMER (rk3066a) selected by default.
> 
> Doing that change won't help you with the issue you see.
> These days kernel images are supposed to run on as many
> platforms as possible with the _same_ kernel image.
> 
> So the muliplatform image build from the kernel's defconfig will
> include most of the time other platforms that will pull in the
> global-timer again.
> 
> 

How about "imply" instead of "select"?
It's no longer useful. One can get rid of if one wants a really lean kernel.

> I do see that you disable the global-timer
> in the rk3066 dtsi in patch2, though this would leave the rk3188
> still using the global-timer. Why not do this in the rk3xxx.dtsi?
> 
> I.e. keep the global-timer node, but add a disabled property
> together with a comment above the status=disabled, describing
> the issue. [This should keep people from re-adding the global-timer
> in the future :-) ]
> 
> Thanks
> Heiko
> 
>> Signed-off-by: Johan Jonker <jbx6244@gmail.com>
>> ---
>>
>> ARM: dts: rockchip: disable arm-global-timer for rk3188
>> https://lore.kernel.org/linux-rockchip/1492374441-23336-26-git-send-email-daniel.lezcano@linaro.org/
>>
>> clocksource: arm_global_timer: implement rate compensation whenever source clock changes
>> https://lore.kernel.org/all/20210406130045.15491-2-andrea.merello@gmail.com/
>> ---
>>  arch/arm/mach-rockchip/Kconfig | 2 --
>>  1 file changed, 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
>> index b7855cc66..0432a4430 100644
>> --- a/arch/arm/mach-rockchip/Kconfig
>> +++ b/arch/arm/mach-rockchip/Kconfig
>> @@ -15,8 +15,6 @@ config ARCH_ROCKCHIP
>>  	select DW_APB_TIMER_OF
>>  	select REGULATOR if PM
>>  	select ROCKCHIP_TIMER
>> -	select ARM_GLOBAL_TIMER
>> -	select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
>>  	select ZONE_DMA if ARM_LPAE
>>  	select PM
>>  	help
>> --
>> 2.20.1
>>
>>
> 
> 
> 
>
  

Patch

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index b7855cc66..0432a4430 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -15,8 +15,6 @@  config ARCH_ROCKCHIP
 	select DW_APB_TIMER_OF
 	select REGULATOR if PM
 	select ROCKCHIP_TIMER
-	select ARM_GLOBAL_TIMER
-	select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
 	select ZONE_DMA if ARM_LPAE
 	select PM
 	help