Loading drivers/cpuidle/governors/menu.c +12 −17 Original line number Diff line number Diff line Loading @@ -287,20 +287,15 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, return 0; } if (tick_nohz_tick_stopped()) { /* * If the tick is already stopped, the cost of possible short * idle duration misprediction is much higher, because the CPU * may be stuck in a shallow idle state for a long time as a * result of it. In that case say we might mispredict and use * the known time till the closest timer event for the idle * state selection. * If the tick is already stopped, the cost of possible short idle * duration misprediction is much higher, because the CPU may be stuck * in a shallow idle state for a long time as a result of it. In that * case, say we might mispredict and use the known time till the closest * timer event for the idle state selection. */ if (predicted_ns < TICK_NSEC) if (tick_nohz_tick_stopped() && predicted_ns < TICK_NSEC) predicted_ns = data->next_timer_ns; } else if (latency_req > predicted_ns) { latency_req = predicted_ns; } /* * Find the idle state with the lowest power while satisfying Loading @@ -316,13 +311,15 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, if (idx == -1) idx = i; /* first enabled state */ if (s->exit_latency_ns > latency_req) break; if (s->target_residency_ns > predicted_ns) { /* * Use a physical idle state, not busy polling, unless * a timer is going to trigger soon enough. */ if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) && s->exit_latency_ns <= latency_req && s->target_residency_ns <= data->next_timer_ns) { predicted_ns = s->target_residency_ns; idx = i; Loading Loading @@ -354,8 +351,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, return idx; } if (s->exit_latency_ns > latency_req) break; idx = i; } Loading Loading
drivers/cpuidle/governors/menu.c +12 −17 Original line number Diff line number Diff line Loading @@ -287,20 +287,15 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, return 0; } if (tick_nohz_tick_stopped()) { /* * If the tick is already stopped, the cost of possible short * idle duration misprediction is much higher, because the CPU * may be stuck in a shallow idle state for a long time as a * result of it. In that case say we might mispredict and use * the known time till the closest timer event for the idle * state selection. * If the tick is already stopped, the cost of possible short idle * duration misprediction is much higher, because the CPU may be stuck * in a shallow idle state for a long time as a result of it. In that * case, say we might mispredict and use the known time till the closest * timer event for the idle state selection. */ if (predicted_ns < TICK_NSEC) if (tick_nohz_tick_stopped() && predicted_ns < TICK_NSEC) predicted_ns = data->next_timer_ns; } else if (latency_req > predicted_ns) { latency_req = predicted_ns; } /* * Find the idle state with the lowest power while satisfying Loading @@ -316,13 +311,15 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, if (idx == -1) idx = i; /* first enabled state */ if (s->exit_latency_ns > latency_req) break; if (s->target_residency_ns > predicted_ns) { /* * Use a physical idle state, not busy polling, unless * a timer is going to trigger soon enough. */ if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) && s->exit_latency_ns <= latency_req && s->target_residency_ns <= data->next_timer_ns) { predicted_ns = s->target_residency_ns; idx = i; Loading Loading @@ -354,8 +351,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, return idx; } if (s->exit_latency_ns > latency_req) break; idx = i; } Loading