Thread (1 message) 1 message, 1 author, 2001-07-19

Re: 2.4.6 kernel on MCP750 board

From: Matt Porter <hidden>
Date: 2001-07-19 18:38:49

On Wed, Jul 18, 2001 at 09:54:41AM +1000, Rudolf Ladyzhenskii wrote:
Hi, all

I am trying to put the latest kernel on Motorola MCP750 card. 2.2 kernel
used to work fine, but 2.4.6 have some PCI problems.
It can not allocate resources to network interface and, as a result, I can
not boot.
Startup dump attached.
The PCI subsystem is shooting itself in the foot when it sees a P2P
bridge with I/O and Mem windows disabled.  That's the case when you
plug in a system master (that uses a transparent bridge to cPCI) in
by itself.  A peripheral card in any slot will avoid the issue.

Apply the following patch (current linuxppc_2_4_devel / 2.4.7pre8) to
cure the problem:

===== drivers/pci/pci.c 1.16 vs edited =====
--- 1.16/drivers/pci/pci.c	Wed Jul  4 18:46:09 2001
+++ edited/drivers/pci/pci.c	Thu Jul 19 14:47:38 2001
@@ -957,13 +957,9 @@
 		res->start = base;
 		res->end = limit + 0xfff;
 		res->name = child->name;
-	} else {
-		/*
-		 * Ugh. We don't know enough about this bridge. Just assume
-		 * that it's entirely transparent.
-		 */
-		printk(KERN_ERR "Unknown bridge resource %d: assuming transparent\n", 0);
-		child->resource[0] = child->parent->resource[0];
+	} else if (base > limit) {
+		/* Disabled bridge windows get no resources */
+		printk(KERN_DEBUG "PCI: Found disabled bridge I/O window\n");
 	}

 	res = child->resource[1];
@@ -976,10 +972,9 @@
 		res->start = base;
 		res->end = limit + 0xfffff;
 		res->name = child->name;
-	} else {
-		/* See comment above. Same thing */
-		printk(KERN_ERR "Unknown bridge resource %d: assuming transparent\n", 1);
-		child->resource[1] = child->parent->resource[1];
+	} else if (base > limit) {
+		/* Disabled bridge windows get no resources */
+		printk(KERN_DEBUG "PCI: Found disabled bridge memory window\n");
 	}

 	res = child->resource[2];
@@ -1003,10 +998,9 @@
 		res->start = base;
 		res->end = limit + 0xfffff;
 		res->name = child->name;
-	} else {
-		/* See comments above */
-		printk(KERN_ERR "Unknown bridge resource %d: assuming transparent\n", 2);
-		child->resource[2] = child->parent->resource[2];
+	} else if (base > limit) {
+		/* Disabled bridge windows get no resources */
+		printk(KERN_NOTICE "PCI: Found disabled bridge prefetch window\n");
 	}
 }


--
Matt Porter
MontaVista Software, Inc.
mporter@mvista.com

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help