> > +static __init void sched_clock_early_init(void)
> > +{
> > +     u64 freq = arch_timer_get_cntfrq();
> > +     u64 (*read_time)(void) = arch_counter_get_cntvct;
>
> We already have arch_timer_read_counter which is exposed from
> arm_arch_timer.h.

OK

>
> > +
> > +     /* Early clock is available only on platforms with known freqs */
>
> This comment is misleading. It should read something like:
>
>         /*
>          * The arm64 boot protocol mandates that CNTFRQ_EL0 reflects
>          * the timer frequency. To avoid breakage on misconfigured
>          * systems, do not register the early sched_clock if the
>          * programmed value if zero. Other random values will just
>          * result in random output.
>          */
>

OK

> > +     if (!freq)
> > +             return;
> > +
> > +     sched_clock_register(read_time, BITS_PER_LONG, freq);
>
> This doesn't seem right. The counter has an architected minimum of 56
> bits, and you can't assume that it is going to be more than that.

Yeah, I saw 56 is used in arm_arch_timer.c, but I could not find where
this minimum is defined in aarch64 specs. I will change it to 56.

I will send v2 soon.

Thank you,
Pasha

Reply via email to