|
@@ -558,12 +558,12 @@ static int msi_free_irqs(struct pci_dev* dev)
|
|
|
|
|
|
list_for_each_entry_safe(entry, tmp, &dev->msi_list, list) {
|
|
list_for_each_entry_safe(entry, tmp, &dev->msi_list, list) {
|
|
if (entry->msi_attrib.type == PCI_CAP_ID_MSIX) {
|
|
if (entry->msi_attrib.type == PCI_CAP_ID_MSIX) {
|
|
- if (list_is_last(&entry->list, &dev->msi_list))
|
|
|
|
- iounmap(entry->mask_base);
|
|
|
|
-
|
|
|
|
writel(1, entry->mask_base + entry->msi_attrib.entry_nr
|
|
writel(1, entry->mask_base + entry->msi_attrib.entry_nr
|
|
* PCI_MSIX_ENTRY_SIZE
|
|
* PCI_MSIX_ENTRY_SIZE
|
|
+ PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET);
|
|
+ PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET);
|
|
|
|
+
|
|
|
|
+ if (list_is_last(&entry->list, &dev->msi_list))
|
|
|
|
+ iounmap(entry->mask_base);
|
|
}
|
|
}
|
|
list_del(&entry->list);
|
|
list_del(&entry->list);
|
|
kfree(entry);
|
|
kfree(entry);
|