[PATCH v8 01/22] riscv: Fix kernel time_init()

Palmer Dabbelt palmer at dabbelt.com
Thu Dec 10 21:09:39 EST 2020


On Thu, 10 Dec 2020 06:02:52 PST (-0800), Damien Le Moal wrote:
> If of_clk_init() is not called in time_init(), clock providers defined
> in the system device tree are not initialized, resulting in failures for
> other devices to initialize due to missing clocks.
> Similarly to other architectures and to the default kernel time_init()
> implementation, call of_clk_init() before executing timer_probe() in
> time_init().
>
> Signed-off-by: Damien Le Moal <damien.lemoal at wdc.com>
> Acked-by: Stephen Boyd <sboyd at kernel.org>
> ---
>  arch/riscv/kernel/time.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/arch/riscv/kernel/time.c b/arch/riscv/kernel/time.c
> index 4d3a1048ad8b..8a5cf99c0776 100644
> --- a/arch/riscv/kernel/time.c
> +++ b/arch/riscv/kernel/time.c
> @@ -4,6 +4,7 @@
>   * Copyright (C) 2017 SiFive
>   */
>
> +#include <linux/of_clk.h>
>  #include <linux/clocksource.h>
>  #include <linux/delay.h>
>  #include <asm/sbi.h>
> @@ -24,6 +25,8 @@ void __init time_init(void)
>  	riscv_timebase = prop;
>
>  	lpj_fine = riscv_timebase / HZ;
> +
> +	of_clk_init(NULL);
>  	timer_probe();
>  }

Reviewed-by: Palmer Dabbelt <palmerdabbelt at google.com>



More information about the linux-riscv mailing list