{
        struct flexcop_pci *fc_pci = dev_id;
        struct flexcop_device *fc = fc_pci->fc_dev;
+       unsigned long flags;
        flexcop_ibi_value v;
        irqreturn_t ret = IRQ_HANDLED;
 
-       spin_lock_irq(&fc_pci->irq_lock);
+       spin_lock_irqsave(&fc_pci->irq_lock,flags);
 
        v = fc->read_ibi_reg(fc,irq_20c);
 
                ret = IRQ_NONE;
        }
 
-       spin_unlock_irq(&fc_pci->irq_lock);
+       spin_unlock_irqrestore(&fc_pci->irq_lock,flags);
 
        return ret;
 }
        }
 
        pci_set_drvdata(fc_pci->pdev, fc_pci);
-
+       spin_lock_init(&fc_pci->irq_lock);
        if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr,
                                        IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
                goto err_pci_iounmap;
 
-       spin_lock_init(&fc_pci->irq_lock);
+
 
        fc_pci->init_state |= FC_PCI_INIT;
        return ret;