diff options
Diffstat (limited to 'kernel/sched_fair.c')
-rw-r--r-- | kernel/sched_fair.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index a78ed2736ba..8a39fa3e3c6 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -2352,13 +2352,11 @@ again: | |||
2352 | if (!smt && (sd->flags & SD_SHARE_CPUPOWER)) | 2352 | if (!smt && (sd->flags & SD_SHARE_CPUPOWER)) |
2353 | continue; | 2353 | continue; |
2354 | 2354 | ||
2355 | if (!(sd->flags & SD_SHARE_PKG_RESOURCES)) { | 2355 | if (smt && !(sd->flags & SD_SHARE_CPUPOWER)) |
2356 | if (!smt) { | 2356 | break; |
2357 | smt = 1; | 2357 | |
2358 | goto again; | 2358 | if (!(sd->flags & SD_SHARE_PKG_RESOURCES)) |
2359 | } | ||
2360 | break; | 2359 | break; |
2361 | } | ||
2362 | 2360 | ||
2363 | sg = sd->groups; | 2361 | sg = sd->groups; |
2364 | do { | 2362 | do { |
@@ -2378,6 +2376,10 @@ next: | |||
2378 | sg = sg->next; | 2376 | sg = sg->next; |
2379 | } while (sg != sd->groups); | 2377 | } while (sg != sd->groups); |
2380 | } | 2378 | } |
2379 | if (!smt) { | ||
2380 | smt = 1; | ||
2381 | goto again; | ||
2382 | } | ||
2381 | done: | 2383 | done: |
2382 | rcu_read_unlock(); | 2384 | rcu_read_unlock(); |
2383 | 2385 | ||