[patch] PCI configuration fix for NUMA-Q

From: Matthew Dobson (colpatch@us.ibm.com)
Date: Thu Aug 08 2002 - 17:07:46 EST


Linus,
        The PCI code for NUMA-Q machines has been broken for a while... The kernel
currently can't find PCI busses on quad's other than the first. This patch
fixes that problem. Please apply.

Cheers!

-Matt

diff -Nur linux-2.5.15-vanilla/arch/i386/pci/direct.c linux-2.5.15-patched/arch/i386/pci/direct.c
--- linux-2.5.15-vanilla/arch/i386/pci/direct.c Thu May 9 15:22:49 2002
+++ linux-2.5.15-patched/arch/i386/pci/direct.c Thu Aug 8 10:27:11 2002
@@ -6,6 +6,10 @@
 #include <linux/init.h>
 #include "pci.h"
 
+/* Ensure the correct pci_conf1_{read|write} functions are compiled in */
+#ifndef CONFIG_MULTIQUAD
+
+
 /*
  * Functions for accessing PCI configuration space with type 1 accesses
  */
@@ -72,6 +76,11 @@
 
 #undef PCI_CONF1_ADDRESS
 
+#else /* CONFIG_MULTIQUAD */
+extern int pci_conf1_read (int seg, int bus, int dev, int fn, int reg, int len, u32 *value);
+extern int pci_conf1_write (int seg, int bus, int dev, int fn, int reg, int len, u32 value);
+#endif /* !CONFIG_MULTIQUAD */
+
 static int pci_conf1_read_config_byte(struct pci_dev *dev, int where, u8 *value)
 {
         int result;
diff -Nur linux-2.5.15-vanilla/arch/i386/pci/numa.c linux-2.5.15-patched/arch/i386/pci/numa.c
--- linux-2.5.15-vanilla/arch/i386/pci/numa.c Thu May 9 15:22:46 2002
+++ linux-2.5.15-patched/arch/i386/pci/numa.c Thu Aug 8 10:52:24 2002
@@ -1,19 +1,23 @@
 /*
  * numa.c - Low-level PCI access for NUMA-Q machines
  */
+
 #include <linux/pci.h>
 #include <linux/init.h>
-
 #include "pci.h"
 
 #define BUS2QUAD(global) (mp_bus_id_to_node[global])
 #define BUS2LOCAL(global) (mp_bus_id_to_local[global])
 #define QUADLOCAL2BUS(quad,local) (quad_local_to_mp_bus_id[quad][local])
 
+/*
+ * Functions for accessing PCI configuration space with type 1 accesses on NUMA-Q
+ */
+
 #define PCI_CONF1_ADDRESS(bus, dev, fn, reg) \
         (0x80000000 | (BUS2LOCAL(bus) << 16) | (dev << 11) | (fn << 8) | (reg & ~3))
 
-static int pci_conf1_read (int seg, int bus, int dev, int fn, int reg, int len, u32 *value)
+int pci_conf1_read (int seg, int bus, int dev, int fn, int reg, int len, u32 *value)
 {
         unsigned long flags;
 
@@ -41,7 +45,7 @@
         return 0;
 }
 
-static int pci_conf1_write (int seg, int bus, int dev, int fn, int reg, int len, u32 value)
+int pci_conf1_write (int seg, int bus, int dev, int fn, int reg, int len, u32 value)
 {
         unsigned long flags;
 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Aug 15 2002 - 22:00:18 EST