On 15 April 2014 04:52, Frederic Weisbecker fweisbec@gmail.com wrote:
On Mon, Apr 14, 2014 at 09:53:51PM +0530, Viresh Kumar wrote:
__tick_nohz_task_switch() was called only from tick_nohz_task_switch() and there is nothing much in tick_nohz_task_switch() as well. IOW, we don't need unnecessary wrapper over __tick_nohz_task_switch() to be there. Merge all code from __tick_nohz_task_switch() into tick_nohz_task_switch() and move it to tick-sched.c.
This also moves check for tick_nohz_tick_stopped() outside of irq_save() context.
No, the wrapper is there on purpose in order to optimize the full dynticks off case in the context switch path with the jump label'ed check on tick_nohz_full_enabled().
Just to clarify, you are saying that:
Wrapper was there to save an extra function call when tick_nohz_full_enabled() returns false, as tick_nohz_task_switch() will be inlined ?
In this case probably we can move !can_stop_full_tick() as well to the wrapper ?