|
@@ -416,7 +416,9 @@ static void attach_msi_entry(struct msi_desc *entry, int vector)
|
|
|
|
|
|
static void irq_handler_init(int cap_id, int pos, int mask)
|
|
static void irq_handler_init(int cap_id, int pos, int mask)
|
|
{
|
|
{
|
|
- spin_lock(&irq_desc[pos].lock);
|
|
|
|
|
|
+ unsigned long flags;
|
|
|
|
+
|
|
|
|
+ spin_lock_irqsave(&irq_desc[pos].lock, flags);
|
|
if (cap_id == PCI_CAP_ID_MSIX)
|
|
if (cap_id == PCI_CAP_ID_MSIX)
|
|
irq_desc[pos].handler = &msix_irq_type;
|
|
irq_desc[pos].handler = &msix_irq_type;
|
|
else {
|
|
else {
|
|
@@ -425,7 +427,7 @@ static void irq_handler_init(int cap_id, int pos, int mask)
|
|
else
|
|
else
|
|
irq_desc[pos].handler = &msi_irq_w_maskbit_type;
|
|
irq_desc[pos].handler = &msi_irq_w_maskbit_type;
|
|
}
|
|
}
|
|
- spin_unlock(&irq_desc[pos].lock);
|
|
|
|
|
|
+ spin_unlock_irqrestore(&irq_desc[pos].lock, flags);
|
|
}
|
|
}
|
|
|
|
|
|
static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|
|
static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|