|
@@ -6589,6 +6589,13 @@ void idle_balance(struct rq *this_rq)
|
|
|
|
|
|
|
|
raw_spin_lock(&this_rq->lock);
|
|
raw_spin_lock(&this_rq->lock);
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * While browsing the domains, we released the rq lock.
|
|
|
|
|
+ * A task could have be enqueued in the meantime
|
|
|
|
|
+ */
|
|
|
|
|
+ if (this_rq->nr_running && !pulled_task)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
if (pulled_task || time_after(jiffies, this_rq->next_balance)) {
|
|
if (pulled_task || time_after(jiffies, this_rq->next_balance)) {
|
|
|
/*
|
|
/*
|
|
|
* We are going idle. next_balance may be set based on
|
|
* We are going idle. next_balance may be set based on
|