aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/tick-broadcast.c
diff options
context:
space:
mode:
authorPreeti U Murthy <preeti@linux.vnet.ibm.com>2014-02-07 03:06:06 -0500
committerThomas Gleixner <tglx@linutronix.de>2014-02-07 09:34:29 -0500
commitda7e6f45c34d39186b72328bacc4dd86bff60e0a (patch)
tree414a48cd4d8c037c704946e10a7d2e12342214d7 /kernel/time/tick-broadcast.c
parentfe79a9ba11962a603fb6af68fcb476e64031e46c (diff)
time: Change the return type of clockevents_notify() to integer
The broadcast framework can potentially be made use of by archs which do not have an external clock device as well. Then, it is required that one of the CPUs need to handle the broadcasting of wakeup IPIs to the CPUs in deep idle. As a result its local timers should remain functional all the time. For such a CPU, the BROADCAST_ENTER notification has to fail indicating that its clock device cannot be shutdown. To make way for this support, change the return type of tick_broadcast_oneshot_control() and hence clockevents_notify() to indicate such scenarios. Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com> Cc: deepthi@linux.vnet.ibm.com Cc: paulmck@linux.vnet.ibm.com Cc: fweisbec@gmail.com Cc: paulus@samba.org Cc: srivatsa.bhat@linux.vnet.ibm.com Cc: svaidy@linux.vnet.ibm.com Cc: peterz@infradead.org Cc: benh@kernel.crashing.org Cc: rafael.j.wysocki@intel.com Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/20140207080606.17187.78306.stgit@preeti.in.ibm.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/tick-broadcast.c')
-rw-r--r--kernel/time/tick-broadcast.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 003e6c3663b1..84c8fd91d744 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -646,14 +646,15 @@ again:
646/* 646/*
647 * Powerstate information: The system enters/leaves a state, where 647 * Powerstate information: The system enters/leaves a state, where
648 * affected devices might stop 648 * affected devices might stop
649 * Returns 0 on success, -EBUSY if the cpu is used to broadcast wakeups.
649 */ 650 */
650void tick_broadcast_oneshot_control(unsigned long reason) 651int tick_broadcast_oneshot_control(unsigned long reason)
651{ 652{
652 struct clock_event_device *bc, *dev; 653 struct clock_event_device *bc, *dev;
653 struct tick_device *td; 654 struct tick_device *td;
654 unsigned long flags; 655 unsigned long flags;
655 ktime_t now; 656 ktime_t now;
656 int cpu; 657 int cpu, ret = 0;
657 658
658 /* 659 /*
659 * Periodic mode does not care about the enter/exit of power 660 * Periodic mode does not care about the enter/exit of power
@@ -759,6 +760,7 @@ void tick_broadcast_oneshot_control(unsigned long reason)
759 } 760 }
760out: 761out:
761 raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags); 762 raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags);
763 return ret;
762} 764}
763 765
764/* 766/*