Skip to contentSkip to conversation

runtime P2V translations

RFC New Russell King - ARM Linux 15 participants 44 messages Jan 4, 2011 – Feb 17, 2011

Subsystems (21)
lore
Share & tools
lore
#0 lore raw

cover runtime P2V translations

Here's my solution to this, which should allow it to be used on almost all platforms, including MSM, with the exception of Realview when SPARSEMEM is enabled.

#1 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-
 arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
 arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
 arch/arm/mach-clps711x/include/mach/memory.h   |    2 +-
 arch/arm/mach-cns3xxx/include/mach/memory.h    |    2 +-
 arch/arm/mach-davinci/include/mach/memory.h    |    4 ++--
 arch/arm/mach-dove/include/mach/memory.h       |    2 +-
 arch/arm/mach-ebsa110/include/mach/memory.h    |    2 +-
 arch/arm/mach-ep93xx/include/mach/memory.h     |   10 +++++-----
 arch/arm/mach-footbridge/include/mach/memory.h |    2 +-
 arch/arm/mach-h720x/include/mach/memory.h      |    2 +-
 arch/arm/mach-integrator/include/mach/memory.h |    2 +-
 arch/arm/mach-iop13xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-iop32x/include/mach/memory.h     |    2 +-
 arch/arm/mach-iop33x/include/mach/memory.h     |    2 +-
 arch/arm/mach-ixp2000/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp23xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp4xx/include/mach/memory.h     |    2 +-
 arch/arm/mach-kirkwood/include/mach/memory.h   |    2 +-
 arch/arm/mach-ks8695/include/mach/memory.h     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/memory.h    |    2 +-
 arch/arm/mach-loki/include/mach/memory.h       |    2 +-
 arch/arm/mach-lpc32xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-mmp/include/mach/memory.h        |    2 +-
 arch/arm/mach-msm/board-msm7x30.c              |    2 +-
 arch/arm/mach-msm/include/mach/memory.h        |   10 +++++-----
 arch/arm/mach-mv78xx0/include/mach/memory.h    |    2 +-
 arch/arm/mach-mx3/mach-kzm_arm11_01.c          |    2 +-
 arch/arm/mach-netx/include/mach/memory.h       |    2 +-
 arch/arm/mach-nomadik/include/mach/memory.h    |    2 +-
 arch/arm/mach-ns9xxx/include/mach/memory.h     |    2 +-
 arch/arm/mach-nuc93x/include/mach/memory.h     |    2 +-
 arch/arm/mach-orion5x/include/mach/memory.h    |    2 +-
 arch/arm/mach-pnx4008/include/mach/memory.h    |    2 +-
 arch/arm/mach-pxa/include/mach/memory.h        |    2 +-
 arch/arm/mach-realview/include/mach/memory.h   |    4 ++--
 arch/arm/mach-rpc/include/mach/memory.h        |    2 +-
 arch/arm/mach-s3c2400/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c2410/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c24a0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c64xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p6442/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p64x0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pc100/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv210/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv310/include/mach/memory.h    |    2 +-
 arch/arm/mach-sa1100/include/mach/memory.h     |    2 +-
 arch/arm/mach-shark/include/mach/memory.h      |    2 +-
 arch/arm/mach-shmobile/include/mach/memory.h   |    2 +-
 arch/arm/mach-tegra/include/mach/memory.h      |    2 +-
 arch/arm/mach-u300/include/mach/memory.h       |    6 +++---
 arch/arm/mach-u300/u300.c                      |    2 +-
 arch/arm/mach-ux500/include/mach/memory.h      |    2 +-
 arch/arm/mach-versatile/include/mach/memory.h  |    2 +-
 arch/arm/mach-vexpress/include/mach/memory.h   |    2 +-
 arch/arm/mach-w90x900/include/mach/memory.h    |    2 +-
 arch/arm/plat-omap/include/plat/memory.h       |    4 ++--
 arch/arm/plat-spear/include/plat/memory.h      |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/memory.h   |    2 +-
 arch/arm/plat-tcc/include/mach/memory.h        |    2 +-
 63 files changed, 77 insertions(+), 75 deletions(-)
arch/arm/include/asm/memory.h +2 -0
index 23c2e8e..00b04ae 100644
@@ -24,6 +24,8 @@
  */
 #define UL(x) _AC(x, UL)
 
+#define PHYS_OFFSET	PLAT_PHYS_OFFSET
+
 #ifdef CONFIG_MMU
 
 /*
arch/arm/kernel/tcm.c +1 -1
index 26685c2..f5cf660 100644
@@ -15,7 +15,7 @@
 #include <linux/string.h> /* memcpy */
 #include <asm/cputype.h>
 #include <asm/mach/map.h>
-#include <mach/memory.h>
+#include <asm/memory.h>
 #include "tcm.h"
 
 static struct gen_pool *tcm_pool;
arch/arm/mach-aaec2000/include/mach/memory.h +1 -1
index 4f93c56..4a10bf0 100644
@@ -12,6 +12,6 @@
 #define __ASM_ARCH_MEMORY_H
 
 
-#define PHYS_OFFSET	UL(0xf0000000)
+#define PLAT_PHYS_OFFSET	UL(0xf0000000)
 
 #endif /* __ASM_ARCH_MEMORY_H */
arch/arm/mach-at91/include/mach/memory.h +1 -1
index 14f4ef4..c2cfe50 100644
@@ -23,6 +23,6 @@
 
 #include <mach/hardware.h>
 
-#define PHYS_OFFSET	(AT91_SDRAM_BASE)
+#define PLAT_PHYS_OFFSET	(AT91_SDRAM_BASE)
 
 #endif
arch/arm/mach-bcmring/include/mach/hardware.h +1 -1
index 447eb34..8bf3564 100644
@@ -31,7 +31,7 @@
  *  *_SIZE  is the size of the region
  *  *_BASE  is the virtual address
  */
-#define RAM_START               PHYS_OFFSET
+#define RAM_START               PLAT_PHYS_OFFSET
 
 #define RAM_SIZE                (CFG_GLOBAL_RAM_SIZE-CFG_GLOBAL_RAM_SIZE_RESERVED)
 #define RAM_BASE                PAGE_OFFSET
arch/arm/mach-bcmring/include/mach/memory.h +1 -1
index 114f942..15162e4 100644
@@ -23,7 +23,7 @@
  * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
  */
 
-#define PHYS_OFFSET CFG_GLOBAL_RAM_BASE
+#define PLAT_PHYS_OFFSET CFG_GLOBAL_RAM_BASE
 
 /*
  * Maximum DMA memory allowed is 14M
arch/arm/mach-clps711x/include/mach/memory.h +1 -1
index f45c8e8..3a032a6 100644
@@ -23,7 +23,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0xc0000000)
+#define PLAT_PHYS_OFFSET	UL(0xc0000000)
 
 #if !defined(CONFIG_ARCH_CDB89712) && !defined (CONFIG_ARCH_AUTCPU12)
 
arch/arm/mach-cns3xxx/include/mach/memory.h +1 -1
index 3b6b769..dc16c5c 100644
@@ -13,7 +13,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #define __phys_to_bus(x)	((x) + PHYS_OFFSET)
 #define __bus_to_phys(x)	((x) - PHYS_OFFSET)
arch/arm/mach-davinci/include/mach/memory.h +2 -2
index 22eb97c..7882272 100644
@@ -26,9 +26,9 @@
 #if defined(CONFIG_ARCH_DAVINCI_DA8XX) && defined(CONFIG_ARCH_DAVINCI_DMx)
 #error Cannot enable DaVinci and DA8XX platforms concurrently
 #elif defined(CONFIG_ARCH_DAVINCI_DA8XX)
-#define PHYS_OFFSET DA8XX_DDR_BASE
+#define PLAT_PHYS_OFFSET DA8XX_DDR_BASE
 #else
-#define PHYS_OFFSET DAVINCI_DDR_BASE
+#define PLAT_PHYS_OFFSET DAVINCI_DDR_BASE
 #endif
 
 #define DDR2_SDRCR_OFFSET	0xc
arch/arm/mach-dove/include/mach/memory.h +1 -1
index d668720..bbc93fe 100644
@@ -5,6 +5,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #endif
arch/arm/mach-ebsa110/include/mach/memory.h +1 -1
index 0ca66d0..8e49066 100644
@@ -19,7 +19,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 /*
  * Cache flushing area - SRAM
arch/arm/mach-ep93xx/include/mach/memory.h +5 -5
index 554064e..c9400cf 100644
@@ -6,15 +6,15 @@
 #define __ASM_ARCH_MEMORY_H
 
 #if defined(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 #elif defined(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xc0000000)
+#define PLAT_PHYS_OFFSET		UL(0xc0000000)
 #elif defined(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xd0000000)
+#define PLAT_PHYS_OFFSET		UL(0xd0000000)
 #elif defined(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xe0000000)
+#define PLAT_PHYS_OFFSET		UL(0xe0000000)
 #elif defined(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xf0000000)
+#define PLAT_PHYS_OFFSET		UL(0xf0000000)
 #else
 #error "Kconfig bug: No EP93xx PHYS_OFFSET set"
 #endif
arch/arm/mach-footbridge/include/mach/memory.h +1 -1
index 8d64f45..5c6df37 100644
@@ -62,7 +62,7 @@ extern unsigned long __bus_to_pfn(unsigned long);
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #define FLUSH_BASE_PHYS		0x50000000
 
arch/arm/mach-h720x/include/mach/memory.h +1 -1
index ef4c1e2..9d36876 100644
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x40000000)
+#define PLAT_PHYS_OFFSET	UL(0x40000000)
 /*
  * This is the maximum DMA address that can be DMAd to.
  * There should not be more than (0xd0000000 - 0xc0000000)
arch/arm/mach-integrator/include/mach/memory.h +1 -1
index 991f24d..334d5e2 100644
@@ -23,7 +23,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #define BUS_OFFSET	UL(0x80000000)
 #define __virt_to_bus(x)	((x) - PAGE_OFFSET + BUS_OFFSET)
arch/arm/mach-iop13xx/include/mach/memory.h +1 -1
index 3ad4553..1afa99e 100644
@@ -6,7 +6,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #ifndef __ASSEMBLY__
 
arch/arm/mach-iop32x/include/mach/memory.h +1 -1
index c30f645..169cc23 100644
@@ -8,6 +8,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0xa0000000)
+#define PLAT_PHYS_OFFSET	UL(0xa0000000)
 
 #endif
arch/arm/mach-iop33x/include/mach/memory.h +1 -1
index a30a96a..8e1daf7 100644
@@ -8,6 +8,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-ixp2000/include/mach/memory.h +1 -1
index 98e3471..5f0c4fd 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #include <mach/ixp2000-regs.h>
 
arch/arm/mach-ixp23xx/include/mach/memory.h +1 -1
index 6ef65d8..6cf0704 100644
@@ -17,7 +17,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET		(0x00000000)
+#define PLAT_PHYS_OFFSET		(0x00000000)
 
 #define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)
 
arch/arm/mach-ixp4xx/include/mach/memory.h +1 -1
index 0136eaa..6d388c9 100644
@@ -12,7 +12,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)
 
arch/arm/mach-kirkwood/include/mach/memory.h +1 -1
index 45431e1..4600b44 100644
@@ -5,6 +5,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #endif
arch/arm/mach-ks8695/include/mach/memory.h +1 -1
index bace9a6..f7e1b9b 100644
@@ -18,7 +18,7 @@
 /*
  * Physical SRAM offset.
  */
-#define PHYS_OFFSET		KS8695_SDRAM_PA
+#define PLAT_PHYS_OFFSET		KS8695_SDRAM_PA
 
 #ifndef __ASSEMBLY__
 
arch/arm/mach-lh7a40x/include/mach/memory.h +1 -1
index edb8f5f..f77bde8 100644
@@ -17,7 +17,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0xc0000000)
+#define PLAT_PHYS_OFFSET	UL(0xc0000000)
 
 /*
  * Sparsemem version of the above
arch/arm/mach-loki/include/mach/memory.h +1 -1
index 2ed7e6e..6636665 100644
@@ -5,6 +5,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #endif
arch/arm/mach-lpc32xx/include/mach/memory.h +1 -1
index 044e1ac..a647dd6 100644
@@ -22,6 +22,6 @@
 /*
  * Physical DRAM offset of bank 0
  */
-#define PHYS_OFFSET	UL(0x80000000)
+#define PLAT_PHYS_OFFSET	UL(0x80000000)
 
 #endif
arch/arm/mach-mmp/include/mach/memory.h +1 -1
index bdb21d7..d68b50a 100644
@@ -9,6 +9,6 @@
 #ifndef __ASM_MACH_MEMORY_H
 #define __ASM_MACH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif /* __ASM_MACH_MEMORY_H */
arch/arm/mach-msm/board-msm7x30.c +1 -1
index 05241df..1931e07 100644
@@ -25,11 +25,11 @@
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include <asm/memory.h>
 #include <asm/setup.h>
 
 #include <mach/gpio.h>
 #include <mach/board.h>
-#include <mach/memory.h>
 #include <mach/msm_iomap.h>
 #include <mach/dma.h>
 
arch/arm/mach-msm/include/mach/memory.h +5 -5
index 070e17d..176875d 100644
@@ -18,15 +18,15 @@
 
 /* physical offset of RAM */
 #if defined(CONFIG_ARCH_QSD8X50) && defined(CONFIG_MSM_SOC_REV_A)
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 #elif defined(CONFIG_ARCH_QSD8X50)
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #elif defined(CONFIG_ARCH_MSM7X30)
-#define PHYS_OFFSET		UL(0x00200000)
+#define PLAT_PHYS_OFFSET		UL(0x00200000)
 #elif defined(CONFIG_ARCH_MSM8X60)
-#define PHYS_OFFSET		UL(0x40200000)
+#define PLAT_PHYS_OFFSET		UL(0x40200000)
 #else
-#define PHYS_OFFSET		UL(0x10000000)
+#define PLAT_PHYS_OFFSET		UL(0x10000000)
 #endif
 
 #endif
arch/arm/mach-mv78xx0/include/mach/memory.h +1 -1
index e663042..a648c51 100644
@@ -5,6 +5,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #endif
arch/arm/mach-mx3/mach-kzm_arm11_01.c +1 -1
index 042cd56..d8ebde8 100644
@@ -27,6 +27,7 @@
 
 #include <asm/irq.h>
 #include <asm/mach-types.h>
+#include <asm/memory.h>
 #include <asm/setup.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/irq.h>
@@ -36,7 +37,6 @@
 #include <mach/clock.h>
 #include <mach/common.h>
 #include <mach/iomux-mx3.h>
-#include <mach/memory.h>
 
 #include "devices-imx31.h"
 #include "devices.h"
arch/arm/mach-netx/include/mach/memory.h +1 -1
index 9a363f2..5956149 100644
@@ -20,7 +20,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET UL(0x80000000)
+#define PLAT_PHYS_OFFSET UL(0x80000000)
 
 #endif
 
arch/arm/mach-nomadik/include/mach/memory.h +1 -1
index 1e5689d..d332521 100644
@@ -23,6 +23,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-ns9xxx/include/mach/memory.h +1 -1
index 6107193..5c65aee 100644
@@ -19,6 +19,6 @@
 #define NS9XXX_CS2STAT_LENGTH	UL(0x1000)
 #define NS9XXX_CS3STAT_LENGTH	UL(0x1000)
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-nuc93x/include/mach/memory.h +1 -1
index 323ab0d..ef9864b 100644
@@ -16,6 +16,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-orion5x/include/mach/memory.h +1 -1
index 52a2955..6769917 100644
@@ -7,6 +7,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-pnx4008/include/mach/memory.h +1 -1
index 0e87700..1275db6 100644
@@ -16,6 +16,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x80000000)
+#define PLAT_PHYS_OFFSET	UL(0x80000000)
 
 #endif
arch/arm/mach-pxa/include/mach/memory.h +1 -1
index 92361a6..7f68724 100644
@@ -15,7 +15,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0xa0000000)
+#define PLAT_PHYS_OFFSET	UL(0xa0000000)
 
 #if !defined(__ASSEMBLY__) && defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI)
 void cmx2xx_pci_adjust_zones(unsigned long *size, unsigned long *holes);
arch/arm/mach-realview/include/mach/memory.h +2 -2
index 5dafc15..e05fc2c 100644
@@ -24,9 +24,9 @@
  * Physical DRAM offset.
  */
 #ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET
-#define PHYS_OFFSET		UL(0x70000000)
+#define PLAT_PHYS_OFFSET		UL(0x70000000)
 #else
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 #endif
 
 #if !defined(__ASSEMBLY__) && defined(CONFIG_ZONE_DMA)
arch/arm/mach-rpc/include/mach/memory.h +1 -1
index 78191bf..18a2210 100644
@@ -21,7 +21,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x10000000)
+#define PLAT_PHYS_OFFSET	UL(0x10000000)
 
 /*
  * Cache flushing area - ROM
arch/arm/mach-s3c2400/include/mach/memory.h +1 -1
index cf5901f..3f33670 100644
@@ -15,6 +15,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x0C000000)
+#define PLAT_PHYS_OFFSET	UL(0x0C000000)
 
 #endif
arch/arm/mach-s3c2410/include/mach/memory.h +1 -1
index 6f1e587..f92b97b 100644
@@ -11,6 +11,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x30000000)
+#define PLAT_PHYS_OFFSET	UL(0x30000000)
 
 #endif
arch/arm/mach-s3c24a0/include/mach/memory.h +1 -1
index 7d74fd5..7d208a7 100644
@@ -11,7 +11,7 @@
 #ifndef __ASM_ARCH_24A0_MEMORY_H
 #define __ASM_ARCH_24A0_MEMORY_H __FILE__
 
-#define PHYS_OFFSET UL(0x10000000)
+#define PLAT_PHYS_OFFSET UL(0x10000000)
 
 #define __virt_to_bus(x) __virt_to_phys(x)
 #define __bus_to_virt(x) __phys_to_virt(x)
arch/arm/mach-s3c64xx/include/mach/memory.h +1 -1
index 42cc54e..4760cda 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET     UL(0x50000000)
+#define PLAT_PHYS_OFFSET     UL(0x50000000)
 
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
arch/arm/mach-s5p6442/include/mach/memory.h +1 -1
index 9ddd877..cfe259d 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
 #endif /* __ASM_ARCH_MEMORY_H */
arch/arm/mach-s5p64x0/include/mach/memory.h +1 -1
index 1b036b0..365a6eb 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H __FILE__
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
 #endif /* __ASM_ARCH_MEMORY_H */
arch/arm/mach-s5pc100/include/mach/memory.h +1 -1
index 4b60d18..bda4e79 100644
@@ -13,6 +13,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET     	UL(0x20000000)
+#define PLAT_PHYS_OFFSET     	UL(0x20000000)
 
 #endif
arch/arm/mach-s5pv210/include/mach/memory.h +1 -1
index d503e0c..7b5fcf0 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	(SZ_8M + SZ_4M + SZ_2M)
 
 /*
arch/arm/mach-s5pv310/include/mach/memory.h +1 -1
index 1dffb48..470b01b 100644
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H __FILE__
 
-#define PHYS_OFFSET		UL(0x40000000)
+#define PLAT_PHYS_OFFSET		UL(0x40000000)
 
 /* Maximum of 256MiB in one bank */
 #define MAX_PHYSMEM_BITS	32
arch/arm/mach-sa1100/include/mach/memory.h +1 -1
index 128a1df..a44da6a 100644
@@ -12,7 +12,7 @@
 /*
  * Physical DRAM offset is 0xc0000000 on the SA1100
  */
-#define PHYS_OFFSET	UL(0xc0000000)
+#define PLAT_PHYS_OFFSET	UL(0xc0000000)
 
 #ifndef __ASSEMBLY__
 
arch/arm/mach-shark/include/mach/memory.h +1 -1
index d9c4812..9afb170 100644
@@ -15,7 +15,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET     UL(0x08000000)
+#define PLAT_PHYS_OFFSET     UL(0x08000000)
 
 #ifndef __ASSEMBLY__
 
arch/arm/mach-shmobile/include/mach/memory.h +1 -1
index 377584e..ad00c3c 100644
@@ -1,7 +1,7 @@
 #ifndef __ASM_MACH_MEMORY_H
 #define __ASM_MACH_MEMORY_H
 
-#define PHYS_OFFSET	UL(CONFIG_MEMORY_START)
+#define PLAT_PHYS_OFFSET	UL(CONFIG_MEMORY_START)
 #define MEM_SIZE	UL(CONFIG_MEMORY_SIZE)
 
 /* DMA memory at 0xf6000000 - 0xffdfffff */
arch/arm/mach-tegra/include/mach/memory.h +1 -1
index 6151bab..537db3a 100644
@@ -22,7 +22,7 @@
 #define __MACH_TEGRA_MEMORY_H
 
 /* physical offset of RAM */
-#define PHYS_OFFSET		UL(0)
+#define PLAT_PHYS_OFFSET		UL(0)
 
 #endif
 
arch/arm/mach-u300/include/mach/memory.h +3 -3
index bf134bc..888e2e3 100644
@@ -15,17 +15,17 @@
 
 #ifdef CONFIG_MACH_U300_DUAL_RAM
 
-#define PHYS_OFFSET		UL(0x48000000)
+#define PLAT_PHYS_OFFSET		UL(0x48000000)
 #define BOOT_PARAMS_OFFSET	(PHYS_OFFSET + 0x100)
 
 #else
 
 #ifdef CONFIG_MACH_U300_2MB_ALIGNMENT_FIX
-#define PHYS_OFFSET (0x28000000 + \
+#define PLAT_PHYS_OFFSET (0x28000000 + \
 	     (CONFIG_MACH_U300_ACCESS_MEM_SIZE - \
 	     (CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1))*1024*1024)
 #else
-#define PHYS_OFFSET (0x28000000 + \
+#define PLAT_PHYS_OFFSET (0x28000000 + \
 	     (CONFIG_MACH_U300_ACCESS_MEM_SIZE +	\
 	     (CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1))*1024*1024)
 #endif
arch/arm/mach-u300/u300.c +1 -1
index 07c35a8..48b3b7f 100644
@@ -19,9 +19,9 @@
 #include <linux/io.h>
 #include <mach/hardware.h>
 #include <mach/platform.h>
-#include <mach/memory.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+#include <asm/memory.h>
 
 static void __init u300_reserve(void)
 {
arch/arm/mach-ux500/include/mach/memory.h +1 -1
index 510571a..2ef697a 100644
@@ -12,7 +12,7 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 #define BUS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-versatile/include/mach/memory.h +1 -1
index 79aeab8..dacc9d8 100644
@@ -23,6 +23,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/mach-vexpress/include/mach/memory.h +1 -1
index be28232..5b7fcd4 100644
@@ -20,6 +20,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x60000000)
+#define PLAT_PHYS_OFFSET		UL(0x60000000)
 
 #endif
arch/arm/mach-w90x900/include/mach/memory.h +1 -1
index 971b807..f02905b 100644
@@ -18,6 +18,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x00000000)
+#define PLAT_PHYS_OFFSET	UL(0x00000000)
 
 #endif
arch/arm/plat-omap/include/plat/memory.h +2 -2
index f8d922f..e6720aa 100644
@@ -37,9 +37,9 @@
  * Physical DRAM offset.
  */
 #if defined(CONFIG_ARCH_OMAP1)
-#define PHYS_OFFSET		UL(0x10000000)
+#define PLAT_PHYS_OFFSET		UL(0x10000000)
 #else
-#define PHYS_OFFSET		UL(0x80000000)
+#define PLAT_PHYS_OFFSET		UL(0x80000000)
 #endif
 
 /*
arch/arm/plat-spear/include/plat/memory.h +1 -1
index 27a4aba..7e3599e 100644
@@ -15,6 +15,6 @@
 #define __PLAT_MEMORY_H
 
 /* Physical DRAM offset */
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 
 #endif /* __PLAT_MEMORY_H */
arch/arm/plat-stmp3xxx/include/mach/memory.h +1 -1
index 7b875a0..61fa548 100644
@@ -17,6 +17,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET	UL(0x40000000)
+#define PLAT_PHYS_OFFSET	UL(0x40000000)
 
 #endif
arch/arm/plat-tcc/include/mach/memory.h +1 -1
index cd91ba8..28a6e0c 100644
@@ -13,6 +13,6 @@
 /*
  * Physical DRAM offset.
  */
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 
 #endif
Signature · 1 line
1.6.2.5
#2 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Quoted 4 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

This might even be a good time to merge such patch now even if the later patches don't make it into the next merge window as this would produce fewer conflicts later.

Nicolas

#3 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Quoted 5 lines · Nicolas Pitre
Quoted 3 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

Quoted 7 lines
Quoted 1 line

This might even be a good time to merge such patch now even if the later patches don't make it into the next merge window as this would produce fewer conflicts later.

I think waiting might be in order - MXC conflicts with this patch set and needs rechecking to make sure it's right. ATM, it's had no visibility in linux-next.

However, it makes sense to get the likely to conflict bits in sooner rather than later - or I need to publish them from my git tree in a stable form so that people can include those changes in their patchsets.

#4 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux

Hello Russell,

Quoted 61 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-
 arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
 arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
 arch/arm/mach-clps711x/include/mach/memory.h   |    2 +-
 arch/arm/mach-cns3xxx/include/mach/memory.h    |    2 +-
 arch/arm/mach-davinci/include/mach/memory.h    |    4 ++--
 arch/arm/mach-dove/include/mach/memory.h       |    2 +-
 arch/arm/mach-ebsa110/include/mach/memory.h    |    2 +-
 arch/arm/mach-ep93xx/include/mach/memory.h     |   10 +++++-----
 arch/arm/mach-footbridge/include/mach/memory.h |    2 +-
 arch/arm/mach-h720x/include/mach/memory.h      |    2 +-
 arch/arm/mach-integrator/include/mach/memory.h |    2 +-
 arch/arm/mach-iop13xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-iop32x/include/mach/memory.h     |    2 +-
 arch/arm/mach-iop33x/include/mach/memory.h     |    2 +-
 arch/arm/mach-ixp2000/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp23xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp4xx/include/mach/memory.h     |    2 +-
 arch/arm/mach-kirkwood/include/mach/memory.h   |    2 +-
 arch/arm/mach-ks8695/include/mach/memory.h     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/memory.h    |    2 +-
 arch/arm/mach-loki/include/mach/memory.h       |    2 +-
 arch/arm/mach-lpc32xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-mmp/include/mach/memory.h        |    2 +-
 arch/arm/mach-msm/board-msm7x30.c              |    2 +-
 arch/arm/mach-msm/include/mach/memory.h        |   10 +++++-----
 arch/arm/mach-mv78xx0/include/mach/memory.h    |    2 +-
 arch/arm/mach-mx3/mach-kzm_arm11_01.c          |    2 +-
 arch/arm/mach-netx/include/mach/memory.h       |    2 +-
 arch/arm/mach-nomadik/include/mach/memory.h    |    2 +-
 arch/arm/mach-ns9xxx/include/mach/memory.h     |    2 +-
 arch/arm/mach-nuc93x/include/mach/memory.h     |    2 +-
 arch/arm/mach-orion5x/include/mach/memory.h    |    2 +-
 arch/arm/mach-pnx4008/include/mach/memory.h    |    2 +-
 arch/arm/mach-pxa/include/mach/memory.h        |    2 +-
 arch/arm/mach-realview/include/mach/memory.h   |    4 ++--
 arch/arm/mach-rpc/include/mach/memory.h        |    2 +-
 arch/arm/mach-s3c2400/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c2410/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c24a0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c64xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p6442/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p64x0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pc100/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv210/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv310/include/mach/memory.h    |    2 +-
 arch/arm/mach-sa1100/include/mach/memory.h     |    2 +-
 arch/arm/mach-shark/include/mach/memory.h      |    2 +-
 arch/arm/mach-shmobile/include/mach/memory.h   |    2 +-
 arch/arm/mach-tegra/include/mach/memory.h      |    2 +-
 arch/arm/mach-u300/include/mach/memory.h       |    6 +++---
 arch/arm/mach-u300/u300.c                      |    2 +-
 arch/arm/mach-ux500/include/mach/memory.h      |    2 +-
Quoted 8 lines
 arch/arm/mach-versatile/include/mach/memory.h  |    2 +-
 arch/arm/mach-vexpress/include/mach/memory.h   |    2 +-
 arch/arm/mach-w90x900/include/mach/memory.h    |    2 +-
 arch/arm/plat-omap/include/plat/memory.h       |    4 ++--
 arch/arm/plat-spear/include/plat/memory.h      |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/memory.h   |    2 +-
 arch/arm/plat-tcc/include/mach/memory.h        |    2 +-
 63 files changed, 77 insertions(+), 75 deletions(-)

You didn't touch arch/arm/plat-mxc/include/mach/memory.h which defines PHYS_OFFSET, too. I assume you just missed these?

Best regards
Uwe

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#5 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Quoted 72 lines · Uwe Kleine-K?nig

Hello Russell,

Quoted 61 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-
 arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
 arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
 arch/arm/mach-clps711x/include/mach/memory.h   |    2 +-
 arch/arm/mach-cns3xxx/include/mach/memory.h    |    2 +-
 arch/arm/mach-davinci/include/mach/memory.h    |    4 ++--
 arch/arm/mach-dove/include/mach/memory.h       |    2 +-
 arch/arm/mach-ebsa110/include/mach/memory.h    |    2 +-
 arch/arm/mach-ep93xx/include/mach/memory.h     |   10 +++++-----
 arch/arm/mach-footbridge/include/mach/memory.h |    2 +-
 arch/arm/mach-h720x/include/mach/memory.h      |    2 +-
 arch/arm/mach-integrator/include/mach/memory.h |    2 +-
 arch/arm/mach-iop13xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-iop32x/include/mach/memory.h     |    2 +-
 arch/arm/mach-iop33x/include/mach/memory.h     |    2 +-
 arch/arm/mach-ixp2000/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp23xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp4xx/include/mach/memory.h     |    2 +-
 arch/arm/mach-kirkwood/include/mach/memory.h   |    2 +-
 arch/arm/mach-ks8695/include/mach/memory.h     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/memory.h    |    2 +-
 arch/arm/mach-loki/include/mach/memory.h       |    2 +-
 arch/arm/mach-lpc32xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-mmp/include/mach/memory.h        |    2 +-
 arch/arm/mach-msm/board-msm7x30.c              |    2 +-
 arch/arm/mach-msm/include/mach/memory.h        |   10 +++++-----
 arch/arm/mach-mv78xx0/include/mach/memory.h    |    2 +-
 arch/arm/mach-mx3/mach-kzm_arm11_01.c          |    2 +-
 arch/arm/mach-netx/include/mach/memory.h       |    2 +-
 arch/arm/mach-nomadik/include/mach/memory.h    |    2 +-
 arch/arm/mach-ns9xxx/include/mach/memory.h     |    2 +-
 arch/arm/mach-nuc93x/include/mach/memory.h     |    2 +-
 arch/arm/mach-orion5x/include/mach/memory.h    |    2 +-
 arch/arm/mach-pnx4008/include/mach/memory.h    |    2 +-
 arch/arm/mach-pxa/include/mach/memory.h        |    2 +-
 arch/arm/mach-realview/include/mach/memory.h   |    4 ++--
 arch/arm/mach-rpc/include/mach/memory.h        |    2 +-
 arch/arm/mach-s3c2400/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c2410/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c24a0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c64xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p6442/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p64x0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pc100/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv210/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv310/include/mach/memory.h    |    2 +-
 arch/arm/mach-sa1100/include/mach/memory.h     |    2 +-
 arch/arm/mach-shark/include/mach/memory.h      |    2 +-
 arch/arm/mach-shmobile/include/mach/memory.h   |    2 +-
 arch/arm/mach-tegra/include/mach/memory.h      |    2 +-
 arch/arm/mach-u300/include/mach/memory.h       |    6 +++---
 arch/arm/mach-u300/u300.c                      |    2 +-
 arch/arm/mach-ux500/include/mach/memory.h      |    2 +-
Quoted 8 lines
 arch/arm/mach-versatile/include/mach/memory.h  |    2 +-
 arch/arm/mach-vexpress/include/mach/memory.h   |    2 +-
 arch/arm/mach-w90x900/include/mach/memory.h    |    2 +-
 arch/arm/plat-omap/include/plat/memory.h       |    4 ++--
 arch/arm/plat-spear/include/plat/memory.h      |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/memory.h   |    2 +-
 arch/arm/plat-tcc/include/mach/memory.h        |    2 +-
 63 files changed, 77 insertions(+), 75 deletions(-)
Quoted 2 lines

You didn't touch arch/arm/plat-mxc/include/mach/memory.h which defines PHYS_OFFSET, too. I assume you just missed these?

Grr.

That's because it didn't match the '#define *PHYS_OFFSET' regexp I used to find all the definitions. This is exactly why being different from everyone else is a bad idea - you get missed.

#6 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Hello Russell,

Quoted 73 lines · Russell King - ARM Linux
Quoted 72 lines · Uwe Kleine-K?nig

Hello Russell,

Quoted 69 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-
 arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
 arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
 arch/arm/mach-clps711x/include/mach/memory.h   |    2 +-
 arch/arm/mach-cns3xxx/include/mach/memory.h    |    2 +-
 arch/arm/mach-davinci/include/mach/memory.h    |    4 ++--
 arch/arm/mach-dove/include/mach/memory.h       |    2 +-
 arch/arm/mach-ebsa110/include/mach/memory.h    |    2 +-
 arch/arm/mach-ep93xx/include/mach/memory.h     |   10 +++++-----
 arch/arm/mach-footbridge/include/mach/memory.h |    2 +-
 arch/arm/mach-h720x/include/mach/memory.h      |    2 +-
 arch/arm/mach-integrator/include/mach/memory.h |    2 +-
 arch/arm/mach-iop13xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-iop32x/include/mach/memory.h     |    2 +-
 arch/arm/mach-iop33x/include/mach/memory.h     |    2 +-
 arch/arm/mach-ixp2000/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp23xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp4xx/include/mach/memory.h     |    2 +-
 arch/arm/mach-kirkwood/include/mach/memory.h   |    2 +-
 arch/arm/mach-ks8695/include/mach/memory.h     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/memory.h    |    2 +-
 arch/arm/mach-loki/include/mach/memory.h       |    2 +-
 arch/arm/mach-lpc32xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-mmp/include/mach/memory.h        |    2 +-
 arch/arm/mach-msm/board-msm7x30.c              |    2 +-
 arch/arm/mach-msm/include/mach/memory.h        |   10 +++++-----
 arch/arm/mach-mv78xx0/include/mach/memory.h    |    2 +-
 arch/arm/mach-mx3/mach-kzm_arm11_01.c          |    2 +-
 arch/arm/mach-netx/include/mach/memory.h       |    2 +-
 arch/arm/mach-nomadik/include/mach/memory.h    |    2 +-
 arch/arm/mach-ns9xxx/include/mach/memory.h     |    2 +-
 arch/arm/mach-nuc93x/include/mach/memory.h     |    2 +-
 arch/arm/mach-orion5x/include/mach/memory.h    |    2 +-
 arch/arm/mach-pnx4008/include/mach/memory.h    |    2 +-
 arch/arm/mach-pxa/include/mach/memory.h        |    2 +-
 arch/arm/mach-realview/include/mach/memory.h   |    4 ++--
 arch/arm/mach-rpc/include/mach/memory.h        |    2 +-
 arch/arm/mach-s3c2400/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c2410/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c24a0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c64xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p6442/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p64x0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pc100/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv210/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv310/include/mach/memory.h    |    2 +-
 arch/arm/mach-sa1100/include/mach/memory.h     |    2 +-
 arch/arm/mach-shark/include/mach/memory.h      |    2 +-
 arch/arm/mach-shmobile/include/mach/memory.h   |    2 +-
 arch/arm/mach-tegra/include/mach/memory.h      |    2 +-
 arch/arm/mach-u300/include/mach/memory.h       |    6 +++---
 arch/arm/mach-u300/u300.c                      |    2 +-
 arch/arm/mach-ux500/include/mach/memory.h      |    2 +-
 arch/arm/mach-versatile/include/mach/memory.h  |    2 +-
 arch/arm/mach-vexpress/include/mach/memory.h   |    2 +-
 arch/arm/mach-w90x900/include/mach/memory.h    |    2 +-
 arch/arm/plat-omap/include/plat/memory.h       |    4 ++--
 arch/arm/plat-spear/include/plat/memory.h      |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/memory.h   |    2 +-
 arch/arm/plat-tcc/include/mach/memory.h        |    2 +-
 63 files changed, 77 insertions(+), 75 deletions(-)
Quoted 8 lines
Quoted 2 lines

You didn't touch arch/arm/plat-mxc/include/mach/memory.h which defines PHYS_OFFSET, too. I assume you just missed these?

Grr.

That's because it didn't match the '#define *PHYS_OFFSET' regexp I used to find all the definitions. This is exactly why being different from everyone else is a bad idea - you get missed.

I'm sure now you already noticed for yourself you missed arch/arm/mach-gemini/include/mach/memory.h, too.

(The command I used to find this is

	git grep -E '#[[:blank:]]*define[[:blank:]]+PHYS_OFFSET' arch/arm | grep -v '#define *PHYS_OFFSET'

in case someone used tabs after the define; doesn't seem to be the case though.)

Best regards
Uwe

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#7 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux
Quoted 10 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

arch/arm/plat-spear/include/plat/memory.h +0 -0
index 27a4aba..7e3599e 100644

arch/arm/plat-spear/include/plat/memory.h line 20

Quoted 7 lines
arch/arm/plat-spear/include/plat/memory.h +1 -1
@@ -15,6 +15,6 @@
 #define __PLAT_MEMORY_H
 
 /* Physical DRAM offset */
-#define PHYS_OFFSET            UL(0x00000000)
+#define PLAT_PHYS_OFFSET               UL(0x00000000)
 
 #endif /* __PLAT_MEMORY_H */
Signature · 1 line
viresh
#8 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux
Quoted 20 lines · Russell King

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

arch/arm/mach-ep93xx/include/mach/memory.h +2 -3
index 554064e..c9400cf 100644
@@ -6,15 +6,15 @@
 #define __ASM_ARCH_MEMORY_H
 
 #if defined(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0x00000000)
+#define PLAT_PHYS_OFFSET		UL(0x00000000)
 #elif defined(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xc0000000)
+#define PLAT_PHYS_OFFSET		UL(0xc0000000)
 #elif defined(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xd0000000)

arch/arm/mach-ep93xx/include/mach/memory.h line 20

Quoted 10 lines
arch/arm/mach-ep93xx/include/mach/memory.h +3 -2
+#define PLAT_PHYS_OFFSET		UL(0xd0000000)
 #elif defined(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xe0000000)
+#define PLAT_PHYS_OFFSET		UL(0xe0000000)
 #elif defined(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)
-#define PHYS_OFFSET		UL(0xf0000000)
+#define PLAT_PHYS_OFFSET		UL(0xf0000000)
 #else
 #error "Kconfig bug: No EP93xx PHYS_OFFSET set"
 #endif
maintainer
#9 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux
Quoted 7 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
?arch/arm/include/asm/memory.h ? ? ? ? ? ? ? ? ?| ? ?2 ++ ?arch/arm/kernel/tcm.c ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-

...

Quoted 1 line

?arch/arm/mach-shmobile/include/mach/memory.h ? | ? ?2 +-

Applied on top of sh-2.6 git c422a5992e9ca072e8e472ee8f518649fb07470e and successfully booted on a sh7372-based Mackerel board.

#10 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Quoted 9 lines · Magnus Damm
Quoted 7 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
?arch/arm/include/asm/memory.h ? ? ? ? ? ? ? ? ?| ? ?2 ++ ?arch/arm/kernel/tcm.c ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-

Quoted 7 lines

...

Quoted 1 line

?arch/arm/mach-shmobile/include/mach/memory.h ? | ? ?2 +-

Applied on top of sh-2.6 git c422a5992e9ca072e8e472ee8f518649fb07470e and successfully booted on a sh7372-based Mackerel board.

#11 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux
Quoted 9 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-

Best Regards,
J.

#12 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux

2011/1/5 Russell King - ARM Linux <[email protected]>:

Quoted 922 lines

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---

?arch/arm/include/asm/memory.h ? ? ? ? ? ? ? ? ?| ? ?2 ++
?arch/arm/kernel/tcm.c ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
?arch/arm/mach-aaec2000/include/mach/memory.h ? | ? ?2 +-
?arch/arm/mach-at91/include/mach/memory.h ? ? ? | ? ?2 +-
?arch/arm/mach-bcmring/include/mach/hardware.h ?| ? ?2 +-
?arch/arm/mach-bcmring/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-clps711x/include/mach/memory.h ? | ? ?2 +-
?arch/arm/mach-cns3xxx/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-davinci/include/mach/memory.h ? ?| ? ?4 ++--
?arch/arm/mach-dove/include/mach/memory.h ? ? ? | ? ?2 +-
?arch/arm/mach-ebsa110/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-ep93xx/include/mach/memory.h ? ? | ? 10 +++++-----
?arch/arm/mach-footbridge/include/mach/memory.h | ? ?2 +-
?arch/arm/mach-h720x/include/mach/memory.h ? ? ?| ? ?2 +-
?arch/arm/mach-integrator/include/mach/memory.h | ? ?2 +-
?arch/arm/mach-iop13xx/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-iop32x/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-iop33x/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-ixp2000/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-ixp23xx/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-ixp4xx/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-kirkwood/include/mach/memory.h ? | ? ?2 +-
?arch/arm/mach-ks8695/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-lh7a40x/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-loki/include/mach/memory.h ? ? ? | ? ?2 +-
?arch/arm/mach-lpc32xx/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-mmp/include/mach/memory.h ? ? ? ?| ? ?2 +-
?arch/arm/mach-msm/board-msm7x30.c ? ? ? ? ? ? ?| ? ?2 +-
?arch/arm/mach-msm/include/mach/memory.h ? ? ? ?| ? 10 +++++-----
?arch/arm/mach-mv78xx0/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-mx3/mach-kzm_arm11_01.c ? ? ? ? ?| ? ?2 +-
?arch/arm/mach-netx/include/mach/memory.h ? ? ? | ? ?2 +-
?arch/arm/mach-nomadik/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-ns9xxx/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-nuc93x/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-orion5x/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-pnx4008/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-pxa/include/mach/memory.h ? ? ? ?| ? ?2 +-
?arch/arm/mach-realview/include/mach/memory.h ? | ? ?4 ++--
?arch/arm/mach-rpc/include/mach/memory.h ? ? ? ?| ? ?2 +-
?arch/arm/mach-s3c2400/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s3c2410/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s3c24a0/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s3c64xx/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s5p6442/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s5p64x0/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s5pc100/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s5pv210/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-s5pv310/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/mach-sa1100/include/mach/memory.h ? ? | ? ?2 +-
?arch/arm/mach-shark/include/mach/memory.h ? ? ?| ? ?2 +-
?arch/arm/mach-shmobile/include/mach/memory.h ? | ? ?2 +-
?arch/arm/mach-tegra/include/mach/memory.h ? ? ?| ? ?2 +-
?arch/arm/mach-u300/include/mach/memory.h ? ? ? | ? ?6 +++---
?arch/arm/mach-u300/u300.c ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
?arch/arm/mach-ux500/include/mach/memory.h ? ? ?| ? ?2 +-
?arch/arm/mach-versatile/include/mach/memory.h ?| ? ?2 +-
?arch/arm/mach-vexpress/include/mach/memory.h ? | ? ?2 +-
?arch/arm/mach-w90x900/include/mach/memory.h ? ?| ? ?2 +-
?arch/arm/plat-omap/include/plat/memory.h ? ? ? | ? ?4 ++--
?arch/arm/plat-spear/include/plat/memory.h ? ? ?| ? ?2 +-
?arch/arm/plat-stmp3xxx/include/mach/memory.h ? | ? ?2 +-
?arch/arm/plat-tcc/include/mach/memory.h ? ? ? ?| ? ?2 +-

?63 files changed, 77 insertions(+), 75 deletions(-)

arch/arm/include/asm/memory.h +0 -0
index 23c2e8e..00b04ae 100644
@@ -24,6 +24,8 @@

?*/
?#define UL(x) _AC(x, UL)

arch/arm/include/asm/memory.h +2 -0
+#define PHYS_OFFSET ? ?PLAT_PHYS_OFFSET
+

?#ifdef CONFIG_MMU

?/*

arch/arm/kernel/tcm.c +0 -0
index 26685c2..f5cf660 100644
@@ -15,7 +15,7 @@

?#include <linux/string.h> /* memcpy */
?#include <asm/cputype.h>
?#include <asm/mach/map.h>

arch/arm/kernel/tcm.c +1 -1
-#include <mach/memory.h>
+#include <asm/memory.h>

?#include "tcm.h"

?static struct gen_pool *tcm_pool;

arch/arm/mach-aaec2000/include/mach/memory.h +0 -0
index 4f93c56..4a10bf0 100644
@@ -12,6 +12,6 @@

?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-aaec2000/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xf0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xf0000000)

?#endif /* __ASM_ARCH_MEMORY_H */

arch/arm/mach-at91/include/mach/memory.h +0 -0
index 14f4ef4..c2cfe50 100644
@@ -23,6 +23,6 @@
 

?#include <mach/hardware.h>

arch/arm/mach-at91/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?(AT91_SDRAM_BASE)
+#define PLAT_PHYS_OFFSET ? ? ? (AT91_SDRAM_BASE)

?#endif

arch/arm/mach-bcmring/include/mach/hardware.h +0 -0
index 447eb34..8bf3564 100644
@@ -31,7 +31,7 @@

?* ?*_SIZE ?is the size of the region
?* ?*_BASE ?is the virtual address
?*/

arch/arm/mach-bcmring/include/mach/hardware.h +1 -1
-#define RAM_START ? ? ? ? ? ? ? PHYS_OFFSET
+#define RAM_START ? ? ? ? ? ? ? PLAT_PHYS_OFFSET

?#define RAM_SIZE ? ? ? ? ? ? ? ?(CFG_GLOBAL_RAM_SIZE-CFG_GLOBAL_RAM_SIZE_RESERVED) ?#define RAM_BASE ? ? ? ? ? ? ? ?PAGE_OFFSET

arch/arm/mach-bcmring/include/mach/memory.h +0 -0
index 114f942..15162e4 100644
@@ -23,7 +23,7 @@

?* files. ?Use virt_to_phys/phys_to_virt/__pa/__va instead. ?*/

arch/arm/mach-bcmring/include/mach/memory.h +1 -1
-#define PHYS_OFFSET CFG_GLOBAL_RAM_BASE
+#define PLAT_PHYS_OFFSET CFG_GLOBAL_RAM_BASE

?/*
?* Maximum DMA memory allowed is 14M

arch/arm/mach-clps711x/include/mach/memory.h +0 -0
index f45c8e8..3a032a6 100644
@@ -23,7 +23,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-clps711x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xc0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xc0000000)

?#if !defined(CONFIG_ARCH_CDB89712) && !defined (CONFIG_ARCH_AUTCPU12)

arch/arm/mach-cns3xxx/include/mach/memory.h +0 -0
index 3b6b769..dc16c5c 100644
@@ -13,7 +13,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-cns3xxx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#define __phys_to_bus(x) ? ? ? ((x) + PHYS_OFFSET) ?#define __bus_to_phys(x) ? ? ? ((x) - PHYS_OFFSET)

arch/arm/mach-davinci/include/mach/memory.h +0 -0
index 22eb97c..7882272 100644
@@ -26,9 +26,9 @@
 ?#if defined(CONFIG_ARCH_DAVINCI_DA8XX) && defined(CONFIG_ARCH_DAVINCI_DMx)

?#error Cannot enable DaVinci and DA8XX platforms concurrently ?#elif defined(CONFIG_ARCH_DAVINCI_DA8XX)

arch/arm/mach-davinci/include/mach/memory.h +1 -1
-#define PHYS_OFFSET DA8XX_DDR_BASE
+#define PLAT_PHYS_OFFSET DA8XX_DDR_BASE

?#else

arch/arm/mach-davinci/include/mach/memory.h +1 -1
-#define PHYS_OFFSET DAVINCI_DDR_BASE
+#define PLAT_PHYS_OFFSET DAVINCI_DDR_BASE

?#endif

?#define DDR2_SDRCR_OFFSET ? ? ?0xc

arch/arm/mach-dove/include/mach/memory.h +0 -0
index d668720..bbc93fe 100644
@@ -5,6 +5,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-dove/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-ebsa110/include/mach/memory.h +0 -0
index 0ca66d0..8e49066 100644
@@ -19,7 +19,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-ebsa110/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?/*
?* Cache flushing area - SRAM

arch/arm/mach-ep93xx/include/mach/memory.h +0 -0
index 554064e..c9400cf 100644
@@ -6,15 +6,15 @@

?#define __ASM_ARCH_MEMORY_H

?#if defined(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)

arch/arm/mach-ep93xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#elif defined(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)

arch/arm/mach-ep93xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0xc0000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0xc0000000)

?#elif defined(CONFIG_EP93XX_SDCE1_PHYS_OFFSET)

arch/arm/mach-ep93xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0xd0000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0xd0000000)

?#elif defined(CONFIG_EP93XX_SDCE2_PHYS_OFFSET)

arch/arm/mach-ep93xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0xe0000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0xe0000000)

?#elif defined(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET)

arch/arm/mach-ep93xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0xf0000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0xf0000000)

?#else
?#error "Kconfig bug: No EP93xx PHYS_OFFSET set"
?#endif

arch/arm/mach-footbridge/include/mach/memory.h +0 -0
index 8d64f45..5c6df37 100644
@@ -62,7 +62,7 @@ extern unsigned long __bus_to_pfn(unsigned long);

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-footbridge/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#define FLUSH_BASE_PHYS ? ? ? ? ? ? ? ?0x50000000

arch/arm/mach-h720x/include/mach/memory.h +0 -0
index ef4c1e2..9d36876 100644
@@ -7,7 +7,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-h720x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x40000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x40000000)

?/*
?* This is the maximum DMA address that can be DMAd to. ?* There should not be more than (0xd0000000 - 0xc0000000)

arch/arm/mach-integrator/include/mach/memory.h +0 -0
index 991f24d..334d5e2 100644
@@ -23,7 +23,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-integrator/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#define BUS_OFFSET ? ? UL(0x80000000)
?#define __virt_to_bus(x) ? ? ? ((x) - PAGE_OFFSET + BUS_OFFSET)

arch/arm/mach-iop13xx/include/mach/memory.h +0 -0
index 3ad4553..1afa99e 100644
@@ -6,7 +6,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-iop13xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#ifndef __ASSEMBLY__

arch/arm/mach-iop32x/include/mach/memory.h +0 -0
index c30f645..169cc23 100644
@@ -8,6 +8,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-iop32x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xa0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xa0000000)

?#endif

arch/arm/mach-iop33x/include/mach/memory.h +0 -0
index a30a96a..8e1daf7 100644
@@ -8,6 +8,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-iop33x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-ixp2000/include/mach/memory.h +0 -0
index 98e3471..5f0c4fd 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-ixp2000/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#include <mach/ixp2000-regs.h>

arch/arm/mach-ixp23xx/include/mach/memory.h +0 -0
index 6ef65d8..6cf0704 100644
@@ -17,7 +17,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-ixp23xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? (0x00000000)

?#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)

arch/arm/mach-ixp4xx/include/mach/memory.h +0 -0
index 0136eaa..6d388c9 100644
@@ -12,7 +12,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-ixp4xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)

arch/arm/mach-kirkwood/include/mach/memory.h +0 -0
index 45431e1..4600b44 100644
@@ -5,6 +5,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-kirkwood/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-ks8695/include/mach/memory.h +0 -0
index bace9a6..f7e1b9b 100644
@@ -18,7 +18,7 @@

?/*
?* Physical SRAM offset.
?*/

arch/arm/mach-ks8695/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?KS8695_SDRAM_PA
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? KS8695_SDRAM_PA

?#ifndef __ASSEMBLY__

arch/arm/mach-lh7a40x/include/mach/memory.h +0 -0
index edb8f5f..f77bde8 100644
@@ -17,7 +17,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-lh7a40x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xc0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xc0000000)

?/*
?* Sparsemem version of the above

arch/arm/mach-loki/include/mach/memory.h +0 -0
index 2ed7e6e..6636665 100644
@@ -5,6 +5,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-loki/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-lpc32xx/include/mach/memory.h +0 -0
index 044e1ac..a647dd6 100644
@@ -22,6 +22,6 @@

?/*
?* Physical DRAM offset of bank 0
?*/

arch/arm/mach-lpc32xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x80000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x80000000)

?#endif

arch/arm/mach-mmp/include/mach/memory.h +0 -0
index bdb21d7..d68b50a 100644
@@ -9,6 +9,6 @@

?#ifndef __ASM_MACH_MEMORY_H
?#define __ASM_MACH_MEMORY_H

arch/arm/mach-mmp/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif /* __ASM_MACH_MEMORY_H */

arch/arm/mach-msm/board-msm7x30.c +0 -0
index 05241df..1931e07 100644
@@ -25,11 +25,11 @@
 

?#include <asm/mach-types.h>
?#include <asm/mach/arch.h>
+#include <asm/memory.h>
?#include <asm/setup.h>

?#include <mach/gpio.h>
?#include <mach/board.h>
-#include <mach/memory.h>
?#include <mach/msm_iomap.h>
?#include <mach/dma.h>

arch/arm/mach-msm/include/mach/memory.h +0 -0
index 070e17d..176875d 100644
@@ -18,15 +18,15 @@
 

?/* physical offset of RAM */
?#if defined(CONFIG_ARCH_QSD8X50) && defined(CONFIG_MSM_SOC_REV_A)

arch/arm/mach-msm/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#elif defined(CONFIG_ARCH_QSD8X50)

arch/arm/mach-msm/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x20000000)

?#elif defined(CONFIG_ARCH_MSM7X30)

arch/arm/mach-msm/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00200000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00200000)

?#elif defined(CONFIG_ARCH_MSM8X60)

arch/arm/mach-msm/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x40200000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x40200000)

?#else

arch/arm/mach-msm/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x10000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x10000000)

?#endif

?#endif

arch/arm/mach-mv78xx0/include/mach/memory.h +0 -0
index e663042..a648c51 100644
@@ -5,6 +5,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-mv78xx0/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-mx3/mach-kzm_arm11_01.c +0 -0
index 042cd56..d8ebde8 100644
@@ -27,6 +27,7 @@
 

?#include <asm/irq.h>
?#include <asm/mach-types.h>
+#include <asm/memory.h>
?#include <asm/setup.h>
?#include <asm/mach/arch.h>
?#include <asm/mach/irq.h>

arch/arm/mach-mx3/mach-kzm_arm11_01.c +0 -0
@@ -36,7 +37,6 @@

?#include <mach/clock.h>
?#include <mach/common.h>
?#include <mach/iomux-mx3.h>
-#include <mach/memory.h>

?#include "devices-imx31.h"
?#include "devices.h"

arch/arm/mach-netx/include/mach/memory.h +0 -0
index 9a363f2..5956149 100644
@@ -20,7 +20,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-netx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET UL(0x80000000)
+#define PLAT_PHYS_OFFSET UL(0x80000000)

?#endif

arch/arm/mach-nomadik/include/mach/memory.h +0 -0
index 1e5689d..d332521 100644
@@ -23,6 +23,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-nomadik/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-ns9xxx/include/mach/memory.h +1 -1
index 6107193..5c65aee 100644
@@ -19,6 +19,6 @@
 ?#define NS9XXX_CS2STAT_LENGTH ?UL(0x1000)
 ?#define NS9XXX_CS3STAT_LENGTH ?UL(0x1000)
 
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)
 

?#endif

arch/arm/mach-nuc93x/include/mach/memory.h +0 -0
index 323ab0d..ef9864b 100644
@@ -16,6 +16,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-nuc93x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-orion5x/include/mach/memory.h +0 -0
index 52a2955..6769917 100644
@@ -7,6 +7,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-orion5x/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-pnx4008/include/mach/memory.h +0 -0
index 0e87700..1275db6 100644
@@ -16,6 +16,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-pnx4008/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x80000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x80000000)

?#endif

arch/arm/mach-pxa/include/mach/memory.h +0 -0
index 92361a6..7f68724 100644
@@ -15,7 +15,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-pxa/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xa0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xa0000000)

?#if !defined(__ASSEMBLY__) && defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI) ?void cmx2xx_pci_adjust_zones(unsigned long *size, unsigned long *holes);

arch/arm/mach-realview/include/mach/memory.h +0 -0
index 5dafc15..e05fc2c 100644
@@ -24,9 +24,9 @@

?* Physical DRAM offset.
?*/
?#ifdef CONFIG_REALVIEW_HIGH_PHYS_OFFSET

arch/arm/mach-realview/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x70000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x70000000)

?#else

arch/arm/mach-realview/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif

?#if !defined(__ASSEMBLY__) && defined(CONFIG_ZONE_DMA)

arch/arm/mach-rpc/include/mach/memory.h +0 -0
index 78191bf..18a2210 100644
@@ -21,7 +21,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-rpc/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x10000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x10000000)

?/*
?* Cache flushing area - ROM

arch/arm/mach-s3c2400/include/mach/memory.h +0 -0
index cf5901f..3f33670 100644
@@ -15,6 +15,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s3c2400/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x0C000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x0C000000)

?#endif

arch/arm/mach-s3c2410/include/mach/memory.h +0 -0
index 6f1e587..f92b97b 100644
@@ -11,6 +11,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s3c2410/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x30000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x30000000)

?#endif

arch/arm/mach-s3c24a0/include/mach/memory.h +0 -0
index 7d74fd5..7d208a7 100644
@@ -11,7 +11,7 @@

?#ifndef __ASM_ARCH_24A0_MEMORY_H
?#define __ASM_ARCH_24A0_MEMORY_H __FILE__

arch/arm/mach-s3c24a0/include/mach/memory.h +1 -1
-#define PHYS_OFFSET UL(0x10000000)
+#define PLAT_PHYS_OFFSET UL(0x10000000)

?#define __virt_to_bus(x) __virt_to_phys(x)
?#define __bus_to_virt(x) __phys_to_virt(x)

arch/arm/mach-s3c64xx/include/mach/memory.h +0 -0
index 42cc54e..4760cda 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s3c64xx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? UL(0x50000000)
+#define PLAT_PHYS_OFFSET ? ? UL(0x50000000)

?#define CONSISTENT_DMA_SIZE ? ?SZ_8M

arch/arm/mach-s5p6442/include/mach/memory.h +0 -0
index 9ddd877..cfe259d 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s5p6442/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x20000000)

?#define CONSISTENT_DMA_SIZE ? ?SZ_8M

?#endif /* __ASM_ARCH_MEMORY_H */

arch/arm/mach-s5p64x0/include/mach/memory.h +0 -0
index 1b036b0..365a6eb 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H __FILE__

arch/arm/mach-s5p64x0/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x20000000)

?#define CONSISTENT_DMA_SIZE ? ?SZ_8M

?#endif /* __ASM_ARCH_MEMORY_H */

arch/arm/mach-s5pc100/include/mach/memory.h +0 -0
index 4b60d18..bda4e79 100644
@@ -13,6 +13,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s5pc100/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x20000000)

?#endif

arch/arm/mach-s5pv210/include/mach/memory.h +0 -0
index d503e0c..7b5fcf0 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-s5pv210/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x20000000)

?#define CONSISTENT_DMA_SIZE ? ?(SZ_8M + SZ_4M + SZ_2M)

?/*

arch/arm/mach-s5pv310/include/mach/memory.h +0 -0
index 1dffb48..470b01b 100644
@@ -13,7 +13,7 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H __FILE__

arch/arm/mach-s5pv310/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x40000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x40000000)

?/* Maximum of 256MiB in one bank */
?#define MAX_PHYSMEM_BITS ? ? ? 32

arch/arm/mach-sa1100/include/mach/memory.h +0 -0
index 128a1df..a44da6a 100644
@@ -12,7 +12,7 @@

?/*
?* Physical DRAM offset is 0xc0000000 on the SA1100 ?*/

arch/arm/mach-sa1100/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0xc0000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0xc0000000)

?#ifndef __ASSEMBLY__

arch/arm/mach-shark/include/mach/memory.h +0 -0
index d9c4812..9afb170 100644
@@ -15,7 +15,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-shark/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? UL(0x08000000)
+#define PLAT_PHYS_OFFSET ? ? UL(0x08000000)

?#ifndef __ASSEMBLY__

arch/arm/mach-shmobile/include/mach/memory.h +0 -0
index 377584e..ad00c3c 100644
@@ -1,7 +1,7 @@

?#ifndef __ASM_MACH_MEMORY_H
?#define __ASM_MACH_MEMORY_H

arch/arm/mach-shmobile/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(CONFIG_MEMORY_START)
+#define PLAT_PHYS_OFFSET ? ? ? UL(CONFIG_MEMORY_START)

?#define MEM_SIZE ? ? ? UL(CONFIG_MEMORY_SIZE)

?/* DMA memory at 0xf6000000 - 0xffdfffff */

arch/arm/mach-tegra/include/mach/memory.h +0 -0
index 6151bab..537db3a 100644
@@ -22,7 +22,7 @@

?#define __MACH_TEGRA_MEMORY_H

?/* physical offset of RAM */

arch/arm/mach-tegra/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0)

?#endif

arch/arm/mach-u300/include/mach/memory.h +0 -0
index bf134bc..888e2e3 100644
@@ -15,17 +15,17 @@
 

?#ifdef CONFIG_MACH_U300_DUAL_RAM

arch/arm/mach-u300/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x48000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x48000000)

?#define BOOT_PARAMS_OFFSET ? ? (PHYS_OFFSET + 0x100)

?#else

?#ifdef CONFIG_MACH_U300_2MB_ALIGNMENT_FIX

arch/arm/mach-u300/include/mach/memory.h +1 -1
-#define PHYS_OFFSET (0x28000000 + \
+#define PLAT_PHYS_OFFSET (0x28000000 + \

? ? ? ? ? ? (CONFIG_MACH_U300_ACCESS_MEM_SIZE - \
? ? ? ? ? ? (CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1))*1024*1024) ?#else

arch/arm/mach-u300/include/mach/memory.h +1 -1
-#define PHYS_OFFSET (0x28000000 + \
+#define PLAT_PHYS_OFFSET (0x28000000 + \

? ? ? ? ? ? (CONFIG_MACH_U300_ACCESS_MEM_SIZE + ? ? ? ?\
? ? ? ? ? ? (CONFIG_MACH_U300_ACCESS_MEM_SIZE & 1))*1024*1024) ?#endif

arch/arm/mach-u300/u300.c +0 -0
index 07c35a8..48b3b7f 100644
@@ -19,9 +19,9 @@

?#include <linux/io.h>
?#include <mach/hardware.h>
?#include <mach/platform.h>
-#include <mach/memory.h>
?#include <asm/mach-types.h>
?#include <asm/mach/arch.h>
+#include <asm/memory.h>

?static void __init u300_reserve(void)
?{

arch/arm/mach-ux500/include/mach/memory.h +0 -0
index 510571a..2ef697a 100644
@@ -12,7 +12,7 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-ux500/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#define BUS_OFFSET ? ? UL(0x00000000)

?#endif

arch/arm/mach-versatile/include/mach/memory.h +0 -0
index 79aeab8..dacc9d8 100644
@@ -23,6 +23,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/mach-versatile/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/mach-vexpress/include/mach/memory.h +0 -0
index be28232..5b7fcd4 100644
@@ -20,6 +20,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-vexpress/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x60000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x60000000)

?#endif

arch/arm/mach-w90x900/include/mach/memory.h +0 -0
index 971b807..f02905b 100644
@@ -18,6 +18,6 @@

?#ifndef __ASM_ARCH_MEMORY_H
?#define __ASM_ARCH_MEMORY_H

arch/arm/mach-w90x900/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x00000000)

?#endif

arch/arm/plat-omap/include/plat/memory.h +0 -0
index f8d922f..e6720aa 100644
@@ -37,9 +37,9 @@

?* Physical DRAM offset.
?*/
?#if defined(CONFIG_ARCH_OMAP1)

arch/arm/plat-omap/include/plat/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x10000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x10000000)

?#else

arch/arm/plat-omap/include/plat/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x80000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x80000000)

?#endif

?/*

arch/arm/plat-spear/include/plat/memory.h +0 -0
index 27a4aba..7e3599e 100644
@@ -15,6 +15,6 @@

?#define __PLAT_MEMORY_H

?/* Physical DRAM offset */

arch/arm/plat-spear/include/plat/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x00000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x00000000)

?#endif /* __PLAT_MEMORY_H */

arch/arm/plat-stmp3xxx/include/mach/memory.h +0 -0
index 7b875a0..61fa548 100644
@@ -17,6 +17,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/plat-stmp3xxx/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ?UL(0x40000000)
+#define PLAT_PHYS_OFFSET ? ? ? UL(0x40000000)

?#endif

arch/arm/plat-tcc/include/mach/memory.h +0 -0
index cd91ba8..28a6e0c 100644
@@ -13,6 +13,6 @@

?/*
?* Physical DRAM offset.
?*/

arch/arm/plat-tcc/include/mach/memory.h +1 -1
-#define PHYS_OFFSET ? ? ? ? ? ?UL(0x20000000)
+#define PLAT_PHYS_OFFSET ? ? ? ? ? ? ? UL(0x20000000)
Quoted 5 lines

?#endif
--
1.6.2.5

Thanks!

Signature · 10 lines
*linux-arm-kernel mailing list
mail addr:linux-arm-kernel at lists.infradead.org
you can subscribe by:
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

* linux-arm-NUC900 mailing list
mail addr:NUC900 at googlegroups.com
main web: https://groups.google.com/group/NUC900
you can subscribe it by sending me mail:
mcuos.com at gmail.com
#13 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

In reply to Russell King - ARM Linux
Quoted 97 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---
 arch/arm/include/asm/memory.h                  |    2 ++
 arch/arm/kernel/tcm.c                          |    2 +-
 arch/arm/mach-aaec2000/include/mach/memory.h   |    2 +-
 arch/arm/mach-at91/include/mach/memory.h       |    2 +-
 arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
 arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
 arch/arm/mach-clps711x/include/mach/memory.h   |    2 +-
 arch/arm/mach-cns3xxx/include/mach/memory.h    |    2 +-
 arch/arm/mach-davinci/include/mach/memory.h    |    4 ++--
 arch/arm/mach-dove/include/mach/memory.h       |    2 +-
 arch/arm/mach-ebsa110/include/mach/memory.h    |    2 +-
 arch/arm/mach-ep93xx/include/mach/memory.h     |   10 +++++-----
 arch/arm/mach-footbridge/include/mach/memory.h |    2 +-
 arch/arm/mach-h720x/include/mach/memory.h      |    2 +-
 arch/arm/mach-integrator/include/mach/memory.h |    2 +-
 arch/arm/mach-iop13xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-iop32x/include/mach/memory.h     |    2 +-
 arch/arm/mach-iop33x/include/mach/memory.h     |    2 +-
 arch/arm/mach-ixp2000/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp23xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-ixp4xx/include/mach/memory.h     |    2 +-
 arch/arm/mach-kirkwood/include/mach/memory.h   |    2 +-
 arch/arm/mach-ks8695/include/mach/memory.h     |    2 +-
 arch/arm/mach-lh7a40x/include/mach/memory.h    |    2 +-
 arch/arm/mach-loki/include/mach/memory.h       |    2 +-
 arch/arm/mach-lpc32xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-mmp/include/mach/memory.h        |    2 +-
 arch/arm/mach-msm/board-msm7x30.c              |    2 +-
 arch/arm/mach-msm/include/mach/memory.h        |   10 +++++-----
 arch/arm/mach-mv78xx0/include/mach/memory.h    |    2 +-
 arch/arm/mach-mx3/mach-kzm_arm11_01.c          |    2 +-
 arch/arm/mach-netx/include/mach/memory.h       |    2 +-
 arch/arm/mach-nomadik/include/mach/memory.h    |    2 +-
 arch/arm/mach-ns9xxx/include/mach/memory.h     |    2 +-
 arch/arm/mach-nuc93x/include/mach/memory.h     |    2 +-
 arch/arm/mach-orion5x/include/mach/memory.h    |    2 +-
 arch/arm/mach-pnx4008/include/mach/memory.h    |    2 +-
 arch/arm/mach-pxa/include/mach/memory.h        |    2 +-
 arch/arm/mach-realview/include/mach/memory.h   |    4 ++--
 arch/arm/mach-rpc/include/mach/memory.h        |    2 +-
 arch/arm/mach-s3c2400/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c2410/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c24a0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s3c64xx/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p6442/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5p64x0/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pc100/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv210/include/mach/memory.h    |    2 +-
 arch/arm/mach-s5pv310/include/mach/memory.h    |    2 +-
 arch/arm/mach-sa1100/include/mach/memory.h     |    2 +-
 arch/arm/mach-shark/include/mach/memory.h      |    2 +-
 arch/arm/mach-shmobile/include/mach/memory.h   |    2 +-
 arch/arm/mach-tegra/include/mach/memory.h      |    2 +-
 arch/arm/mach-u300/include/mach/memory.h       |    6 +++---
 arch/arm/mach-u300/u300.c                      |    2 +-
 arch/arm/mach-ux500/include/mach/memory.h      |    2 +-
 arch/arm/mach-versatile/include/mach/memory.h  |    2 +-
 arch/arm/mach-vexpress/include/mach/memory.h   |    2 +-
 arch/arm/mach-w90x900/include/mach/memory.h    |    2 +-
 arch/arm/plat-omap/include/plat/memory.h       |    4 ++--
 arch/arm/plat-spear/include/plat/memory.h      |    2 +-
 arch/arm/plat-stmp3xxx/include/mach/memory.h   |    2 +-
 arch/arm/plat-tcc/include/mach/memory.h        |    2 +-
 63 files changed, 77 insertions(+), 75 deletions(-)
arch/arm/include/asm/memory.h +2 -0
index 23c2e8e..00b04ae 100644
@@ -24,6 +24,8 @@
  */
 #define UL(x) _AC(x, UL)
 
+#define PHYS_OFFSET	PLAT_PHYS_OFFSET
+
 #ifdef CONFIG_MMU
 
 /*
arch/arm/kernel/tcm.c +1 -1
index 26685c2..f5cf660 100644
@@ -15,7 +15,7 @@
 #include <linux/string.h> /* memcpy */
 #include <asm/cputype.h>
 #include <asm/mach/map.h>
-#include <mach/memory.h>
+#include <asm/memory.h>
 #include "tcm.h"
 
 static struct gen_pool *tcm_pool;

(snip)

Quoted 123 lines
arch/arm/mach- renamed from arch/arm/mach-s3c2400/include/mach/memory.h +0 -0

s3c2400/include/mach/memory.h
index cf5901f..3f33670 100644

arch/arm/mach-s3c2400/include/mach/memory.h +1 -1
@@ -15,6 +15,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x0C000000)
+#define PLAT_PHYS_OFFSET	UL(0x0C000000)
 
 #endif
arch/arm/mach- renamed from arch/arm/mach-s3c2410/include/mach/memory.h +0 -0

s3c2410/include/mach/memory.h
index 6f1e587..f92b97b 100644

arch/arm/mach-s3c2410/include/mach/memory.h +1 -1
@@ -11,6 +11,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET	UL(0x30000000)
+#define PLAT_PHYS_OFFSET	UL(0x30000000)
 
 #endif
arch/arm/mach- renamed from arch/arm/mach-s3c24a0/include/mach/memory.h +0 -0

s3c24a0/include/mach/memory.h
index 7d74fd5..7d208a7 100644

arch/arm/mach-s3c24a0/include/mach/memory.h +1 -1
@@ -11,7 +11,7 @@
 #ifndef __ASM_ARCH_24A0_MEMORY_H
 #define __ASM_ARCH_24A0_MEMORY_H __FILE__
 
-#define PHYS_OFFSET UL(0x10000000)
+#define PLAT_PHYS_OFFSET UL(0x10000000)
 
 #define __virt_to_bus(x) __virt_to_phys(x)
 #define __bus_to_virt(x) __phys_to_virt(x)
arch/arm/mach- renamed from arch/arm/mach-s3c64xx/include/mach/memory.h +0 -0

s3c64xx/include/mach/memory.h
index 42cc54e..4760cda 100644

arch/arm/mach-s3c64xx/include/mach/memory.h +1 -1
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET     UL(0x50000000)
+#define PLAT_PHYS_OFFSET     UL(0x50000000)
 
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
arch/arm/mach- renamed from arch/arm/mach-s5p6442/include/mach/memory.h +0 -0

s5p6442/include/mach/memory.h
index 9ddd877..cfe259d 100644

arch/arm/mach-s5p6442/include/mach/memory.h +1 -1
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
 #endif /* __ASM_ARCH_MEMORY_H */
arch/arm/mach- renamed from arch/arm/mach-s5p64x0/include/mach/memory.h +0 -0

s5p64x0/include/mach/memory.h
index 1b036b0..365a6eb 100644

arch/arm/mach-s5p64x0/include/mach/memory.h +1 -1
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H __FILE__
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	SZ_8M
 
 #endif /* __ASM_ARCH_MEMORY_H */
arch/arm/mach- renamed from arch/arm/mach-s5pc100/include/mach/memory.h +0 -0

s5pc100/include/mach/memory.h
index 4b60d18..bda4e79 100644

arch/arm/mach-s5pc100/include/mach/memory.h +1 -1
@@ -13,6 +13,6 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET     	UL(0x20000000)
+#define PLAT_PHYS_OFFSET     	UL(0x20000000)
 
 #endif
arch/arm/mach- renamed from arch/arm/mach-s5pv210/include/mach/memory.h +0 -0

s5pv210/include/mach/memory.h
index d503e0c..7b5fcf0 100644

arch/arm/mach-s5pv210/include/mach/memory.h +1 -1
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
-#define PHYS_OFFSET		UL(0x20000000)
+#define PLAT_PHYS_OFFSET		UL(0x20000000)
 #define CONSISTENT_DMA_SIZE	(SZ_8M + SZ_4M + SZ_2M)
 
 /*
arch/arm/mach- renamed from arch/arm/mach-s5pv310/include/mach/memory.h +0 -0

s5pv310/include/mach/memory.h
index 1dffb48..470b01b 100644

arch/arm/mach-s5pv310/include/mach/memory.h +1 -1
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H __FILE__
 
-#define PHYS_OFFSET		UL(0x40000000)
+#define PLAT_PHYS_OFFSET		UL(0x40000000)
 
 /* Maximum of 256MiB in one bank */
 #define MAX_PHYSMEM_BITS	32

(snip)

Quoted 2 lines

--
1.6.2.5

Hmm...and as a note, submitted changing 'mach-exynos4' from 'mach-s5pv310'. I know you can handle it later :)

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.

#15 lore raw

RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions

Quoted 10 lines · Russell King - ARM Linux

This uncouple PHYS_OFFSET from the platform definitions, thereby facilitating run-time computation of the physical memory offset.

---

arch/arm/include/asm/memory.h                  |    2 ++
arch/arm/kernel/tcm.c                          |    2 +-
arch/arm/mach-bcmring/include/mach/hardware.h  |    2 +-
arch/arm/mach-bcmring/include/mach/memory.h    |    2 +-
#16 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

---
 arch/arm/kernel/setup.c                  |    4 +++-
 arch/arm/mach-msm/board-msm7x27.c        |    8 ++++----
 arch/arm/mach-msm/board-msm7x30.c        |    6 +++---
 arch/arm/mach-msm/board-qsd8x50.c        |    4 ++--
 arch/arm/mach-msm/board-sapphire.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51sd.c     |    2 +-
 arch/arm/mach-mx5/board-mx51_3ds.c       |    2 +-
 arch/arm/mach-pxa/balloon3.c             |    2 +-
 arch/arm/mach-realview/realview_eb.c     |    2 +-
 arch/arm/mach-realview/realview_pb1176.c |    2 +-
 arch/arm/mach-realview/realview_pb11mp.c |    2 +-
 arch/arm/mach-realview/realview_pba8.c   |    2 +-
 arch/arm/mach-realview/realview_pbx.c    |    2 +-
 arch/arm/mach-s5pv210/sleep.S            |    2 +-
 arch/arm/mach-tcc8k/board-tcc8000-sdk.c  |    2 +-
 arch/arm/mach-vexpress/ct-ca9x4.c        |    2 +-
 17 files changed, 25 insertions(+), 23 deletions(-)
arch/arm/kernel/setup.c +3 -1
index 3455ad3..f67e682 100644
@@ -705,7 +705,7 @@ static struct init_tags {
 	{ tag_size(tag_core), ATAG_CORE },
 	{ 1, PAGE_SIZE, 0xff },
 	{ tag_size(tag_mem32), ATAG_MEM },
-	{ MEM_SIZE, PHYS_OFFSET },
+	{ MEM_SIZE },
 	{ 0, ATAG_NONE }
 };
 
@@ -804,6 +804,8 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
+	tags->mem.start = PHYS_OFFSET;
+
 	unwind_init();
 
 	setup_processor();
arch/arm/mach-msm/board-msm7x27.c +4 -4
index e7a76ef..08fcd40 100644
@@ -132,7 +132,7 @@ static void __init msm7x2x_map_io(void)
 MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params	= PHYS_OFFSET + 0x100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x100,
 	.map_io		= msm7x2x_map_io,
 	.init_irq	= msm7x2x_init_irq,
 	.init_machine	= msm7x2x_init,
@@ -142,7 +142,7 @@ MACHINE_END
 MACHINE_START(MSM7X27_FFA, "QCT MSM7x27 FFA")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params	= PHYS_OFFSET + 0x100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x100,
 	.map_io		= msm7x2x_map_io,
 	.init_irq	= msm7x2x_init_irq,
 	.init_machine	= msm7x2x_init,
@@ -152,7 +152,7 @@ MACHINE_END
 MACHINE_START(MSM7X25_SURF, "QCT MSM7x25 SURF")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params	= PHYS_OFFSET + 0x100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x100,
 	.map_io		= msm7x2x_map_io,
 	.init_irq	= msm7x2x_init_irq,
 	.init_machine	= msm7x2x_init,
@@ -162,7 +162,7 @@ MACHINE_END
 MACHINE_START(MSM7X25_FFA, "QCT MSM7x25 FFA")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params	= PHYS_OFFSET + 0x100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x100,
 	.map_io		= msm7x2x_map_io,
 	.init_irq	= msm7x2x_init_irq,
 	.init_machine	= msm7x2x_init,
arch/arm/mach-msm/board-msm7x30.c +3 -3
index 1931e07..eb1d1b1 100644
@@ -65,7 +65,7 @@ static void __init msm7x30_map_io(void)
 MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = msm7x30_map_io,
 	.init_irq = msm7x30_init_irq,
 	.init_machine = msm7x30_init,
@@ -75,7 +75,7 @@ MACHINE_END
 MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = msm7x30_map_io,
 	.init_irq = msm7x30_init_irq,
 	.init_machine = msm7x30_init,
@@ -85,7 +85,7 @@ MACHINE_END
 MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = msm7x30_map_io,
 	.init_irq = msm7x30_init_irq,
 	.init_machine = msm7x30_init,
arch/arm/mach-msm/board-qsd8x50.c +2 -2
index ed2af4a..41892ed 100644
@@ -99,7 +99,7 @@ static void __init qsd8x50_init(void)
 MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = qsd8x50_map_io,
 	.init_irq = qsd8x50_init_irq,
 	.init_machine = qsd8x50_init,
@@ -109,7 +109,7 @@ MACHINE_END
 MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = qsd8x50_map_io,
 	.init_irq = qsd8x50_init_irq,
 	.init_machine = qsd8x50_init,
arch/arm/mach-msm/board-sapphire.c +1 -1
index 8919ffb..83604f5 100644
@@ -107,7 +107,7 @@ MACHINE_START(SAPPHIRE, "sapphire")
 /* Maintainer: Brian Swetland <[email protected]> */
 #ifdef CONFIG_MSM_DEBUG_UART
 #endif
-	.boot_params    = PHYS_OFFSET + 0x100,
+	.boot_params    = PLAT_PHYS_OFFSET + 0x100,
 	.fixup          = sapphire_fixup,
 	.map_io         = sapphire_map_io,
 	.init_irq       = sapphire_init_irq,
arch/arm/mach-mx5/board-cpuimx51.c +1 -1
index 6a9792f..c4c3a9c 100644
@@ -292,7 +292,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51_init,
arch/arm/mach-mx5/board-cpuimx51sd.c +1 -1
index 4b3a611..b887381 100644
@@ -323,7 +323,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51sd_init,
arch/arm/mach-mx5/board-mx51_3ds.c +1 -1
index 79ce8dc..10e6ce3 100644
@@ -186,7 +186,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
 	/* Maintainer: Freescale Semiconductor, Inc. */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = mxc_board_init,
arch/arm/mach-pxa/balloon3.c +1 -1
index ccb2d0c..abcc646 100644
@@ -824,5 +824,5 @@ MACHINE_START(BALLOON3, "Balloon3")
 	.init_irq	= balloon3_init_irq,
 	.timer		= &pxa_timer,
 	.init_machine	= balloon3_init,
-	.boot_params	= PHYS_OFFSET + 0x100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x100,
 MACHINE_END
arch/arm/mach-realview/realview_eb.c +1 -1
index 6ef5c5e..8ede983 100644
@@ -484,7 +484,7 @@ static void __init realview_eb_init(void)
 
 MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
 	/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.fixup		= realview_fixup,
 	.map_io		= realview_eb_map_io,
 	.init_irq	= gic_init_irq,
arch/arm/mach-realview/realview_pb1176.c +1 -1
index cbdc97a..9f26369 100644
@@ -379,7 +379,7 @@ static void __init realview_pb1176_init(void)
 
 MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
 	/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.fixup		= realview_pb1176_fixup,
 	.map_io		= realview_pb1176_map_io,
 	.init_irq	= gic_init_irq,
arch/arm/mach-realview/realview_pb11mp.c +1 -1
index 8e8ab7d..dea06b2 100644
@@ -381,7 +381,7 @@ static void __init realview_pb11mp_init(void)
 
 MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
 	/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.fixup		= realview_fixup,
 	.map_io		= realview_pb11mp_map_io,
 	.init_irq	= gic_init_irq,
arch/arm/mach-realview/realview_pba8.c +1 -1
index 841118e..7d0f173 100644
@@ -331,7 +331,7 @@ static void __init realview_pba8_init(void)
 
 MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
 	/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.fixup		= realview_fixup,
 	.map_io		= realview_pba8_map_io,
 	.init_irq	= gic_init_irq,
arch/arm/mach-realview/realview_pbx.c +1 -1
index 02b755b..b89e28f 100644
@@ -414,7 +414,7 @@ static void __init realview_pbx_init(void)
 
 MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
 	/* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.fixup		= realview_pbx_fixup,
 	.map_io		= realview_pbx_map_io,
 	.init_irq	= gic_init_irq,
arch/arm/mach-s5pv210/sleep.S +1 -1
index d4d222b..2737622 100644
@@ -65,7 +65,7 @@ resume_with_mmu:
 	/*
 	 * After MMU is turned on, restore the previous MMU table.
 	 */
-	ldr	r9 , =(PAGE_OFFSET - PHYS_OFFSET)
+	ldr	r9 , =(PAGE_OFFSET - PLAT_PHYS_OFFSET)
 	add	r4, r4, r9
 	str	r12, [r4]
 
arch/arm/mach-tcc8k/board-tcc8000-sdk.c +1 -1
index 7991415..fb6426d 100644
@@ -54,7 +54,7 @@ static void __init tcc8k_map_io(void)
 }
 
 MACHINE_START(TCC8000_SDK, "Telechips TCC8000-SDK Demo Board")
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.map_io		= tcc8k_map_io,
 	.init_irq	= tcc8k_init_irq,
 	.init_machine	= tcc8k_init,
arch/arm/mach-vexpress/ct-ca9x4.c +1 -1
index e628402..e9bccc5 100644
@@ -243,7 +243,7 @@ static void __init ct_ca9x4_init(void)
 }
 
 MACHINE_START(VEXPRESS, "ARM-Versatile Express CA9x4")
-	.boot_params	= PHYS_OFFSET + 0x00000100,
+	.boot_params	= PLAT_PHYS_OFFSET + 0x00000100,
 	.map_io		= ct_ca9x4_map_io,
 	.init_irq	= ct_ca9x4_init_irq,
 #if 0
Signature · 1 line
1.6.2.5
#17 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

Quoted 6 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

Same comment as for 1/5.

Nicolas

maintainer
#18 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux
Quoted 57 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

---
 arch/arm/kernel/setup.c                  |    4 +++-
 arch/arm/mach-msm/board-msm7x27.c        |    8 ++++----
 arch/arm/mach-msm/board-msm7x30.c        |    6 +++---
 arch/arm/mach-msm/board-qsd8x50.c        |    4 ++--
 arch/arm/mach-msm/board-sapphire.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51sd.c     |    2 +-
 arch/arm/mach-mx5/board-mx51_3ds.c       |    2 +-
 arch/arm/mach-pxa/balloon3.c             |    2 +-
 arch/arm/mach-realview/realview_eb.c     |    2 +-
 arch/arm/mach-realview/realview_pb1176.c |    2 +-
 arch/arm/mach-realview/realview_pb11mp.c |    2 +-
 arch/arm/mach-realview/realview_pba8.c   |    2 +-
 arch/arm/mach-realview/realview_pbx.c    |    2 +-
 arch/arm/mach-s5pv210/sleep.S            |    2 +-
 arch/arm/mach-tcc8k/board-tcc8000-sdk.c  |    2 +-
 arch/arm/mach-vexpress/ct-ca9x4.c        |    2 +-
 17 files changed, 25 insertions(+), 23 deletions(-)
arch/arm/mach-mx5/board-cpuimx51.c +1 -1
index 6a9792f..c4c3a9c 100644
@@ -292,7 +292,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51_init,
arch/arm/mach-mx5/board-cpuimx51sd.c +1 -1
index 4b3a611..b887381 100644
@@ -323,7 +323,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51sd_init,
arch/arm/mach-mx5/board-mx51_3ds.c +0 -0
index 79ce8dc..10e6ce3 100644

arch/arm/mach-mx5/board-mx51_3ds.c static struct sys_timer mxc_timer = { · line 192

Quoted 8 lines
arch/arm/mach-mx5/board-mx51_3ds.c +1 -1
@@ -186,7 +186,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
 	/* Maintainer: Freescale Semiconductor, Inc. */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = mxc_board_init,

As Russell noted this conflicts with the current i.MX branch. In current i.MX branch we have:

- .boot_params = PHYS_OFFSET + 0x100,
+ .boot_params = MX51_PHYS_OFFSET + 0x100,

PLAT_PHYS_OFFSET should be defined to MX51_PHYS_OFFSET, so it shouldn't matter which solution to the conflict we choose.

Sascha

Signature · 4 lines
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
#19 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

Quoted 8 lines · Sascha Hauer

As Russell noted this conflicts with the current i.MX branch. In current i.MX branch we have:

(quoted diff) +1 -1
-       .boot_params = PHYS_OFFSET + 0x100,
+       .boot_params = MX51_PHYS_OFFSET + 0x100,

PLAT_PHYS_OFFSET should be defined to MX51_PHYS_OFFSET, so it shouldn't matter which solution to the conflict we choose.

I've actually dropped my modifications to this files as your change to them makes more sense longer term.

#20 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

Quoted 4 lines · Russell King - ARM Linux
Quoted 3 lines · Sascha Hauer

As Russell noted this conflicts with the current i.MX branch. In current i.MX branch we have:

Quoted 8 lines
Quoted 5 lines
(quoted diff) +1 -1
-       .boot_params = PHYS_OFFSET + 0x100,
+       .boot_params = MX51_PHYS_OFFSET + 0x100,

PLAT_PHYS_OFFSET should be defined to MX51_PHYS_OFFSET, so it shouldn't matter which solution to the conflict we choose.

I've actually dropped my modifications to this files as your change to them makes more sense longer term.

#21 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux

Hi Russell,

Quoted 43 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

---
....

 arch/arm/mach-mx5/board-cpuimx51.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51sd.c     |    2 +-
 arch/arm/mach-mx5/board-mx51_3ds.c       |    2 +-

...

arch/arm/mach-mx5/board-cpuimx51.c +1 -1
index 6a9792f..c4c3a9c 100644
@@ -292,7 +292,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51_init,
arch/arm/mach-mx5/board-cpuimx51sd.c +1 -1
index 4b3a611..b887381 100644
@@ -323,7 +323,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
 	/* Maintainer: Eric B??nard <[email protected]> */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = eukrea_cpuimx51sd_init,
arch/arm/mach-mx5/board-mx51_3ds.c +0 -0
index 79ce8dc..10e6ce3 100644

arch/arm/mach-mx5/board-mx51_3ds.c static struct sys_timer mxc_timer = { · line 192

Quoted 8 lines
arch/arm/mach-mx5/board-mx51_3ds.c +1 -1
@@ -186,7 +186,7 @@ static struct sys_timer mxc_timer = {
 
 MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
 	/* Maintainer: Freescale Semiconductor, Inc. */
-	.boot_params = PHYS_OFFSET + 0x100,
+	.boot_params = PLAT_PHYS_OFFSET + 0x100,
 	.map_io = mx51_map_io,
 	.init_irq = mx51_init_irq,
 	.init_machine = mxc_board_init,

nack. 7608d7d2b4a146f560436f5b99b1b93d30049e4e has a better fix.

Best regards
Uwe

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#22 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

Hello again,

Quoted 1 line · Uwe Kleine-K?nig

nack. 7608d7d2b4a146f560436f5b99b1b93d30049e4e has a better fix.

urgs, this was already pointed out, sorry.

Uwe

Signature · 2 lines
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
#23 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux
Quoted 49 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

---
 arch/arm/kernel/setup.c                  |    4 +++-
 arch/arm/mach-msm/board-msm7x27.c        |    8 ++++----
 arch/arm/mach-msm/board-msm7x30.c        |    6 +++---
 arch/arm/mach-msm/board-qsd8x50.c        |    4 ++--
 arch/arm/mach-msm/board-sapphire.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51.c       |    2 +-
 arch/arm/mach-mx5/board-cpuimx51sd.c     |    2 +-
 arch/arm/mach-mx5/board-mx51_3ds.c       |    2 +-
 arch/arm/mach-pxa/balloon3.c             |    2 +-
 arch/arm/mach-realview/realview_eb.c     |    2 +-
 arch/arm/mach-realview/realview_pb1176.c |    2 +-
 arch/arm/mach-realview/realview_pb11mp.c |    2 +-
 arch/arm/mach-realview/realview_pba8.c   |    2 +-
 arch/arm/mach-realview/realview_pbx.c    |    2 +-
 arch/arm/mach-s5pv210/sleep.S            |    2 +-
 arch/arm/mach-tcc8k/board-tcc8000-sdk.c  |    2 +-
 arch/arm/mach-vexpress/ct-ca9x4.c        |    2 +-
 17 files changed, 25 insertions(+), 23 deletions(-)
arch/arm/kernel/setup.c +3 -1
index 3455ad3..f67e682 100644
@@ -705,7 +705,7 @@ static struct init_tags {
 	{ tag_size(tag_core), ATAG_CORE },
 	{ 1, PAGE_SIZE, 0xff },
 	{ tag_size(tag_mem32), ATAG_MEM },
-	{ MEM_SIZE, PHYS_OFFSET },
+	{ MEM_SIZE },
 	{ 0, ATAG_NONE }
 };
 
@@ -804,6 +804,8 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
+	tags->mem.start = PHYS_OFFSET;
+
 	unwind_init();
 
 	setup_processor();

(snip)

Quoted 13 lines
arch/arm/mach-s5pv210/sleep.S +1 -1
index d4d222b..2737622 100644
@@ -65,7 +65,7 @@ resume_with_mmu:
 	/*
 	 * After MMU is turned on, restore the previous MMU table.
 	 */
-	ldr	r9 , =(PAGE_OFFSET - PHYS_OFFSET)
+	ldr	r9 , =(PAGE_OFFSET - PLAT_PHYS_OFFSET)
 	add	r4, r4, r9
 	str	r12, [r4]
 

(snip)

Quoted 2 lines

--
1.6.2.5

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.

#24 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux
Quoted 4 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

I'm still missing acks for MSM, PXA and TCC8k stuff for this change.

#25 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

Quoted 7 lines · Russell King - ARM Linux
Quoted 4 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. Replace those in generic code with a run-time initialization. Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

I'm still missing acks for MSM, PXA and TCC8k stuff for this change.

Sorry, I did test it, but forgot an explicit Ack:

David

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
#26 lore raw

RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET

In reply to Russell King - ARM Linux
Quoted 6 lines · Russell King - ARM Linux

As PHYS_OFFSET will be becoming a variable, we can't have it used in initializers nor assembly code. ?Replace those in generic code with a run-time initialization. ?Replace those in platform code using the individual platform specific PLAT_PHYS_OFFSET.

#27 lore raw

RFC 3/5 ARM: P2V: make head.S use PLAT_PHYS_OFFSET

In reply to Russell King - ARM Linux

head.S makes use of PHYS_OFFSET. When it becomes a variable, the assembler won't understand this. Switch it to use PLAT_PHYS_OFFSET for the time being, until this code is properly updated.

---
 arch/arm/kernel/head.S |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)
arch/arm/kernel/head.S +6 -6
index f17d9a0..aedd80e 100644
@@ -26,12 +26,12 @@
 #include <mach/debug-macro.S>
 #endif
 
-#if (PHYS_OFFSET & 0x001fffff)
-#error "PHYS_OFFSET must be at an even 2MiB boundary!"
+#if (PLAT_PHYS_OFFSET & 0x001fffff)
+#error "PLAT_PHYS_OFFSET must be at an even 2MiB boundary!"
 #endif
 
 #define KERNEL_RAM_VADDR	(PAGE_OFFSET + TEXT_OFFSET)
-#define KERNEL_RAM_PADDR	(PHYS_OFFSET + TEXT_OFFSET)
+#define KERNEL_RAM_PADDR	(PLAT_PHYS_OFFSET + TEXT_OFFSET)
 
 
 /*
@@ -208,9 +208,9 @@ __create_page_tables:
 	 * Then map first 1MB of ram in case it contains our boot params.
 	 */
 	add	r0, r4, #PAGE_OFFSET >> 18
-	orr	r6, r7, #(PHYS_OFFSET & 0xff000000)
-	.if	(PHYS_OFFSET & 0x00f00000)
-	orr	r6, r6, #(PHYS_OFFSET & 0x00f00000)
+	orr	r6, r7, #(PLAT_PHYS_OFFSET & 0xff000000)
+	.if	(PLAT_PHYS_OFFSET & 0x00f00000)
+	orr	r6, r6, #(PLAT_PHYS_OFFSET & 0x00f00000)
 	.endif
 	str	r6, [r0]
 
Signature · 1 line
1.6.2.5
#28 lore raw

RFC 3/5 ARM: P2V: make head.S use PLAT_PHYS_OFFSET

Quoted 5 lines · Russell King - ARM Linux

head.S makes use of PHYS_OFFSET. When it becomes a variable, the assembler won't understand this. Switch it to use PLAT_PHYS_OFFSET for the time being, until this code is properly updated.

Right... One thing at a time.

Nicolas

#29 lore raw

RFC 3/5 ARM: P2V: make head.S use PLAT_PHYS_OFFSET

Quoted 11 lines · Nicolas Pitre
Quoted 5 lines · Russell King - ARM Linux

head.S makes use of PHYS_OFFSET. When it becomes a variable, the assembler won't understand this. Switch it to use PLAT_PHYS_OFFSET for the time being, until this code is properly updated.

Right... One thing at a time.

With the omap DEBUG_LL fix the version of this in the p2v branch works for omaps:

#30 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

In reply to Russell King - ARM Linux

This idea came from Nicolas, Eric Miao produced an initial version, which was then rewritten into this.

Patch the physical to virtual translations at runtime. As we modify the code, this makes it incompatible with XIP kernels, but on allows is to achieve this with minimal loss of performance.

As many translations are of the form:

physical = virtual + (PHYS_OFFSET - PAGE_OFFSET) virtual = physical - (PHYS_OFFSET - PAGE_OFFSET)

we generate an 'add' instruction for __virt_to_phys(), and a 'sub' instruction for __phys_to_virt(). We calculate at run time (PHYS_OFFSET
- PAGE_OFFSET) by comparing the address prior to MMU initialization with where it should be once the MMU has been initialized, and place this constant into the above add/sub instructions.

Once we have (PHYS_OFFSET - PAGE_OFFSET), we can calcuate the real PHYS_OFFSET as PAGE_OFFSET is a build-time constant, and save this for the C-mode PHYS_OFFSET variable definition to use.

At present, we are unable to support Realview with Sparsemem enabled as this uses a complex mapping function, and MSM as this requires a constant which will not fit in our math instruction.

---
 arch/arm/Kconfig              |   14 +++++++++
 arch/arm/include/asm/memory.h |   55 ++++++++++++++++++++++++++++--------
 arch/arm/kernel/head.S        |   63 +++++++++++++++++++++++++++++++++++++++++
 arch/arm/kernel/module.c      |   23 ++++++++++++++-
 arch/arm/kernel/setup.c       |    2 +-
 arch/arm/kernel/vmlinux.lds.S |    4 ++
 6 files changed, 147 insertions(+), 14 deletions(-)
arch/arm/Kconfig +14 -0
index 7b155b0..801192b 100644
@@ -196,6 +196,19 @@ config VECTORS_BASE
 	help
 	  The base address of exception vectors.
 
+config ARM_PATCH_PHYS_VIRT
+	bool "Patch physical to virtual translations at runtime (EXPERIMENTAL)"
+	depends on EXPERIMENTAL
+	depends on !XIP_KERNEL && !THUMB2_KERNEL && MMU
+	depends on !ARCH_MSM
+	depends on !ARCH_REALVIEW || !SPARSEMEM
+	help
+	  Patch phys-to-virt translation functions at runtime according to
+	  the position of the kernel in system memory.
+
+	  This can only be used with non-XIP, non-Thumb2, MMU kernels where
+	  the base of physical memory is at a 16MB boundary.
+
 source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
@@ -608,6 +621,7 @@ config ARCH_PXA
 	select TICK_ONESHOT
 	select PLAT_PXA
 	select SPARSE_IRQ
+	select ARM_PATCH_PHYS_VIRT
 	help
 	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
 
arch/arm/include/asm/memory.h +43 -12

73 lines not on this page · raw message

arch/arm/kernel/head.S +63 -0

73 lines not on this page · raw message

arch/arm/kernel/module.c +22 -1
index 0c1bb68..6a42e17 100644
@@ -276,12 +276,28 @@ struct mod_unwind_map {
 	const Elf_Shdr *txt_sec;
 };
 
+static const Elf_Shdr *find_mod_section(const Elf32_Ehdr *hdr,
+	const Elf_Shdr *sechdrs, const char *name)
+{
+	const Elf_Shdr *s, *se;
+	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
+
+	for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++)
+		if (strcmp(name, secstrs + s->sh_name) == 0)
+			return s;
+
+	return NULL;
+}
+
+extern void fixup_pv_table(const void *, unsigned long);
+
 int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 		    struct module *mod)
 {
+	const Elf_Shdr *s = NULL;
 #ifdef CONFIG_ARM_UNWIND
 	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
-	const Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum;
+	const Elf_Shdr *sechdrs_end = sechdrs + hdr->e_shnum;
 	struct mod_unwind_map maps[ARM_SEC_MAX];
 	int i;
 
@@ -323,6 +339,11 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 					         maps[i].txt_sec->sh_addr,
 					         maps[i].txt_sec->sh_size);
 #endif
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+	s = find_mod_section(hdr, sechdrs, ".pv_table");
+	if (s)
+		fixup_pv_table((void *)s->sh_addr, s->sh_size);
+#endif
 	return 0;
 }
 
arch/arm/kernel/setup.c +1 -1
index f67e682..7c5499d 100644
@@ -804,7 +804,7 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
-	tags->mem.start = PHYS_OFFSET;
+	init_tags.mem.start = PHYS_OFFSET;
 
 	unwind_init();
 
arch/arm/kernel/vmlinux.lds.S +4 -0
index 86b66f3..45b5651 100644
@@ -57,6 +57,10 @@ SECTIONS
 		__smpalt_end = .;
 #endif
 
+		__pv_table_begin = .;
+			*(.pv_table)
+		__pv_table_end = .;
+
 		INIT_SETUP(16)
 
 		INIT_CALLS
Signature · 1 line
1.6.2.5
#31 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

Quoted 6 lines · Russell King - ARM Linux

This idea came from Nicolas, Eric Miao produced an initial version, which was then rewritten into this.

Patch the physical to virtual translations at runtime. As we modify the code, this makes it incompatible with XIP kernels, but on allows is to achieve this with minimal loss of performance.

Above sentence looks weird.

Quoted 5 lines

As many translations are of the form:

physical = virtual + (PHYS_OFFSET - PAGE_OFFSET) virtual = physical - (PHYS_OFFSET - PAGE_OFFSET)

Quoted 7 lines

we generate an 'add' instruction for __virt_to_phys(), and a 'sub' instruction for __phys_to_virt(). We calculate at run time (PHYS_OFFSET
- PAGE_OFFSET) by comparing the address prior to MMU initialization with where it should be once the MMU has been initialized, and place this constant into the above add/sub instructions.

Once we have (PHYS_OFFSET - PAGE_OFFSET), we can calcuate the real

s/calcuate/calculate/

Quoted 8 lines

PHYS_OFFSET as PAGE_OFFSET is a build-time constant, and save this for the C-mode PHYS_OFFSET variable definition to use.

At present, we are unable to support Realview with Sparsemem enabled as this uses a complex mapping function, and MSM as this requires a constant which will not fit in our math instruction.

[...]

arch/arm/Kconfig config ARCH_PXA · line 627

Quoted 8 lines
arch/arm/Kconfig +1 -0
@@ -608,6 +621,7 @@ config ARCH_PXA
 	select TICK_ONESHOT
 	select PLAT_PXA
 	select SPARSE_IRQ
+	select ARM_PATCH_PHYS_VIRT
 	help
 	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
 

This hunk should go away.

Quoted 108 lines
arch/arm/include/asm/memory.h +43 -12
index 00b04ae..288b690 100644
@@ -24,8 +24,6 @@
  */
 #define UL(x) _AC(x, UL)
 
-#define PHYS_OFFSET	PLAT_PHYS_OFFSET
-
 #ifdef CONFIG_MMU
 
 /*
@@ -135,16 +133,6 @@
 #endif
 
 /*
- * Physical vs virtual RAM address space conversion.  These are
- * private definitions which should NOT be used outside memory.h
- * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
- */
-#ifndef __virt_to_phys
-#define __virt_to_phys(x)	((x) - PAGE_OFFSET + PHYS_OFFSET)
-#define __phys_to_virt(x)	((x) - PHYS_OFFSET + PAGE_OFFSET)
-#endif
-
-/*
  * Convert a physical address to a Page Frame Number and back
  */
 #define	__phys_to_pfn(paddr)	((paddr) >> PAGE_SHIFT)
@@ -159,6 +147,49 @@
 #ifndef __ASSEMBLY__
 
 /*
+ * Physical vs virtual RAM address space conversion.  These are
+ * private definitions which should NOT be used outside memory.h
+ * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
+ */
+#ifndef __virt_to_phys
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+
+extern unsigned long __pv_phys_offset;
+#define PHYS_OFFSET __pv_phys_offset
+
+#define __pv_stub(from,to,instr)			\
+	__asm__("@ __pv_stub\n"				\
+	"1:	" instr "	%0, %1, %2\n"		\
+	"	.pushsection .pv_table,\"a\"\n"		\
+	"	.long	1b\n"				\
+	"	.popsection\n"				\
+	: "=r" (to)					\
+	: "r" (from), "I" (1))
+
+static inline unsigned long __virt_to_phys(unsigned long x)
+{
+	unsigned long t;
+	__pv_stub(x, t, "add");
+	return t;
+}
+
+static inline unsigned long __phys_to_virt(unsigned long x)
+{
+	unsigned long t;
+	__pv_stub(x, t, "sub");
+	return t;
+}
+#else
+#define __virt_to_phys(x)	((x) - PAGE_OFFSET + PHYS_OFFSET)
+#define __phys_to_virt(x)	((x) - PHYS_OFFSET + PAGE_OFFSET)
+#endif
+#endif
+
+#ifndef PHYS_OFFSET
+#define PHYS_OFFSET	PLAT_PHYS_OFFSET
+#endif
+
+/*
  * The DMA mask corresponding to the maximum bus address allocatable
  * using GFP_DMA.  The default here places no restriction on DMA
  * allocations.  This must be the smallest DMA mask in the system,
arch/arm/kernel/head.S +13 -0
index aedd80e..258b0ca 100644
@@ -100,6 +100,9 @@ ENTRY(stext)
 #ifdef CONFIG_SMP_ON_UP
 	bl	__fixup_smp
 #endif
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+	bl	__fixup_pv_table
+#endif
 	bl	__create_page_tables
 
 	/*
@@ -445,4 +448,64 @@ smp_on_up:
 
 #endif
 
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+
+/* __fixup_pv_table - patch the stub instructions with the delta between
+ * PHYS_OFFSET and PAGE_OFFSET, which is assumed to be 16MiB aligned and
+ * can be expressed by an immediate shifter operand. The stub instruction
+ * has a form of '(add|sub) rd, rn, #imm'.
+ */
+__fixup_pv_table:
+	adr	r0, 1f
+	ldmia	r0, {r3-r5,r7,ip}

arch/arm/kernel/head.S smp_on_up: · line 470

Quoted 10 lines
arch/arm/kernel/head.S +10 -0
+	sub	r3, r0, r3	@ PHYS_OFFSET - PAGE_OFFSET
+	add	r4, r4, r3	@ adjust table start address
+	add	r5, r5, r3	@ adjust table end address
+	add	ip, ip, r3	@ our PHYS_OFFSET
+	str	ip, [r7, r3]!	@ save to __pv_phys_offset
+	mov	r6, r3, lsr #24	@ constant for add/sub instructions
+	teq	r3, r6, lsl #24 @ must be 16MiB aligned
+	bne	__error
+	orr	r6, r6, #0x400	@ mask in rotate right 8 bits
+	str	r6, [r7, #4]	@ save to __pv_offset

Looks to me that the code up to now, including the referenced data constants, can live in __init section. But the following code should be in the .text section.

Quoted 92 lines
arch/arm/kernel/head.S +40 -0
+__fixup_a_pv_table:
+2:	cmp	r4, r5
+	ldrlo	r7, [r4], #4
+	ldrlo	ip, [r7, r3]
+	bic	ip, ip, #0x000000ff
+	bic	ip, ip, #0x00000f00
+	orr	ip, ip, r6
+	strlo	ip, [r7, r3]
+	blo	2b
+	mov	pc, lr
+ENDPROC(__fixup_phys_virt)
+
+ENTRY(fixup_pv_table)
+	stmfd	sp!, {r4 - r7, lr}
+	ldr	r2, 2f			@ get address of __pv_phys_offset
+	mov	r3, #0			@ no offset
+	mov	r4, r0			@ r0 = table start
+	add	r5, r0, r1		@ r1 = table size
+	ldr	r6, [r2, #4]		@ get __pv_offset
+	bl	__fixup_a_pv_table
+	ldmfd	sp!, {r4 - r7, pc}
+ENDPROC(fixup_pv_table)
+
+	.align
+1:	.long	.
+	.long	__pv_table_begin
+	.long	__pv_table_end
+2:	.long	__pv_phys_offset
+	.long	PAGE_OFFSET
+
+	.data
+	.globl	__pv_phys_offset
+	.type	__pv_phys_offset, %object
+__pv_phys_offset:
+	.long	0
+	.size	__pv_phys_offset, . - __pv_phys_offset
+__pv_offset:
+	.long	0
+#endif
+
 #include "head-common.S"
arch/arm/kernel/module.c +22 -1
index 0c1bb68..6a42e17 100644
@@ -276,12 +276,28 @@ struct mod_unwind_map {
 	const Elf_Shdr *txt_sec;
 };
 
+static const Elf_Shdr *find_mod_section(const Elf32_Ehdr *hdr,
+	const Elf_Shdr *sechdrs, const char *name)
+{
+	const Elf_Shdr *s, *se;
+	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
+
+	for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++)
+		if (strcmp(name, secstrs + s->sh_name) == 0)
+			return s;
+
+	return NULL;
+}
+
+extern void fixup_pv_table(const void *, unsigned long);
+
 int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 		    struct module *mod)
 {
+	const Elf_Shdr *s = NULL;
 #ifdef CONFIG_ARM_UNWIND
 	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
-	const Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum;
+	const Elf_Shdr *sechdrs_end = sechdrs + hdr->e_shnum;
 	struct mod_unwind_map maps[ARM_SEC_MAX];
 	int i;
 
@@ -323,6 +339,11 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 					         maps[i].txt_sec->sh_addr,
 					         maps[i].txt_sec->sh_size);
 #endif
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+	s = find_mod_section(hdr, sechdrs, ".pv_table");
+	if (s)
+		fixup_pv_table((void *)s->sh_addr, s->sh_size);
+#endif
 	return 0;
 }
 
arch/arm/kernel/setup.c +0 -0
index f67e682..7c5499d 100644

arch/arm/kernel/setup.c void __init setup_arch(char **cmdline_p) · line 807

Quoted 5 lines
arch/arm/kernel/setup.c +1 -1
@@ -804,7 +804,7 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
-	tags->mem.start = PHYS_OFFSET;
+	init_tags.mem.start = PHYS_OFFSET;

Doesn't this belong in 2/5 instead?

Nicolas

#32 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

Quoted 9 lines · Nicolas Pitre
Quoted 8 lines · Russell King - ARM Linux
arch/arm/kernel/setup.c +0 -0
index f67e682..7c5499d 100644
@@ -804,7 +804,7 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
Quoted 4 lines

arch/arm/kernel/setup.c void __init setup_arch(char **cmdline_p) · line 807

Quoted 2 lines
arch/arm/kernel/setup.c +1 -1
-	tags->mem.start = PHYS_OFFSET;
+	init_tags.mem.start = PHYS_OFFSET;

Doesn't this belong in 2/5 instead?

It's actually the result of using interdiff with the original patch... It'll get killed shortly.

#33 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

Quoted 10 lines · Russell King - ARM Linux
Quoted 9 lines · Nicolas Pitre
Quoted 8 lines · Russell King - ARM Linux
arch/arm/kernel/setup.c +0 -0
index f67e682..7c5499d 100644
@@ -804,7 +804,7 @@ void __init setup_arch(char **cmdline_p)
 	struct machine_desc *mdesc;
 	char *from = default_command_line;
 
Quoted 7 lines
Quoted 4 lines

arch/arm/kernel/setup.c void __init setup_arch(char **cmdline_p) · line 807

Quoted 2 lines
arch/arm/kernel/setup.c +1 -1
-	tags->mem.start = PHYS_OFFSET;
+	init_tags.mem.start = PHYS_OFFSET;

Doesn't this belong in 2/5 instead?

It's actually the result of using interdiff with the original patch... It'll get killed shortly.

For the version in p2v branch:

#34 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

In reply to Russell King - ARM Linux

Hi Russell,

I haven't been using the runtime patching, but building picoxcell based off of todays next I'm seeing a pretty harmless warning. Fixup below.

Jamie

Quoted 36 lines · Russell King - ARM Linux

This idea came from Nicolas, Eric Miao produced an initial version, which was then rewritten into this.

Patch the physical to virtual translations at runtime. As we modify the code, this makes it incompatible with XIP kernels, but on allows is to achieve this with minimal loss of performance.

As many translations are of the form:

physical = virtual + (PHYS_OFFSET - PAGE_OFFSET) virtual = physical - (PHYS_OFFSET - PAGE_OFFSET)

we generate an 'add' instruction for __virt_to_phys(), and a 'sub' instruction for __phys_to_virt(). We calculate at run time (PHYS_OFFSET
- PAGE_OFFSET) by comparing the address prior to MMU initialization with where it should be once the MMU has been initialized, and place this constant into the above add/sub instructions.

Once we have (PHYS_OFFSET - PAGE_OFFSET), we can calcuate the real PHYS_OFFSET as PAGE_OFFSET is a build-time constant, and save this for the C-mode PHYS_OFFSET variable definition to use.

At present, we are unable to support Realview with Sparsemem enabled as this uses a complex mapping function, and MSM as this requires a constant which will not fit in our math instruction.

---
 arch/arm/Kconfig              |   14 +++++++++
 arch/arm/include/asm/memory.h |   55 ++++++++++++++++++++++++++++--------
 arch/arm/kernel/head.S        |   63 +++++++++++++++++++++++++++++++++++++++++
 arch/arm/kernel/module.c      |   23 ++++++++++++++-
 arch/arm/kernel/setup.c       |    2 +-
 arch/arm/kernel/vmlinux.lds.S |    4 ++
 6 files changed, 147 insertions(+), 14 deletions(-)

[...]

Quoted 35 lines
arch/arm/kernel/module.c +17 -1
index 0c1bb68..6a42e17 100644
@@ -276,12 +276,28 @@ struct mod_unwind_map {
 	const Elf_Shdr *txt_sec;
 };
 
+static const Elf_Shdr *find_mod_section(const Elf32_Ehdr *hdr,
+	const Elf_Shdr *sechdrs, const char *name)
+{
+	const Elf_Shdr *s, *se;
+	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
+
+	for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++)
+		if (strcmp(name, secstrs + s->sh_name) == 0)
+			return s;
+
+	return NULL;
+}
+
+extern void fixup_pv_table(const void *, unsigned long);
+
 int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 		    struct module *mod)
 {
+	const Elf_Shdr *s = NULL;
 #ifdef CONFIG_ARM_UNWIND
 	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
-	const Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum;
+	const Elf_Shdr *sechdrs_end = sechdrs + hdr->e_shnum;
 	struct mod_unwind_map maps[ARM_SEC_MAX];
 	int i;
 

arch/arm/kernel/module.c int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs, · line 346

Quoted 8 lines
arch/arm/kernel/module.c +5 -0
@@ -323,6 +339,11 @@ int module_finalize(const Elf32_Ehdr *hdr, const Elf_Shdr *sechdrs,
 					         maps[i].txt_sec->sh_addr,
 					         maps[i].txt_sec->sh_size);
 #endif
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
+	s = find_mod_section(hdr, sechdrs, ".pv_table");
+	if (s)
+		fixup_pv_table((void *)s->sh_addr, s->sh_size);
+#endif

If we don't have CONFIG_ARM_PATCH_PHYS_VIRT defined then we get:

arch/arm/kernel/module.c:272: warning: ?find_mod_section? defined but not used

8<------

arch/arm/kernel/module.c +2 -0
index 74e25ab..ba65805 100644
@@ -269,6 +269,7 @@ struct mod_unwind_map {
 	const Elf_Shdr *txt_sec;
 };
 
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
 static const Elf_Shdr *find_mod_section(const Elf32_Ehdr *hdr,
 	const Elf_Shdr *sechdrs, const char *name)
 {
@@ -281,6 +282,7 @@ static const Elf_Shdr *find_mod_section(const Elf32_Ehdr *hdr,
 
 	return NULL;
 }
+#endif
 
 extern void fixup_pv_table(const void *, unsigned long);
 
#35 lore raw

RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

Quoted 2 lines · Jamie Iles

I haven't been using the runtime patching, but building picoxcell based off of todays next I'm seeing a pretty harmless warning. Fixup below.

One of the reasons I've not done this is that it turns out that we need to do the smp-on-up fixups on modules when running with certain configs. That means we need this function in other circumstances too.

It's probably going to be better to mark it with __maybe_unused than to surround stuff with complex ifdefs.

#36 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

In reply to Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

---
 arch/arm/Kconfig              |    5 ++++-
 arch/arm/include/asm/memory.h |   14 ++++++++++----
 arch/arm/kernel/head.S        |   18 ++++++++++++++++--
 3 files changed, 30 insertions(+), 7 deletions(-)
arch/arm/Kconfig +4 -1
index 801192b..8a753cb 100644
@@ -200,7 +200,6 @@ config ARM_PATCH_PHYS_VIRT
 	bool "Patch physical to virtual translations at runtime (EXPERIMENTAL)"
 	depends on EXPERIMENTAL
 	depends on !XIP_KERNEL && !THUMB2_KERNEL && MMU
-	depends on !ARCH_MSM
 	depends on !ARCH_REALVIEW || !SPARSEMEM
 	help
 	  Patch phys-to-virt translation functions at runtime according to
@@ -209,6 +208,10 @@ config ARM_PATCH_PHYS_VIRT
 	  This can only be used with non-XIP, non-Thumb2, MMU kernels where
 	  the base of physical memory is at a 16MB boundary.
 
+config ARM_PATCH_PHYS_VIRT_16BIT
+	def_bool y
+	depends on ARM_PATCH_PHYS_VIRT && ARCH_MSM
+
 source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
arch/arm/include/asm/memory.h +10 -4
index 288b690..e2b54fd 100644
@@ -157,26 +157,32 @@
 extern unsigned long __pv_phys_offset;
 #define PHYS_OFFSET __pv_phys_offset
 
-#define __pv_stub(from,to,instr)			\
+#define __pv_stub(from,to,instr,type)			\
 	__asm__("@ __pv_stub\n"				\
 	"1:	" instr "	%0, %1, %2\n"		\
 	"	.pushsection .pv_table,\"a\"\n"		\
 	"	.long	1b\n"				\
 	"	.popsection\n"				\
 	: "=r" (to)					\
-	: "r" (from), "I" (1))
+	: "r" (from), "I" (type))
 
 static inline unsigned long __virt_to_phys(unsigned long x)
 {
 	unsigned long t;
-	__pv_stub(x, t, "add");
+	__pv_stub(x, t, "add", 1);
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
+	__pv_stub(t, t, "add", 0);
+#endif
 	return t;
 }
 
 static inline unsigned long __phys_to_virt(unsigned long x)
 {
 	unsigned long t;
-	__pv_stub(x, t, "sub");
+	__pv_stub(x, t, "sub", 1);
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
+	__pv_stub(t, t, "sub", 0);
+#endif
 	return t;
 }
 #else
arch/arm/kernel/head.S +16 -2
index 258b0ca..c0b77a0 100644
@@ -463,18 +463,32 @@ __fixup_pv_table:
 	add	r5, r5, r3	@ adjust table end address
 	add	ip, ip, r3	@ our PHYS_OFFSET
 	str	ip, [r7, r3]!	@ save to __pv_phys_offset
+#ifndef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
 	mov	r6, r3, lsr #24	@ constant for add/sub instructions
 	teq	r3, r6, lsl #24 @ must be 16MiB aligned
+#else
+	mov	r6, r3, lsr #16	@ constant for add/sub instructions
+	teq	r3, r6, lsl #16	@ must be 64kiB aligned
+#endif
 	bne	__error
-	orr	r6, r6, #0x400	@ mask in rotate right 8 bits
 	str	r6, [r7, #4]	@ save to __pv_offset
 __fixup_a_pv_table:
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
+	and	r0, r6, #255	@ offset bits 23-16
+	mov	r6, r6, lsr #8	@ offset bits 31-24
+	orr	r0, r0, #0x400	@ mask in rotate right 8 bits
+#else
+	mov	r0, #0		@ just in case...
+#endif
+	orr	r6, r6, #0x400	@ mask in rotate right 8 bits
 2:	cmp	r4, r5
 	ldrlo	r7, [r4], #4
 	ldrlo	ip, [r7, r3]
+	tst	ip, #1		@ existing constant tells us LS or MS byte
 	bic	ip, ip, #0x000000ff
 	bic	ip, ip, #0x00000f00
-	orr	ip, ip, r6
+	orrne	ip, ip, r6	@ mask in offset bits 31-24
+	orreq	ip, ip, r0	@ mask in offset bits 23-16
 	strlo	ip, [r7, r3]
 	blo	2b
 	mov	pc, lr
Signature · 1 line
1.6.2.5
#37 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

Quoted 52 lines · Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

---
 arch/arm/Kconfig              |    5 ++++-
 arch/arm/include/asm/memory.h |   14 ++++++++++----
 arch/arm/kernel/head.S        |   18 ++++++++++++++++--
 3 files changed, 30 insertions(+), 7 deletions(-)
arch/arm/Kconfig +4 -1
index 801192b..8a753cb 100644
@@ -200,7 +200,6 @@ config ARM_PATCH_PHYS_VIRT
 	bool "Patch physical to virtual translations at runtime (EXPERIMENTAL)"
 	depends on EXPERIMENTAL
 	depends on !XIP_KERNEL && !THUMB2_KERNEL && MMU
-	depends on !ARCH_MSM
 	depends on !ARCH_REALVIEW || !SPARSEMEM
 	help
 	  Patch phys-to-virt translation functions at runtime according to
@@ -209,6 +208,10 @@ config ARM_PATCH_PHYS_VIRT
 	  This can only be used with non-XIP, non-Thumb2, MMU kernels where
 	  the base of physical memory is at a 16MB boundary.
 
+config ARM_PATCH_PHYS_VIRT_16BIT
+	def_bool y
+	depends on ARM_PATCH_PHYS_VIRT && ARCH_MSM
+
 source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
arch/arm/include/asm/memory.h +1 -2
index 288b690..e2b54fd 100644
@@ -157,26 +157,32 @@
 extern unsigned long __pv_phys_offset;
 #define PHYS_OFFSET __pv_phys_offset
 
-#define __pv_stub(from,to,instr)			\
+#define __pv_stub(from,to,instr,type)			\
 	__asm__("@ __pv_stub\n"				\
 	"1:	" instr "	%0, %1, %2\n"		\
 	"	.pushsection .pv_table,\"a\"\n"		\
 	"	.long	1b\n"				\
 	"	.popsection\n"				\
 	: "=r" (to)					\
-	: "r" (from), "I" (1))

arch/arm/include/asm/memory.h line 175

Quoted 10 lines
arch/arm/include/asm/memory.h +5 -1
+	: "r" (from), "I" (type))
 
 static inline unsigned long __virt_to_phys(unsigned long x)
 {
 	unsigned long t;
-	__pv_stub(x, t, "add");
+	__pv_stub(x, t, "add", 1);
+#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
+	__pv_stub(t, t, "add", 0);
+#endif

[...]

I'd suggest making the type argument into a mask instead, something like:

	__pv_stub(x, t, "add", 0xff000000);
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
	__pv_stub(t, t, "add", 0x00ff0000);

#endif

Reasons for this are multiple:

- This would simplifies the patching code as the rotation bitfield in the instruction would already be set appropriately for the desired value by the assembler. Would only suffice to test one bit in that field to determine the required constant to patch in.

- For the Thumb2 build, we want the assembler to select the appropriate encoding flavor for the add instruction from all the possibilities. Giving it a constant with all bits set nicely solves this issue.

If further distinctions are needed in the future then we can use the 6 middle bits to encode alternatives.

Nicolas

#38 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

Quoted 15 lines · Nicolas Pitre

I'd suggest making the type argument into a mask instead, something like:

	__pv_stub(x, t, "add", 0xff000000);
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT_16BIT
	__pv_stub(t, t, "add", 0x00ff0000);

#endif

Reasons for this are multiple:

- This would simplifies the patching code as the rotation bitfield in the instruction would already be set appropriately for the desired value by the assembler. Would only suffice to test one bit in that field to determine the required constant to patch in.

Quoted 6 lines

- For the Thumb2 build, we want the assembler to select the appropriate encoding flavor for the add instruction from all the possibilities. Giving it a constant with all bits set nicely solves this issue.

If further distinctions are needed in the future then we can use the 6 middle bits to encode alternatives.

Lets go with 0x81000000 and 0x0081000000 for the first then. We can count up with the 6-bit value from there.

#39 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

In reply to Russell King - ARM Linux
Quoted 4 lines · Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

I've verified that the these 5 patches boot on an MSM QSD 8x50, both with and without ARM_PATCH_PHYS_VIRT enabled. I haven't tried building with a different offset than it is running at, yet.

David

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
#40 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

In reply to Russell King - ARM Linux
Quoted 4 lines · Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

I should also add that this series adds a warning to my build when CONFIG_ARM_PATCH_PHYS_VIRT is not defined:

arch/arm/kernel/module.c:279: error: 'find_mod_section' defined but not used

David

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
#41 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

Quoted 11 lines · David Brown
Quoted 4 lines · Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

I should also add that this series adds a warning to my build when CONFIG_ARM_PATCH_PHYS_VIRT is not defined:

arch/arm/kernel/module.c:279: error: 'find_mod_section' defined but not used

Hmm, probably best to mark this with __maybe_unused.

Also note that I messed up the 16-23 bit shift value in this patch - it needs:

- orr r0, r0, #0x400 @ mask in rotate right 8 bits
+ orr r0, r0, #0x800 @ mask in rotate right 16 bits

#42 lore raw

RFC 5/5 ARM: P2V: extend to 16-bit translation offsets

Quoted 19 lines · Russell King - ARM Linux
Quoted 11 lines · David Brown
Quoted 4 lines · Russell King - ARM Linux

MSM's memory is aligned to 2MB, which is more than we can do with our existing method as we're limited to the upper 8 bits. Extend this by using two instructions to 16 bits, automatically selected when MSM is enabled.

I should also add that this series adds a warning to my build when CONFIG_ARM_PATCH_PHYS_VIRT is not defined:

arch/arm/kernel/module.c:279: error: 'find_mod_section' defined but not used

Hmm, probably best to mark this with __maybe_unused.

Also note that I messed up the 16-23 bit shift value in this patch - it needs:

Review

Quoted 2 lines
(quoted diff) +1 -1
-	orr	r0, r0, #0x400  @ mask in rotate right 8 bits
+	orr	r0, r0, #0x800  @ mask in rotate right 16 bits

Can't really test this one, but things still keep working so:

#43 lore raw

cover runtime P2V translations

In reply to Russell King - ARM Linux
Quoted 3 lines · Russell King - ARM Linux

Here's my solution to this, which should allow it to be used on almost all platforms, including MSM, with the exception of Realview when SPARSEMEM is enabled.

It is my intention to freeze the p2v branch against further changes to existing commits this evening. That means any further acks/tested-bys or whatever else will be ignored. Please ensure that you get any acks etc or further comments to me by this evening, thanks.