Skip to contentSkip to conversation

ia64 kernel fails to link because of PCI MSI quirk

PATCH In review James Bottomley 2 participants 2 messages Mar 15, 2005 PCI

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
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 if CONFIG_X86_IO_APIC is 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;
 

_