SD_PREFER_SIBLING is currently considered in sd_parent_degenerate() but not in sd_degenerate(). It too hinges on load balancing, and thus won't have any effect when set on a domain with a single group. Add it to SD_DEGENERATE_GROUPS_MASK.
Showing the changes to kernel (1 of 2 files). Show all
Unified · Split
| @@ -184,7 +184,7 @@ sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent) · 183 unmodified lines | |||
| 184 | 184 | ||
| 185 | /* Flags needing groups don't count if only 1 group in parent */ | 185 | /* Flags needing groups don't count if only 1 group in parent */ |
| 186 | if (parent->groups == parent->groups->next) | 186 | if (parent->groups == parent->groups->next) |
| 187 | pflags &= ~(SD_DEGENERATE_GROUPS_MASK | SD_PREFER_SIBLING); | 187 | pflags &= ~SD_DEGENERATE_GROUPS_MASK; |
| 188 | 188 | ||
| 189 | if (~cflags & pflags) | 189 | if (~cflags & pflags) |
| 190 | return 0; | 190 | return 0; |