lkml.org 
[lkml]   [2002]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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;
\
 
 \ /
  Last update: 2005-03-22 13:27    [W:0.021 / U:3.664 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site