Commit eb3a3c07 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

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
parents 52f40e9d c0af5243
...@@ -37,10 +37,10 @@ static void irq_spread_init_one(struct cpumask *irqmsk, struct cpumask *nmsk, ...@@ -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) 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 */ /* 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))) { if (cpumask_intersects(mask, cpumask_of_node(n))) {
node_set(n, *nodemsk); node_set(n, *nodemsk);
nodes++; nodes++;
...@@ -82,7 +82,7 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd) ...@@ -82,7 +82,7 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd)
nodes = get_nodes_in_cpumask(cpu_online_mask, &nodemsk); 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. * number of vectors we just spread the vectors across the nodes.
*/ */
if (affv <= nodes) { if (affv <= nodes) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment