Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 18 Dec 2016 19:00:56 +0000 (11:00 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 18 Dec 2016 19:00:56 +0000 (11:00 -0800)
Pull irq fix from Thomas Gleixner:
 "A fix for the irq affinity spread algorithm so it handles non linear
  node numbering nicely"

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  genirq/affinity: Fix node generation from cpumask

kernel/irq/affinity.c

index 9be9bda..4544b11 100644 (file)
@@ -37,10 +37,10 @@ static void irq_spread_init_one(struct cpumask *irqmsk, struct cpumask *nmsk,
 
 static int get_nodes_in_cpumask(const struct cpumask *mask, nodemask_t *nodemsk)
 {
-       int n, nodes;
+       int n, nodes = 0;
 
        /* Calculate the number of nodes in the supplied affinity mask */
-       for (n = 0, nodes = 0; n < num_online_nodes(); n++) {
+       for_each_online_node(n) {
                if (cpumask_intersects(mask, cpumask_of_node(n))) {
                        node_set(n, *nodemsk);
                        nodes++;
@@ -82,7 +82,7 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd)
        nodes = get_nodes_in_cpumask(cpu_online_mask, &nodemsk);
 
        /*
-        * If the number of nodes in the mask is less than or equal the
+        * If the number of nodes in the mask is greater than or equal the
         * number of vectors we just spread the vectors across the nodes.
         */
        if (affv <= nodes) {