[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 1/9] xen/smp: Coalesce the free_irq calls in one function.



There are two functions that do a bunch of 'free_irq' on
the per_cpu IRQ. Instead of having duplicate code just move
it to one function.

This is just code movement.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 arch/x86/xen/smp.c | 40 +++++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index fb44426..19fc9f3 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -98,6 +98,23 @@ static void __cpuinit cpu_bringup_and_idle(void)
        cpu_startup_entry(CPUHP_ONLINE);
 }
 
+static void xen_smp_intr_free(unsigned int cpu)
+{
+       if (per_cpu(xen_resched_irq, cpu) >= 0)
+               unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL);
+       if (per_cpu(xen_callfunc_irq, cpu) >= 0)
+               unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL);
+       if (per_cpu(xen_debug_irq, cpu) >= 0)
+               unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL);
+       if (per_cpu(xen_callfuncsingle_irq, cpu) >= 0)
+               unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu),
+                                      NULL);
+       if (xen_hvm_domain())
+               return;
+
+       if (per_cpu(xen_irq_work, cpu) >= 0)
+               unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL);
+};
 static int xen_smp_intr_init(unsigned int cpu)
 {
        int rc;
@@ -165,21 +182,7 @@ static int xen_smp_intr_init(unsigned int cpu)
        return 0;
 
  fail:
-       if (per_cpu(xen_resched_irq, cpu) >= 0)
-               unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL);
-       if (per_cpu(xen_callfunc_irq, cpu) >= 0)
-               unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL);
-       if (per_cpu(xen_debug_irq, cpu) >= 0)
-               unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL);
-       if (per_cpu(xen_callfuncsingle_irq, cpu) >= 0)
-               unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu),
-                                      NULL);
-       if (xen_hvm_domain())
-               return rc;
-
-       if (per_cpu(xen_irq_work, cpu) >= 0)
-               unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL);
-
+       xen_smp_intr_free(cpu);
        return rc;
 }
 
@@ -432,12 +435,7 @@ static void xen_cpu_die(unsigned int cpu)
                current->state = TASK_UNINTERRUPTIBLE;
                schedule_timeout(HZ/10);
        }
-       unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL);
-       unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL);
-       unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL);
-       unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL);
-       if (!xen_hvm_domain())
-               unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL);
+       xen_smp_intr_free(cpu);
        xen_uninit_lock_cpu(cpu);
        xen_teardown_timer(cpu);
 }
-- 
1.8.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.