diff options
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 518b542cad54..86e805986d6f 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -118,6 +118,7 @@ int cpuidle_idle_call(void) | |||
118 | struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); | 118 | struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices); |
119 | struct cpuidle_driver *drv; | 119 | struct cpuidle_driver *drv; |
120 | int next_state, entered_state; | 120 | int next_state, entered_state; |
121 | bool broadcast; | ||
121 | 122 | ||
122 | if (off || !initialized) | 123 | if (off || !initialized) |
123 | return -ENODEV; | 124 | return -ENODEV; |
@@ -141,7 +142,9 @@ int cpuidle_idle_call(void) | |||
141 | 142 | ||
142 | trace_cpu_idle_rcuidle(next_state, dev->cpu); | 143 | trace_cpu_idle_rcuidle(next_state, dev->cpu); |
143 | 144 | ||
144 | if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP) | 145 | broadcast = !!(drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP); |
146 | |||
147 | if (broadcast) | ||
145 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, | 148 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, |
146 | &dev->cpu); | 149 | &dev->cpu); |
147 | 150 | ||
@@ -151,7 +154,7 @@ int cpuidle_idle_call(void) | |||
151 | else | 154 | else |
152 | entered_state = cpuidle_enter_state(dev, drv, next_state); | 155 | entered_state = cpuidle_enter_state(dev, drv, next_state); |
153 | 156 | ||
154 | if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP) | 157 | if (broadcast) |
155 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, | 158 | clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, |
156 | &dev->cpu); | 159 | &dev->cpu); |
157 | 160 | ||