Merge tag 'v3.18' into p/abusse/merge_upgrade
[projects/modsched/linux.git] / kernel / sched / idle.c
index b5af7b6..d00c2d7 100644 (file)
@@ -151,6 +151,9 @@ use_default:
            clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu))
                goto use_default;
 
            clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu))
                goto use_default;
 
+       /* Take note of the planned idle state. */
+       idle_set_state(this_rq(), &drv->states[next_state]);
+
        /*
         * Enter the idle state previously returned by the governor decision.
         * This function will block until an interrupt occurs and will take
        /*
         * Enter the idle state previously returned by the governor decision.
         * This function will block until an interrupt occurs and will take
@@ -158,6 +161,9 @@ use_default:
         */
        entered_state = cpuidle_enter(drv, dev, next_state);
 
         */
        entered_state = cpuidle_enter(drv, dev, next_state);
 
+       /* The cpu is no longer idle or about to enter idle. */
+       idle_set_state(this_rq(), NULL);
+
        if (broadcast)
                clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
 
        if (broadcast)
                clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);