Re: Fix PCI in Holly device tree

Previous thread: [git patches] further net driver updates for .28 by Jeff Garzik on Wednesday, September 24, 2008 - 7:27 pm. (2 messages)

Next thread: wait_event_interruptible_timeout by Ani Sinha on Wednesday, September 24, 2008 - 9:05 pm. (3 messages)
From: David Gibson
Date: Wednesday, September 24, 2008 - 7:39 pm

The PCI bridge on the Holly board is current incorrectly represented
in the device tree.  The current device tree node for the PCI bridge
sits under the tsi-bridge node.  That's not obviously wrong, but the
PCI bridge translated some PCI spaces into CPU address ranges which
were not translated by the tsi-bridge node.

We used to get away with this problem because the PCI bridge discovery
code was also buggy, assuming incorrectly that PCI host bridge nodes
were always directly under the root bus and treating the translated
addresses as raw CPU addresses, rather than parent bus addresses.
This has since been fixed, breaking Holly.

This could be fixed by adding extra translations to the tsi-bridge
node, but this patch instead moves the Holly PCI bridge out of the
tsi-bridge node to the root bus.  This makes the tsi-bridge node
represent only the built-in IO devices in the bridge, with a
more-or-less contiguous address range.  This is the same convention
used on Freescale SoC chips, where the "soc" node represents only the
IMMR region, and the PCI and other bus bridges are separate nodes
under the root bus.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

Index: working-2.6/arch/powerpc/boot/dts/holly.dts
===================================================================
--- working-2.6.orig/arch/powerpc/boot/dts/holly.dts	2008-09-02 11:50:12.000000000 +1000
+++ working-2.6/arch/powerpc/boot/dts/holly.dts	2008-09-17 11:50:23.000000000 +1000
@@ -133,61 +133,61 @@
 			reg = <0x00007400 0x00000400>;
 			big-endian;
 		};
+	};
 
-		pci@1000 {
-			device_type = "pci";
-			compatible = "tsi109-pci", "tsi108-pci";
-			#interrupt-cells = <1>;
-			#size-cells = <2>;
-			#address-cells = <3>;
-			reg = <0x00001000 0x00001000>;
-			bus-range = <0x0 0x0>;
-			/*----------------------------------------------------+
-			| PCI memory range.
-			| 01 denotes I/O space
-			| 02 denotes 32-bit memory ...
From: Josh Boyer
Date: Thursday, September 25, 2008 - 5:11 am

On Thu, 25 Sep 2008 12:39:04 +1000

Acked-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>

Paul, I can include this in my 'next' branch if you aren't opposed.
I'll have another set of patches going in there today/tomorrow.

josh
--

From: Josh Boyer
Date: Thursday, September 25, 2008 - 5:22 am

Er... on second thought, this actually fixes a regression on Holly.  So
I'll amend my offer to put it in my 'next' branch to be contingent on you
not wanting to get it into 2.6.27 this late.

josh
--

From: Benjamin Herrenschmidt
Date: Monday, September 29, 2008 - 1:53 am

I've picked it up, I need to check a thing or two and I'll send patches
for .27 to Linus tomorrow (Paulus is on vacation for a week). With a bit
of luck he won't have closed .27 before that :-)

Cheers
Ben.


--

Previous thread: [git patches] further net driver updates for .28 by Jeff Garzik on Wednesday, September 24, 2008 - 7:27 pm. (2 messages)

Next thread: wait_event_interruptible_timeout by Ani Sinha on Wednesday, September 24, 2008 - 9:05 pm. (3 messages)