Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[muen/linux.git] / arch / x86 / kernel / apic / vector.c
index 35aaee4fc0287adde2e59186fc7bd093a3015cdd..0954315842c09cf627dd448d858c822a529a455a 100644 (file)
@@ -218,7 +218,8 @@ static int reserve_irq_vector(struct irq_data *irqd)
        return 0;
 }
 
-static int allocate_vector(struct irq_data *irqd, const struct cpumask *dest)
+static int
+assign_vector_locked(struct irq_data *irqd, const struct cpumask *dest)
 {
        struct apic_chip_data *apicd = apic_chip_data(irqd);
        bool resvd = apicd->has_reserved;
@@ -245,22 +246,12 @@ static int allocate_vector(struct irq_data *irqd, const struct cpumask *dest)
                return -EBUSY;
 
        vector = irq_matrix_alloc(vector_matrix, dest, resvd, &cpu);
-       if (vector > 0)
-               apic_update_vector(irqd, vector, cpu);
        trace_vector_alloc(irqd->irq, vector, resvd, vector);
-       return vector;
-}
-
-static int assign_vector_locked(struct irq_data *irqd,
-                               const struct cpumask *dest)
-{
-       struct apic_chip_data *apicd = apic_chip_data(irqd);
-       int vector = allocate_vector(irqd, dest);
-
        if (vector < 0)
                return vector;
+       apic_update_vector(irqd, vector, cpu);
+       apic_update_irq_cfg(irqd, vector, cpu);
 
-       apic_update_irq_cfg(irqd, apicd->vector, apicd->cpu);
        return 0;
 }
 
@@ -433,7 +424,7 @@ static int activate_managed(struct irq_data *irqd)
                pr_err("Managed startup irq %u, no vector available\n",
                       irqd->irq);
        }
-       return ret;
+       return ret;
 }
 
 static int x86_vector_activate(struct irq_domain *dom, struct irq_data *irqd,