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 <redacted>
---
arch/powerpc/platforms/85xx/Kconfig | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
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.
--
1.7.3.4
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.
=20
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.
=20
Signed-off-by: Timur Tabi <redacted>
---
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 [off-list ref] wrote:
=20
If you want me to apply this please also provided a 32-bit .dts for p1022=
ds. 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).
--
Timur Tabi
Linux kernel developer at Freescale