Messages in this thread Patch in this message | | | Date | Thu, 08 Aug 2002 15:07:46 -0700 | From | Matthew Dobson <> | Subject | [patch] PCI configuration fix for NUMA-Q |
| |
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; | |