void
 handle_level_irq(unsigned int irq, struct irq_desc *desc)
 {
-       struct irqaction *action;
-       irqreturn_t action_ret;
-
        raw_spin_lock(&desc->lock);
        mask_ack_irq(desc);
 
         * If its disabled or no action available
         * keep it masked and get out of here
         */
-       action = desc->action;
-       if (unlikely(!action || (desc->status & IRQ_DISABLED)))
+       if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
                goto out_unlock;
 
-       desc->status |= IRQ_INPROGRESS;
-       raw_spin_unlock(&desc->lock);
-
-       action_ret = handle_IRQ_event(irq, action);
-       if (!noirqdebug)
-               note_interrupt(irq, desc, action_ret);
-
-       raw_spin_lock(&desc->lock);
-       desc->status &= ~IRQ_INPROGRESS;
+       handle_irq_event(desc);
 
        if (!(desc->status & (IRQ_DISABLED | IRQ_ONESHOT)))
                unmask_irq(desc);