ia64 kernel fails to link because of PCI MSI quirk
PATCH 1/1 ia64 kernel fails to link because of PCI MSI quirk
The problem is that the MSI code has an unconditional dependency on pci_msi_quirk. However, the quirk and the variable are only defined if CONFIG_X86_IO_APIC is defined, which it never is on ia64.
The solution is to make the variable global and unconditional.
James
===== drivers/pci/quirks.c 1.72 vs edited =====
drivers/pci/quirks.c +2 -0
@@ -19,6 +19,8 @@#include <linux/init.h> #include <linux/delay.h> +int pci_msi_quirk =0 ; +#undef DEBUG/* Deal with broken BIOS'es that neglect to enable passive release,
@@ -428,8 +430,6 @@ sis_apic_bug =1 ; } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, PCI_ANY_ID,
quirk_ioapic_rmw );
-
-int pci_msi_quirk;
#define AMD8131_revA0 0x01
#define AMD8131_revB0 0x11
Quoted 4 lines · James Bottomley
The problem is that the MSI code has an unconditional dependency on
pci_msi_quirk. However, the quirk and the variable are only defined ifCONFIG_X86_IO_APICis defined, which it never is on ia64.
Yes, I hit that as well.
Quoted 1 line
The solution is to make the variable global and unconditional.
I fixed it differently:
drivers/pci/pci.h renamed from drivers/pci/pci.h~ia64-msi-build-fix +6 -1
@@ -64,8 +64,13 @@ extern void pci_remove_legacy_files(stru/* Lock for read/write access to pci device and bus lists */ extern spinlock_t pci_bus_lock; -extern int pcie_mch_quirk; +#ifdef CONFIG_X86_IO_APIC extern int pci_msi_quirk; +#else +#define pci_msi_quirk 0 +#endif + +extern int pcie_mch_quirk;extern struct device_attribute pci_dev_attrs[];extern struct class_device_attribute class_device_attr_cpuaffinity;
_