瀏覽代碼

PCI MSI: always toggle legacy-INTx-enable bit upon MSI entry/exit

The current code (prior to this change) would disable the PCI INTx
legacy interrupt when enabling MSI... but only on PCI Express.  We
should do this for all MSI devices, for safety's sake.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
Jeff Garzik 18 年之前
父節點
當前提交
1769b46a3e
共有 1 個文件被更改,包括 4 次插入8 次删除
  1. 4 8
      drivers/pci/msi.c

+ 4 - 8
drivers/pci/msi.c

@@ -255,10 +255,8 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
 		pci_write_config_word(dev, msi_control_reg(pos), control);
 		pci_write_config_word(dev, msi_control_reg(pos), control);
 		dev->msix_enabled = 1;
 		dev->msix_enabled = 1;
 	}
 	}
-    	if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
-		/* PCI Express Endpoint device detected */
-		pci_intx(dev, 0);  /* disable intx */
-	}
+
+	pci_intx(dev, 0);  /* disable intx */
 }
 }
 
 
 void disable_msi_mode(struct pci_dev *dev, int pos, int type)
 void disable_msi_mode(struct pci_dev *dev, int pos, int type)
@@ -276,10 +274,8 @@ void disable_msi_mode(struct pci_dev *dev, int pos, int type)
 		pci_write_config_word(dev, msi_control_reg(pos), control);
 		pci_write_config_word(dev, msi_control_reg(pos), control);
 		dev->msix_enabled = 0;
 		dev->msix_enabled = 0;
 	}
 	}
-    	if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
-		/* PCI Express Endpoint device detected */
-		pci_intx(dev, 1);  /* enable intx */
-	}
+
+	pci_intx(dev, 1);  /* enable intx */
 }
 }
 
 
 static int msi_lookup_irq(struct pci_dev *dev, int type)
 static int msi_lookup_irq(struct pci_dev *dev, int type)