1. Timer
To use tick less kernel, the kernel needs one shot timer hardware supports. After timer_event_source being initiated, the timer handler will be switched to one shot handler, this is done in softirq context. The call trace looks like:
tick_check_oneshot_change
tick_nohz_switch_to_nohz
---->tick_nohz_handler
---->tick_sched_do_timer
---->tick_sched_handle
---->update_process_times
---->run_local_timers
---->scheduler_tick
---->run_posix_cpu_timers
==================================================
Still in process