On 01-09-15, 15:21, vichy wrote: > and I add PLAT_gt_change_freq in arm_global_timer.c like below: > PLAT_gt_change_freq calling() { > gt_clk_rate = get_periph_clk(); > clockevents_update_freq(this_cpu_ptr(gt_evt), gt_clk_rate); In earlier versions of kernel, this had a problem that it works only for ONESHOT mode and simply returns in PERIODIC mode. I do see that your's mode is ONESHOT only, and so it should have worked. Anyway, few prints into that routine to see where we are reaching might help. > __clocksource_updatefreq_hz(>_clocksource, gt_clk_rate); AFAIR, there is a difference between how different mdelay/udelay are implemented. One of them is using the loops_per_jiffie variable to calculate the time, other uses clkevt device. I am not 100% sure about the theory, but that's what I remember. So, have a look from that perspective as well.. -- viresh -- To unsubscribe from this list: send the line "unsubscribe cpufreq" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html