mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-22 12:33:59 +08:00
pci-quirks: fix MSI disabling on RS400-200 and RS480
Commit c0affe9db4
doesn't work because
the host controller is being quirked not a PCI bridge. This patch
reverts the commit, rename quirk_svw_msi() to quirk_disable_all_msi()
and use it instead.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Matias Alejandro Torres <torresmat@gmail.com>
Cc: Greg K-H <greg@kroah.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c1aee215d7
commit
ebdf7d399e
@ -1625,18 +1625,20 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
|
|||||||
quirk_nvidia_ck804_pcie_aer_ext_cap);
|
quirk_nvidia_ck804_pcie_aer_ext_cap);
|
||||||
|
|
||||||
#ifdef CONFIG_PCI_MSI
|
#ifdef CONFIG_PCI_MSI
|
||||||
/* The Serverworks PCI-X chipset does not support MSI. We cannot easily rely
|
/* Some chipsets do not support MSI. We cannot easily rely on setting
|
||||||
* on setting PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
|
* PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
|
||||||
* some other busses controlled by the chipset even if Linux is not aware of it.
|
* some other busses controlled by the chipset even if Linux is not
|
||||||
* Instead of setting the flag on all busses in the machine, simply disable MSI
|
* aware of it. Instead of setting the flag on all busses in the
|
||||||
* globally.
|
* machine, simply disable MSI globally.
|
||||||
*/
|
*/
|
||||||
static void __init quirk_svw_msi(struct pci_dev *dev)
|
static void __init quirk_disable_all_msi(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
pci_no_msi();
|
pci_no_msi();
|
||||||
printk(KERN_WARNING "PCI: MSI quirk detected. MSI deactivated.\n");
|
printk(KERN_WARNING "PCI: MSI quirk detected. MSI deactivated.\n");
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_svw_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
|
||||||
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
|
||||||
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
|
||||||
|
|
||||||
/* Disable MSI on chipsets that are known to not support it */
|
/* Disable MSI on chipsets that are known to not support it */
|
||||||
static void __devinit quirk_disable_msi(struct pci_dev *dev)
|
static void __devinit quirk_disable_msi(struct pci_dev *dev)
|
||||||
@ -1649,8 +1651,6 @@ static void __devinit quirk_disable_msi(struct pci_dev *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_msi);
|
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_msi);
|
|
||||||
|
|
||||||
/* Go through the list of Hypertransport capabilities and
|
/* Go through the list of Hypertransport capabilities and
|
||||||
* return 1 if a HT MSI capability is found and enabled */
|
* return 1 if a HT MSI capability is found and enabled */
|
||||||
|
Loading…
Reference in New Issue
Block a user