• Aaro Koskinen's avatar
    ARM: OMAP: sched_clock() corrected · 80ea3bac
    Aaro Koskinen authored
    After my OMAP3 board has been running for a while, I'm seeing weird
    latency traces like this:
    
          sh-1574    0d.h2  153us : do_timer (tick_do_update_jiffies64)
          sh-1574    0d.h2  153us : update_wall_time (do_timer)
          sh-1574    0d.h2  153us!: omap_32k_read (update_wall_time)
          sh-1574    0d.h2 1883us : update_xtime_cache (update_wall_time)
          sh-1574    0d.h2 1883us : clocksource_get_next (update_wall_time)
          sh-1574    0d.h2 1883us+: _spin_lock_irqsave (clocksource_get_next)
    
    and after a while:
    
          sh-17818   0d.h3  153us : do_timer (tick_do_update_jiffies64)
          sh-17818   0d.h3  153us : update_wall_time (do_timer)
          sh-17818   0d.h3  153us!: omap_32k_read (update_wall_time)
          sh-17818   0d.h3 1915us : update_xtime_cache (update_wall_time)
          sh-17818   0d.h3 1915us+: clocksource_get_next (update_wall_time)
          sh-17818   0d.h3 1945us : _spin_lock_irqsave (clocksource_get_next)
    
    Turns out that sched_clock() is using cyc2ns(), which returns NTP
    adjusted time. The sched_clock() frequency should not be adjusted. The
    patch deletes omap_32k_ticks_to_nsecs() and rewrites sched_clock()
    to do the conversion using the constant multiplier.
    Signed-off-by: default avatarAaro Koskinen <Aaro.Koskinen@nokia.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    80ea3bac
common.c 7.65 KB