OSDN Git Service

x86: Use entering[_ack]_irq() instead of open coding it
authorThomas Gleixner <tglx@linutronix.de>
Fri, 15 May 2015 13:48:25 +0000 (15:48 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 15 May 2015 14:03:18 +0000 (16:03 +0200)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/apic/vector.c
arch/x86/kernel/cpu/mshyperv.c
arch/x86/kernel/irq.c

index b590c9d..28eba2d 100644 (file)
@@ -542,9 +542,7 @@ asmlinkage __visible void smp_irq_move_cleanup_interrupt(void)
 {
        unsigned vector, me;
 
-       ack_APIC_irq();
-       irq_enter();
-       exit_idle();
+       entering_ack_irq();
 
        me = smp_processor_id();
        for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) {
@@ -596,7 +594,7 @@ unlock:
                raw_spin_unlock(&desc->lock);
        }
 
-       irq_exit();
+       exiting_irq();
 }
 
 static void __irq_complete_move(struct irq_cfg *cfg, unsigned vector)
index 939155f..aad4bd8 100644 (file)
@@ -39,14 +39,12 @@ void hyperv_vector_handler(struct pt_regs *regs)
 {
        struct pt_regs *old_regs = set_irq_regs(regs);
 
-       irq_enter();
-       exit_idle();
-
+       entering_irq();
        inc_irq_stat(irq_hv_callback_count);
        if (vmbus_handler)
                vmbus_handler();
 
-       irq_exit();
+       exiting_irq();
        set_irq_regs(old_regs);
 }
 
index fe2ed8b..be38945 100644 (file)
@@ -198,8 +198,7 @@ __visible unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
        unsigned vector = ~regs->orig_ax;
        unsigned irq;
 
-       irq_enter();
-       exit_idle();
+       entering_irq();
 
        irq = __this_cpu_read(vector_irq[vector]);
 
@@ -215,7 +214,7 @@ __visible unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
                }
        }
 
-       irq_exit();
+       exiting_irq();
 
        set_irq_regs(old_regs);
        return 1;
@@ -250,16 +249,9 @@ __visible void smp_kvm_posted_intr_ipi(struct pt_regs *regs)
 {
        struct pt_regs *old_regs = set_irq_regs(regs);
 
-       ack_APIC_irq();
-
-       irq_enter();
-
-       exit_idle();
-
+       entering_ack_irq();
        inc_irq_stat(kvm_posted_intr_ipis);
-
-       irq_exit();
-
+       exiting_irq();
        set_irq_regs(old_regs);
 }
 #endif