struct ehci_hcd         *ehci = hcd_to_ehci (hcd);
        u32                     status, masked_status, pcd_status = 0, cmd;
        int                     bh;
-       unsigned long           flags;
 
-       /*
-        * For threadirqs option we use spin_lock_irqsave() variant to prevent
-        * deadlock with ehci hrtimer callback, because hrtimer callbacks run
-        * in interrupt context even when threadirqs is specified. We can go
-        * back to spin_lock() variant when hrtimer callbacks become threaded.
-        */
-       spin_lock_irqsave(&ehci->lock, flags);
+       spin_lock(&ehci->lock);
 
        status = ehci_readl(ehci, &ehci->regs->status);
 
 
        /* Shared IRQ? */
        if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
-               spin_unlock_irqrestore(&ehci->lock, flags);
+               spin_unlock(&ehci->lock);
                return IRQ_NONE;
        }
 
 
        if (bh)
                ehci_work (ehci);
-       spin_unlock_irqrestore(&ehci->lock, flags);
+       spin_unlock(&ehci->lock);
        if (pcd_status)
                usb_hcd_poll_rh_status(hcd);
        return IRQ_HANDLED;