Message ID | 1320349099-22594-1-git-send-email-timur@freescale.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Kumar Gala |
Headers | show |
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
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.
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).
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.
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(-)