runtime P2V translations
Subsystems (21)
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.
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
Quoted 4 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>
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
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_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.
Quoted 7 lines
Quoted 1 line
Signed-off-by Russell King <[email protected]>Acked-by Nicolas Pitre <[email protected]>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.
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxHello Russell,
Quoted 61 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>--- 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/ |
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_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>--- 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.hwhich definesPHYS_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.
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_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>--- 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.hwhich definesPHYS_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/ |
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 10 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>arch/arm/plat-spear/include/plat/memory.h +0
-0
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
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 20 lines · Russell King
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>arch/arm/mach-ep93xx/include/mach/memory.h +2
-3@@ -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
Magnus Damm
maintainerRFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 7 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>---
?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.
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_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>---
?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
c422a5992e9ca072e8e472ee8f518649fb07470eand successfully booted on a sh7372-based Mackerel board.Acked-by Magnus Damm <[email protected]>
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 9 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>--- 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.
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM Linux2011/1/5 Russell King - ARM Linux <[email protected]>:
Quoted 922 lines
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>---
?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@@ -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@@ -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@@ -12,6 +12,6 @@?#define
__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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) ?#defineRAM_BASE? ? ? ? ? ? ? ?PAGE_OFFSETarch/arm/mach-bcmring/include/mach/memory.h +0
-0@@ -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 14March/arm/mach-clps711x/include/mach/memory.h +0
-0@@ -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@@ -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@@ -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? ? ?0xcarch/arm/mach-dove/include/mach/memory.h +0
-0@@ -5,6 +5,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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 - SRAMarch/arm/mach-ep93xx/include/mach/memory.h +0
-0@@ -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 "Kconfigbug: No EP93xxPHYS_OFFSETset"
?#endifarch/arm/mach-footbridge/include/mach/memory.h +0
-0@@ -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? ? ? ? ? ? ? ?0x50000000arch/arm/mach-h720x/include/mach/memory.h +0
-0@@ -7,7 +7,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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@@ -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@@ -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@@ -13,7 +13,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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@@ -5,6 +5,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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 abovearch/arm/mach-loki/include/mach/memory.h +0
-0@@ -5,6 +5,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -9,6 +9,6 @@?#ifndef
__ASM_MACH_MEMORY_H
?#define__ASM_MACH_MEMORY_Harch/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@@ -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@@ -18,15 +18,15 @@?/* physical offset of RAM */
?#ifdefined(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@@ -5,6 +5,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -20,7 +20,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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@@ -16,6 +16,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -7,6 +7,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -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)?voidcmx2xx_pci_adjust_zones(unsigned long *size, unsigned long *holes);arch/arm/mach-realview/include/mach/memory.h +0
-0@@ -24,9 +24,9 @@?* Physical DRAM offset.
?*/
?#ifdefCONFIG_REALVIEW_HIGH_PHYS_OFFSETarch/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@@ -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 - ROMarch/arm/mach-s3c2400/include/mach/memory.h +0
-0@@ -15,6 +15,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -11,6 +11,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -13,7 +13,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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_8March/arm/mach-s5p6442/include/mach/memory.h +0
-0@@ -13,7 +13,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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@@ -13,6 +13,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -13,7 +13,7 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -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 */
?#defineMAX_PHYSMEM_BITS? ? ? 32arch/arm/mach-sa1100/include/mach/memory.h +0
-0@@ -12,7 +12,7 @@?/*
?* Physical DRAM offset is0xc0000000on 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@@ -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@@ -1,7 +1,7 @@?#ifndef
__ASM_MACH_MEMORY_H
?#define__ASM_MACH_MEMORY_Harch/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@@ -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@@ -15,17 +15,17 @@?#ifdef
CONFIG_MACH_U300_DUAL_RAMarch/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_FIXarch/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) ?#elsearch/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) ?#endifarch/arm/mach-u300/u300.c +0
-0@@ -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
__initu300_reserve(void)
?{arch/arm/mach-ux500/include/mach/memory.h +0
-0@@ -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@@ -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@@ -20,6 +20,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -18,6 +18,6 @@?#ifndef
__ASM_ARCH_MEMORY_H
?#define__ASM_ARCH_MEMORY_Harch/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@@ -37,9 +37,9 @@?* Physical DRAM offset.
?*/
?#ifdefined(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@@ -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@@ -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@@ -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
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 97 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>--- 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@@ -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@@ -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 100644arch/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 100644arch/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 100644arch/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 100644arch/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_8March/arm/mach- renamed from arch/arm/mach-s5p6442/include/mach/memory.h +0
-0
s5p6442/include/mach/memory.h
index 9ddd877..cfe259d 100644arch/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 100644arch/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 100644arch/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 100644arch/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 100644arch/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.
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
In reply to Russell King - ARM LinuxQuoted 4 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>
RFC 1/5 ARM: P2V: separate PHYS_OFFSET from platform definitions
Quoted 10 lines · Russell King - ARM Linux
This uncouple
PHYS_OFFSETfrom the platform definitions, thereby facilitating run-time computation of the physical memory offset.Signed-off-by Russell King <[email protected]>---
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 +-
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxAs 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
Quoted 6 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.Signed-off-by Russell King <[email protected]>
Same comment as for 1/5.
Nicolas
Sascha Hauer
maintainerRFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxQuoted 57 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.Signed-off-by Russell King <[email protected]>--- 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@@ -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@@ -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
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 |
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_OFFSETshould be defined toMX51_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.
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_OFFSETshould be defined toMX51_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.
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxHi Russell,
Quoted 43 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.Signed-off-by Russell King <[email protected]>---
....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@@ -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@@ -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
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/ |
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
Hello again,
Quoted 1 line · Uwe Kleine-K?nig
nack.
7608d7d2b4a146f560436f5b99b1b93d30049e4ehas 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/ |
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxQuoted 49 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.Signed-off-by Russell King <[email protected]>--- 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@@ -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@@ -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.
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxQuoted 4 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.
I'm still missing acks for MSM, PXA and TCC8k stuff for this change.
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_OFFSETwill 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 specificPLAT_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.
RFC 2/5 ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
In reply to Russell King - ARM LinuxQuoted 6 lines · Russell King - ARM Linux
As
PHYS_OFFSETwill 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 specificPLAT_PHYS_OFFSET.Signed-off-by Russell King <[email protected]>
RFC 3/5 ARM: P2V: make head.S use PLAT_PHYS_OFFSET
In reply to Russell King - ARM Linuxhead.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
@@ -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
RFC 3/5 ARM: P2V: make head.S use PLAT_PHYS_OFFSET
Quoted 5 lines · Russell King - ARM Linux
head.Smakes use ofPHYS_OFFSET. When it becomes a variable, the assembler won't understand this. Switch it to usePLAT_PHYS_OFFSETfor the time being, until this code is properly updated.Signed-off-by Russell King <[email protected]>
Right... One thing at a time.
Nicolas
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.Smakes use ofPHYS_OFFSET. When it becomes a variable, the assembler won't understand this. Switch it to usePLAT_PHYS_OFFSETfor the time being, until this code is properly updated.Signed-off-by Russell King <[email protected]>Right... One thing at a time.
Acked-by Nicolas Pitre <[email protected]>
With the omap DEBUG_LL fix the version of this in the p2v branch works for omaps:
RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching
In reply to Russell King - ARM LinuxThis 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
@@ -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
@@ -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
@@ -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
@@ -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
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_OFFSETasPAGE_OFFSETis a build-time constant, and save this for the C-modePHYS_OFFSETvariable 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.
Signed-off-by Russell King <[email protected]>
[...]
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@@ -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@@ -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@@ -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
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
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@@ -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.
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@@ -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:
RFC 4/5 ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching
In reply to Russell King - ARM LinuxHi 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 realPHYS_OFFSETasPAGE_OFFSETis a build-time constant, and save this for the C-modePHYS_OFFSETvariable 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.
Signed-off-by Russell King <[email protected]>--- 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@@ -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
@@ -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 );
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.
RFC 5/5 ARM: P2V: extend to 16-bit translation offsets
In reply to Russell King - ARM LinuxMSM'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
@@ -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
@@ -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
@@ -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
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.
Signed-off-by Russell King <[email protected]>--- 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@@ -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@@ -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
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.
RFC 5/5 ARM: P2V: extend to 16-bit translation offsets
In reply to Russell King - ARM LinuxQuoted 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.
RFC 5/5 ARM: P2V: extend to 16-bit translation offsets
In reply to Russell King - ARM LinuxQuoted 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.
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_VIRTis 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
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_VIRTis not defined:
arch/arm/kernel/module.c:279: error: 'find_mod_section' defined but not usedHmm, 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:
cover runtime P2V translations
In reply to Russell King - ARM LinuxQuoted 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.