timers/PM: Fix up tick_unfreeze()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 3 Apr 2015 13:21:51 +0000 (15:21 +0200)
committerIngo Molnar <mingo@kernel.org>
Fri, 3 Apr 2015 13:15:51 +0000 (15:15 +0200)
A recent conflict resolution has left tick_resume() in
tick_unfreeze() which leads to an unbalanced execution of
tick_resume_broadcast() every time that function runs.

Fix that by replacing the tick_resume() in tick_unfreeze()
with tick_resume_local() as appropriate.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: boris.ostrovsky@oracle.com
Cc: david.vrabel@citrix.com
Cc: konrad.wilk@oracle.com
Cc: peterz@infradead.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/8099075.V0LvN3pQAV@vostro.rjw.lan
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/time/tick-common.c

index fac3e98fec4953ff68787e5a921ed6a8fbeea5f9..ad66a51ca4fa5741048f9b90c9573594e263a723 100644 (file)
@@ -482,7 +482,7 @@ void tick_unfreeze(void)
        if (tick_freeze_depth == num_online_cpus())
                timekeeping_resume();
        else
-               tick_resume();
+               tick_resume_local();
 
        tick_freeze_depth--;