diff options
| -rw-r--r-- | include/linux/clockchips.h | 6 | ||||
| -rw-r--r-- | kernel/time/clockevents.c | 8 | ||||
| -rw-r--r-- | kernel/time/tick-broadcast.c | 6 | ||||
| -rw-r--r-- | kernel/time/tick-internal.h | 6 |
4 files changed, 15 insertions, 11 deletions
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 493aa021c7a9..e0c5a6c418de 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
| @@ -186,9 +186,9 @@ static inline int tick_check_broadcast_expired(void) { return 0; } | |||
| 186 | #endif | 186 | #endif |
| 187 | 187 | ||
| 188 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 188 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
| 189 | extern void clockevents_notify(unsigned long reason, void *arg); | 189 | extern int clockevents_notify(unsigned long reason, void *arg); |
| 190 | #else | 190 | #else |
| 191 | static inline void clockevents_notify(unsigned long reason, void *arg) {} | 191 | static inline int clockevents_notify(unsigned long reason, void *arg) { return 0; } |
| 192 | #endif | 192 | #endif |
| 193 | 193 | ||
| 194 | #else /* CONFIG_GENERIC_CLOCKEVENTS_BUILD */ | 194 | #else /* CONFIG_GENERIC_CLOCKEVENTS_BUILD */ |
| @@ -196,7 +196,7 @@ static inline void clockevents_notify(unsigned long reason, void *arg) {} | |||
| 196 | static inline void clockevents_suspend(void) {} | 196 | static inline void clockevents_suspend(void) {} |
| 197 | static inline void clockevents_resume(void) {} | 197 | static inline void clockevents_resume(void) {} |
| 198 | 198 | ||
| 199 | static inline void clockevents_notify(unsigned long reason, void *arg) {} | 199 | static inline int clockevents_notify(unsigned long reason, void *arg) { return 0; } |
| 200 | static inline int tick_check_broadcast_expired(void) { return 0; } | 200 | static inline int tick_check_broadcast_expired(void) { return 0; } |
| 201 | 201 | ||
| 202 | #endif | 202 | #endif |
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index f85e5fda9c66..ad362c260ef4 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c | |||
| @@ -542,12 +542,13 @@ void clockevents_resume(void) | |||
| 542 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 542 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
| 543 | /** | 543 | /** |
| 544 | * clockevents_notify - notification about relevant events | 544 | * clockevents_notify - notification about relevant events |
| 545 | * Returns 0 on success, any other value on error | ||
| 545 | */ | 546 | */ |
| 546 | void clockevents_notify(unsigned long reason, void *arg) | 547 | int clockevents_notify(unsigned long reason, void *arg) |
| 547 | { | 548 | { |
| 548 | struct clock_event_device *dev, *tmp; | 549 | struct clock_event_device *dev, *tmp; |
| 549 | unsigned long flags; | 550 | unsigned long flags; |
| 550 | int cpu; | 551 | int cpu, ret = 0; |
| 551 | 552 | ||
| 552 | raw_spin_lock_irqsave(&clockevents_lock, flags); | 553 | raw_spin_lock_irqsave(&clockevents_lock, flags); |
| 553 | 554 | ||
| @@ -560,7 +561,7 @@ void clockevents_notify(unsigned long reason, void *arg) | |||
| 560 | 561 | ||
| 561 | case CLOCK_EVT_NOTIFY_BROADCAST_ENTER: | 562 | case CLOCK_EVT_NOTIFY_BROADCAST_ENTER: |
| 562 | case CLOCK_EVT_NOTIFY_BROADCAST_EXIT: | 563 | case CLOCK_EVT_NOTIFY_BROADCAST_EXIT: |
| 563 | tick_broadcast_oneshot_control(reason); | 564 | ret = tick_broadcast_oneshot_control(reason); |
| 564 | break; | 565 | break; |
| 565 | 566 | ||
| 566 | case CLOCK_EVT_NOTIFY_CPU_DYING: | 567 | case CLOCK_EVT_NOTIFY_CPU_DYING: |
| @@ -603,6 +604,7 @@ void clockevents_notify(unsigned long reason, void *arg) | |||
| 603 | break; | 604 | break; |
| 604 | } | 605 | } |
| 605 | raw_spin_unlock_irqrestore(&clockevents_lock, flags); | 606 | raw_spin_unlock_irqrestore(&clockevents_lock, flags); |
| 607 | return ret; | ||
| 606 | } | 608 | } |
| 607 | EXPORT_SYMBOL_GPL(clockevents_notify); | 609 | EXPORT_SYMBOL_GPL(clockevents_notify); |
| 608 | 610 | ||
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 | /* |
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h index 26f1c0ba9d81..0756c62c219a 100644 --- a/kernel/time/tick-internal.h +++ b/kernel/time/tick-internal.h | |||
| @@ -46,7 +46,7 @@ extern int tick_switch_to_oneshot(void (*handler)(struct clock_event_device *)); | |||
| 46 | extern void tick_resume_oneshot(void); | 46 | extern void tick_resume_oneshot(void); |
| 47 | # ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST | 47 | # ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST |
| 48 | extern void tick_broadcast_setup_oneshot(struct clock_event_device *bc); | 48 | extern void tick_broadcast_setup_oneshot(struct clock_event_device *bc); |
| 49 | extern void tick_broadcast_oneshot_control(unsigned long reason); | 49 | extern int tick_broadcast_oneshot_control(unsigned long reason); |
| 50 | extern void tick_broadcast_switch_to_oneshot(void); | 50 | extern void tick_broadcast_switch_to_oneshot(void); |
| 51 | extern void tick_shutdown_broadcast_oneshot(unsigned int *cpup); | 51 | extern void tick_shutdown_broadcast_oneshot(unsigned int *cpup); |
| 52 | extern int tick_resume_broadcast_oneshot(struct clock_event_device *bc); | 52 | extern int tick_resume_broadcast_oneshot(struct clock_event_device *bc); |
| @@ -58,7 +58,7 @@ static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) | |||
| 58 | { | 58 | { |
| 59 | BUG(); | 59 | BUG(); |
| 60 | } | 60 | } |
| 61 | static inline void tick_broadcast_oneshot_control(unsigned long reason) { } | 61 | static inline int tick_broadcast_oneshot_control(unsigned long reason) { return 0; } |
| 62 | static inline void tick_broadcast_switch_to_oneshot(void) { } | 62 | static inline void tick_broadcast_switch_to_oneshot(void) { } |
| 63 | static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { } | 63 | static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { } |
| 64 | static inline int tick_broadcast_oneshot_active(void) { return 0; } | 64 | static inline int tick_broadcast_oneshot_active(void) { return 0; } |
| @@ -87,7 +87,7 @@ static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) | |||
| 87 | { | 87 | { |
| 88 | BUG(); | 88 | BUG(); |
| 89 | } | 89 | } |
| 90 | static inline void tick_broadcast_oneshot_control(unsigned long reason) { } | 90 | static inline int tick_broadcast_oneshot_control(unsigned long reason) { return 0; } |
| 91 | static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { } | 91 | static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { } |
| 92 | static inline int tick_resume_broadcast_oneshot(struct clock_event_device *bc) | 92 | static inline int tick_resume_broadcast_oneshot(struct clock_event_device *bc) |
| 93 | { | 93 | { |
