diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2007-01-25 03:34:07 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 18:50:06 -0500 |
commit | 88187dfa4d8bb565df762f272511d2c91e427e0d (patch) | |
tree | 451f53265c52ea50bcb43bb4e5854fe9c3359182 | |
parent | 89298c7a41e71ecb1e0c3f793655e9ce09662ce0 (diff) |
MSI: Replace pci_msi_quirk with calls to pci_no_msi()
I don't see any reason why we need pci_msi_quirk, quirk code can just
call pci_no_msi() instead.
Remove the check of pci_msi_quirk in msi_init(). This is safe as all
calls to msi_init() are protected by calls to pci_msi_supported(),
which checks pci_msi_enable, which is disabled by pci_no_msi().
The pci_disable_msi routines didn't check pci_msi_quirk, only
pci_msi_enable, but as far as I can see that was a bug not a feature.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/net/bnx2.c | 3 | ||||
-rw-r--r-- | drivers/pci/msi.c | 7 | ||||
-rw-r--r-- | drivers/pci/pci.h | 6 | ||||
-rw-r--r-- | drivers/pci/quirks.c | 7 |
4 files changed, 4 insertions, 19 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index ee7b75b976b5..0420697c4293 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -5954,8 +5954,7 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev) | |||
5954 | * responding after a while. | 5954 | * responding after a while. |
5955 | * | 5955 | * |
5956 | * AMD believes this incompatibility is unique to the 5706, and | 5956 | * AMD believes this incompatibility is unique to the 5706, and |
5957 | * prefers to locally disable MSI rather than globally disabling it | 5957 | * prefers to locally disable MSI rather than globally disabling it. |
5958 | * using pci_msi_quirk. | ||
5959 | */ | 5958 | */ |
5960 | if (CHIP_NUM(bp) == CHIP_NUM_5706 && disable_msi == 0) { | 5959 | if (CHIP_NUM(bp) == CHIP_NUM_5706 && disable_msi == 0) { |
5961 | struct pci_dev *amd_8132 = NULL; | 5960 | struct pci_dev *amd_8132 = NULL; |
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index e87e8efb9bb4..3776531586d1 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -170,13 +170,6 @@ static int msi_init(void) | |||
170 | if (!status) | 170 | if (!status) |
171 | return status; | 171 | return status; |
172 | 172 | ||
173 | if (pci_msi_quirk) { | ||
174 | pci_msi_enable = 0; | ||
175 | printk(KERN_WARNING "PCI: MSI quirk detected. MSI disabled.\n"); | ||
176 | status = -EINVAL; | ||
177 | return status; | ||
178 | } | ||
179 | |||
180 | status = msi_cache_init(); | 173 | status = msi_cache_init(); |
181 | if (status < 0) { | 174 | if (status < 0) { |
182 | pci_msi_enable = 0; | 175 | pci_msi_enable = 0; |
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 783e81f81f58..4948db0f8100 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
@@ -43,12 +43,8 @@ extern void pci_remove_legacy_files(struct pci_bus *bus); | |||
43 | /* Lock for read/write access to pci device and bus lists */ | 43 | /* Lock for read/write access to pci device and bus lists */ |
44 | extern struct rw_semaphore pci_bus_sem; | 44 | extern struct rw_semaphore pci_bus_sem; |
45 | 45 | ||
46 | #ifdef CONFIG_PCI_MSI | ||
47 | extern int pci_msi_quirk; | ||
48 | #else | ||
49 | #define pci_msi_quirk 0 | ||
50 | #endif | ||
51 | extern unsigned int pci_pm_d3_delay; | 46 | extern unsigned int pci_pm_d3_delay; |
47 | |||
52 | #ifdef CONFIG_PCI_MSI | 48 | #ifdef CONFIG_PCI_MSI |
53 | void disable_msi_mode(struct pci_dev *dev, int pos, int type); | 49 | void disable_msi_mode(struct pci_dev *dev, int pos, int type); |
54 | void pci_no_msi(void); | 50 | void pci_no_msi(void); |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index d0c359335077..0d0ba2fad5fc 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -1700,9 +1700,6 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, | |||
1700 | quirk_nvidia_ck804_pcie_aer_ext_cap); | 1700 | quirk_nvidia_ck804_pcie_aer_ext_cap); |
1701 | 1701 | ||
1702 | #ifdef CONFIG_PCI_MSI | 1702 | #ifdef CONFIG_PCI_MSI |
1703 | /* To disable MSI globally */ | ||
1704 | int pci_msi_quirk; | ||
1705 | |||
1706 | /* The Serverworks PCI-X chipset does not support MSI. We cannot easily rely | 1703 | /* The Serverworks PCI-X chipset does not support MSI. We cannot easily rely |
1707 | * on setting PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually | 1704 | * on setting PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually |
1708 | * some other busses controlled by the chipset even if Linux is not aware of it. | 1705 | * some other busses controlled by the chipset even if Linux is not aware of it. |
@@ -1711,8 +1708,8 @@ int pci_msi_quirk; | |||
1711 | */ | 1708 | */ |
1712 | static void __init quirk_svw_msi(struct pci_dev *dev) | 1709 | static void __init quirk_svw_msi(struct pci_dev *dev) |
1713 | { | 1710 | { |
1714 | pci_msi_quirk = 1; | 1711 | pci_no_msi(); |
1715 | printk(KERN_WARNING "PCI: MSI quirk detected. pci_msi_quirk set.\n"); | 1712 | printk(KERN_WARNING "PCI: MSI quirk detected. MSI deactivated.\n"); |
1716 | } | 1713 | } |
1717 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_svw_msi); | 1714 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_svw_msi); |
1718 | 1715 | ||