diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 1a8252385c4d..9f7980f8ec00 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -6448,7 +6448,7 @@ init_sched_build_groups(cpumask_t span, const cpumask_t *cpu_map, | |||
| 6448 | * | 6448 | * |
| 6449 | * Should use nodemask_t. | 6449 | * Should use nodemask_t. |
| 6450 | */ | 6450 | */ |
| 6451 | static int find_next_best_node(int node, unsigned long *used_nodes) | 6451 | static int find_next_best_node(int node, nodemask_t *used_nodes) |
| 6452 | { | 6452 | { |
| 6453 | int i, n, val, min_val, best_node = 0; | 6453 | int i, n, val, min_val, best_node = 0; |
| 6454 | 6454 | ||
| @@ -6462,7 +6462,7 @@ static int find_next_best_node(int node, unsigned long *used_nodes) | |||
| 6462 | continue; | 6462 | continue; |
| 6463 | 6463 | ||
| 6464 | /* Skip already used nodes */ | 6464 | /* Skip already used nodes */ |
| 6465 | if (test_bit(n, used_nodes)) | 6465 | if (node_isset(n, *used_nodes)) |
| 6466 | continue; | 6466 | continue; |
| 6467 | 6467 | ||
| 6468 | /* Simple min distance search */ | 6468 | /* Simple min distance search */ |
| @@ -6474,14 +6474,13 @@ static int find_next_best_node(int node, unsigned long *used_nodes) | |||
| 6474 | } | 6474 | } |
| 6475 | } | 6475 | } |
| 6476 | 6476 | ||
| 6477 | set_bit(best_node, used_nodes); | 6477 | node_set(best_node, *used_nodes); |
| 6478 | return best_node; | 6478 | return best_node; |
| 6479 | } | 6479 | } |
| 6480 | 6480 | ||
| 6481 | /** | 6481 | /** |
| 6482 | * sched_domain_node_span - get a cpumask for a node's sched_domain | 6482 | * sched_domain_node_span - get a cpumask for a node's sched_domain |
| 6483 | * @node: node whose cpumask we're constructing | 6483 | * @node: node whose cpumask we're constructing |
| 6484 | * @size: number of nodes to include in this span | ||
| 6485 | * | 6484 | * |
| 6486 | * Given a node, construct a good cpumask for its sched_domain to span. It | 6485 | * Given a node, construct a good cpumask for its sched_domain to span. It |
| 6487 | * should be one that prevents unnecessary balancing, but also spreads tasks | 6486 | * should be one that prevents unnecessary balancing, but also spreads tasks |
| @@ -6489,22 +6488,22 @@ static int find_next_best_node(int node, unsigned long *used_nodes) | |||
| 6489 | */ | 6488 | */ |
| 6490 | static cpumask_t sched_domain_node_span(int node) | 6489 | static cpumask_t sched_domain_node_span(int node) |
| 6491 | { | 6490 | { |
| 6492 | DECLARE_BITMAP(used_nodes, MAX_NUMNODES); | 6491 | nodemask_t used_nodes; |
| 6493 | cpumask_t span, nodemask; | 6492 | cpumask_t span; |
| 6493 | node_to_cpumask_ptr(nodemask, node); | ||
| 6494 | int i; | 6494 | int i; |
| 6495 | 6495 | ||
| 6496 | cpus_clear(span); | 6496 | cpus_clear(span); |
| 6497 | bitmap_zero(used_nodes, MAX_NUMNODES); | 6497 | nodes_clear(used_nodes); |
| 6498 | 6498 | ||
| 6499 | nodemask = node_to_cpumask(node); | 6499 | cpus_or(span, span, *nodemask); |
| 6500 | cpus_or(span, span, nodemask); | 6500 | node_set(node, used_nodes); |
| 6501 | set_bit(node, used_nodes); | ||
| 6502 | 6501 | ||
| 6503 | for (i = 1; i < SD_NODES_PER_DOMAIN; i++) { | 6502 | for (i = 1; i < SD_NODES_PER_DOMAIN; i++) { |
| 6504 | int next_node = find_next_best_node(node, used_nodes); | 6503 | int next_node = find_next_best_node(node, &used_nodes); |
| 6505 | 6504 | ||
| 6506 | nodemask = node_to_cpumask(next_node); | 6505 | node_to_cpumask_ptr_next(nodemask, next_node); |
| 6507 | cpus_or(span, span, nodemask); | 6506 | cpus_or(span, span, *nodemask); |
| 6508 | } | 6507 | } |
| 6509 | 6508 | ||
| 6510 | return span; | 6509 | return span; |
| @@ -6901,6 +6900,7 @@ static int build_sched_domains(const cpumask_t *cpu_map) | |||
| 6901 | for (j = 0; j < MAX_NUMNODES; j++) { | 6900 | for (j = 0; j < MAX_NUMNODES; j++) { |
| 6902 | cpumask_t tmp, notcovered; | 6901 | cpumask_t tmp, notcovered; |
| 6903 | int n = (i + j) % MAX_NUMNODES; | 6902 | int n = (i + j) % MAX_NUMNODES; |
| 6903 | node_to_cpumask_ptr(pnodemask, n); | ||
| 6904 | 6904 | ||
| 6905 | cpus_complement(notcovered, covered); | 6905 | cpus_complement(notcovered, covered); |
| 6906 | cpus_and(tmp, notcovered, *cpu_map); | 6906 | cpus_and(tmp, notcovered, *cpu_map); |
| @@ -6908,8 +6908,7 @@ static int build_sched_domains(const cpumask_t *cpu_map) | |||
| 6908 | if (cpus_empty(tmp)) | 6908 | if (cpus_empty(tmp)) |
| 6909 | break; | 6909 | break; |
| 6910 | 6910 | ||
| 6911 | nodemask = node_to_cpumask(n); | 6911 | cpus_and(tmp, tmp, *pnodemask); |
| 6912 | cpus_and(tmp, tmp, nodemask); | ||
| 6913 | if (cpus_empty(tmp)) | 6912 | if (cpus_empty(tmp)) |
| 6914 | continue; | 6913 | continue; |
| 6915 | 6914 | ||
