Patchwork powerpc/85xx: do not force PHYS_64BIT on the P1022DS

login
register
mail settings
Submitter Timur Tabi
Date Nov. 3, 2011, 7:38 p.m.
Message ID <1320349099-22594-1-git-send-email-timur@freescale.com>
Download mbox | patch
Permalink /patch/123501/
State Superseded
Delegated to: Kumar Gala
Headers show

Comments

Timur Tabi - Nov. 3, 2011, 7:38 p.m.
Kconfig option PHYS_64BIT sets the size of phys_addr_t to 64 bits, which
allows support for a 36-bit physical address space.  With this option, the
kernel can support more than 2GB of RAM, but the larger address size
impacts performance slightly.

By including "select PHYS_64BIT" in the Kconfig for a particular board,
that option is forced enabled, and it becomes impossible to create a 32-bit
kernel.  Instead, we should depend on the defconfig to enable this option.
We still build a 36-bit kernel by default, and we also allow users to build
32-bit kernels if they really want.

Signed-off-by: Timur Tabi <timur@freescale.com>
---
 arch/powerpc/platforms/85xx/Kconfig |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
Kumar Gala - Nov. 24, 2011, 7:12 a.m.
On Nov 3, 2011, at 2:38 PM, Timur Tabi wrote:

> Kconfig option PHYS_64BIT sets the size of phys_addr_t to 64 bits, which
> allows support for a 36-bit physical address space.  With this option, the
> kernel can support more than 2GB of RAM, but the larger address size
> impacts performance slightly.
> 
> By including "select PHYS_64BIT" in the Kconfig for a particular board,
> that option is forced enabled, and it becomes impossible to create a 32-bit
> kernel.  Instead, we should depend on the defconfig to enable this option.
> We still build a 36-bit kernel by default, and we also allow users to build
> 32-bit kernels if they really want.
> 
> Signed-off-by: Timur Tabi <timur@freescale.com>
> ---
> arch/powerpc/platforms/85xx/Kconfig |    1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)

If you want me to apply this please also provided a 32-bit .dts for p1022ds.  This should be pretty trivial based on my recent .dts cleanups.

- k
Tabi Timur-B04825 - Nov. 24, 2011, 1:56 p.m.
On Nov 24, 2011, at 1:12 AM, Kumar Gala <kumar.gala@freescale.com> wrote:

> 
> If you want me to apply this please also provided a 32-bit .dts for p1022ds.  This should be pretty trivial based on my recent .dts cleanups.

Ok, I'll do that.
Timur Tabi - Nov. 28, 2011, 5:41 p.m.
Kumar Gala wrote:

> If you want me to apply this please also provided a 32-bit .dts for
> p1022ds.  This should be pretty trivial based on my recent .dts
> cleanups.

I think I found another bug in the 36-bit DTS.  Looking at U-Boot, I see this:

#ifdef CONFIG_PHYS_64BIT
#define CONFIG_SYS_PCIE2_MEM_BUS	0xe0000000
#define CONFIG_SYS_PCIE2_MEM_PHYS	0xc20000000ull
#else
#define CONFIG_SYS_PCIE2_MEM_BUS	0xa0000000
#define CONFIG_SYS_PCIE2_MEM_PHYS	0xa0000000
#endif

But the 36-bit DTS has this:

pci0: pcie@ffe09000 {
	reg = <0x0 0xffe09000 0 0x1000>;
	ranges = <0x2000000 0x0 0xa0000000 0xc 0x20000000 0x0 0x20000000
		  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>;

I don't think these match.  I think the first 'ranges' line should have 0xe0000000 instead of 0xa0000000.

I see the same problem with the other two PCI busses.  It looks like the physical address is correct, but the BUS address is wrong (it's using the 32-bit bus address instead of the 36-bit bus address).

Patch

diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 12f5932..dddada4 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -80,7 +80,6 @@  config P1010_RDB
 config P1022_DS
 	bool "Freescale P1022 DS"
 	select DEFAULT_UIMAGE
-	select PHYS_64BIT	# The DTS has 36-bit addresses
 	select SWIOTLB
 	help
 	  This option enables support for the Freescale P1022DS reference board.