diff options
author | Preeti U Murthy <preeti@linux.vnet.ibm.com> | 2014-02-07 03:06:06 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2014-02-07 09:34:29 -0500 |
commit | da7e6f45c34d39186b72328bacc4dd86bff60e0a (patch) | |
tree | 414a48cd4d8c037c704946e10a7d2e12342214d7 /kernel/time/tick-broadcast.c | |
parent | fe79a9ba11962a603fb6af68fcb476e64031e46c (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.c | 6 |
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 | */ |
650 | void tick_broadcast_oneshot_control(unsigned long reason) | 651 | int 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 | } |
760 | out: | 761 | out: |
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 | /* |