diff options
Diffstat (limited to 'kernel/sched.c')
| -rw-r--r-- | kernel/sched.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 5ae3568eed0b..396724a2519f 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -414,22 +414,6 @@ static inline runqueue_t *this_rq_lock(void) | |||
| 414 | return rq; | 414 | return rq; |
| 415 | } | 415 | } |
| 416 | 416 | ||
| 417 | #ifdef CONFIG_SCHED_SMT | ||
| 418 | static int cpu_and_siblings_are_idle(int cpu) | ||
| 419 | { | ||
| 420 | int sib; | ||
| 421 | for_each_cpu_mask(sib, cpu_sibling_map[cpu]) { | ||
| 422 | if (idle_cpu(sib)) | ||
| 423 | continue; | ||
| 424 | return 0; | ||
| 425 | } | ||
| 426 | |||
| 427 | return 1; | ||
| 428 | } | ||
| 429 | #else | ||
| 430 | #define cpu_and_siblings_are_idle(A) idle_cpu(A) | ||
| 431 | #endif | ||
| 432 | |||
| 433 | #ifdef CONFIG_SCHEDSTATS | 417 | #ifdef CONFIG_SCHEDSTATS |
| 434 | /* | 418 | /* |
| 435 | * Called when a process is dequeued from the active array and given | 419 | * Called when a process is dequeued from the active array and given |
| @@ -1652,12 +1636,11 @@ int can_migrate_task(task_t *p, runqueue_t *rq, int this_cpu, | |||
| 1652 | 1636 | ||
| 1653 | /* | 1637 | /* |
| 1654 | * Aggressive migration if: | 1638 | * Aggressive migration if: |
| 1655 | * 1) the [whole] cpu is idle, or | 1639 | * 1) task is cache cold, or |
| 1656 | * 2) too many balance attempts have failed. | 1640 | * 2) too many balance attempts have failed. |
| 1657 | */ | 1641 | */ |
| 1658 | 1642 | ||
| 1659 | if (cpu_and_siblings_are_idle(this_cpu) || \ | 1643 | if (sd->nr_balance_failed > sd->cache_nice_tries) |
| 1660 | sd->nr_balance_failed > sd->cache_nice_tries) | ||
| 1661 | return 1; | 1644 | return 1; |
| 1662 | 1645 | ||
| 1663 | if (task_hot(p, rq->timestamp_last_tick, sd)) | 1646 | if (task_hot(p, rq->timestamp_last_tick, sd)) |
