aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/msi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/msi.c')
-rw-r--r--drivers/pci/msi.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 066c2fb9763a..d9a92cf6a6d6 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -164,7 +164,7 @@ static inline __attribute_const__ u32 msi_mask(unsigned x)
164 * reliably as devices without an INTx disable bit will then generate a 164 * reliably as devices without an INTx disable bit will then generate a
165 * level IRQ which will never be cleared. 165 * level IRQ which will never be cleared.
166 */ 166 */
167u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) 167u32 __msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
168{ 168{
169 u32 mask_bits = desc->masked; 169 u32 mask_bits = desc->masked;
170 170
@@ -178,14 +178,9 @@ u32 default_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
178 return mask_bits; 178 return mask_bits;
179} 179}
180 180
181__weak u32 arch_msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
182{
183 return default_msi_mask_irq(desc, mask, flag);
184}
185
186static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag) 181static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
187{ 182{
188 desc->masked = arch_msi_mask_irq(desc, mask, flag); 183 desc->masked = __msi_mask_irq(desc, mask, flag);
189} 184}
190 185
191/* 186/*
@@ -195,7 +190,7 @@ static void msi_mask_irq(struct msi_desc *desc, u32 mask, u32 flag)
195 * file. This saves a few milliseconds when initialising devices with lots 190 * file. This saves a few milliseconds when initialising devices with lots
196 * of MSI-X interrupts. 191 * of MSI-X interrupts.
197 */ 192 */
198u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag) 193u32 __msix_mask_irq(struct msi_desc *desc, u32 flag)
199{ 194{
200 u32 mask_bits = desc->masked; 195 u32 mask_bits = desc->masked;
201 unsigned offset = desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE + 196 unsigned offset = desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE +
@@ -212,14 +207,9 @@ u32 default_msix_mask_irq(struct msi_desc *desc, u32 flag)
212 return mask_bits; 207 return mask_bits;
213} 208}
214 209
215__weak u32 arch_msix_mask_irq(struct msi_desc *desc, u32 flag)
216{
217 return default_msix_mask_irq(desc, flag);
218}
219
220static void msix_mask_irq(struct msi_desc *desc, u32 flag) 210static void msix_mask_irq(struct msi_desc *desc, u32 flag)
221{ 211{
222 desc->masked = arch_msix_mask_irq(desc, flag); 212 desc->masked = __msix_mask_irq(desc, flag);
223} 213}
224 214
225static void msi_set_mask_bit(struct irq_data *data, u32 flag) 215static void msi_set_mask_bit(struct irq_data *data, u32 flag)
@@ -874,7 +864,7 @@ void pci_msi_shutdown(struct pci_dev *dev)
874 /* Return the device with MSI unmasked as initial states */ 864 /* Return the device with MSI unmasked as initial states */
875 mask = msi_mask(desc->msi_attrib.multi_cap); 865 mask = msi_mask(desc->msi_attrib.multi_cap);
876 /* Keep cached state to be restored */ 866 /* Keep cached state to be restored */
877 arch_msi_mask_irq(desc, mask, ~mask); 867 __msi_mask_irq(desc, mask, ~mask);
878 868
879 /* Restore dev->irq to its default pin-assertion irq */ 869 /* Restore dev->irq to its default pin-assertion irq */
880 dev->irq = desc->msi_attrib.default_irq; 870 dev->irq = desc->msi_attrib.default_irq;
@@ -972,7 +962,7 @@ void pci_msix_shutdown(struct pci_dev *dev)
972 /* Return the device with MSI-X masked as initial states */ 962 /* Return the device with MSI-X masked as initial states */
973 list_for_each_entry(entry, &dev->msi_list, list) { 963 list_for_each_entry(entry, &dev->msi_list, list) {
974 /* Keep cached states to be restored */ 964 /* Keep cached states to be restored */
975 arch_msix_mask_irq(entry, 1); 965 __msix_mask_irq(entry, 1);
976 } 966 }
977 967
978 msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0); 968 msix_clear_and_set_ctrl(dev, PCI_MSIX_FLAGS_ENABLE, 0);