diff options
| author | Paul Mackerras <paulus@samba.org> | 2006-02-08 09:43:08 +1100 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2006-02-08 09:43:08 +1100 |
| commit | 8f75015f33c3005e0bbf83ffc0d5e0b4262cc03d (patch) | |
| tree | a3c34ad86ccdc904bb43af6cd1cb163231c29276 /drivers/pci/msi.c | |
| parent | 076d022c566fddde41fd4a858dd24bacad8304d7 (diff) | |
| parent | e060e084e7d9e1c62d02cb6b8d3fe07db5317eaa (diff) | |
| download | lwn-8f75015f33c3005e0bbf83ffc0d5e0b4262cc03d.tar.gz lwn-8f75015f33c3005e0bbf83ffc0d5e0b4262cc03d.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
Diffstat (limited to 'drivers/pci/msi.c')
| -rw-r--r-- | drivers/pci/msi.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 202b7507a357..48723d6fa60f 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -137,6 +137,8 @@ static void set_msi_affinity(unsigned int vector, cpumask_t cpu_mask) break; } } +#else +#define set_msi_affinity NULL #endif /* CONFIG_SMP */ static void mask_MSI_irq(unsigned int vector) @@ -214,7 +216,7 @@ static struct hw_interrupt_type msix_irq_type = { .disable = mask_MSI_irq, .ack = mask_MSI_irq, .end = end_msi_irq_w_maskbit, - .set_affinity = set_msi_irq_affinity + .set_affinity = set_msi_affinity }; /* @@ -230,7 +232,7 @@ static struct hw_interrupt_type msi_irq_w_maskbit_type = { .disable = mask_MSI_irq, .ack = mask_MSI_irq, .end = end_msi_irq_w_maskbit, - .set_affinity = set_msi_irq_affinity + .set_affinity = set_msi_affinity }; /* @@ -246,7 +248,7 @@ static struct hw_interrupt_type msi_irq_wo_maskbit_type = { .disable = do_nothing, .ack = do_nothing, .end = end_msi_irq_wo_maskbit, - .set_affinity = set_msi_irq_affinity + .set_affinity = set_msi_affinity }; static void msi_data_init(struct msg_data *msi_data, @@ -416,7 +418,9 @@ static void attach_msi_entry(struct msi_desc *entry, int vector) 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) irq_desc[pos].handler = &msix_irq_type; else { @@ -425,7 +429,7 @@ static void irq_handler_init(int cap_id, int pos, int mask) else 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) |
