* [PATCH 0/2] OMAP: TWL: sparse fixes
From: Kevin Hilman @ 2011-01-04 22:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <8762u47dmk.fsf@ti.com>
On Tue, 2011-01-04 at 10:00 -0800, Kevin Hilman wrote:
> Nishanth Menon <nm@ti.com> writes:
>
> > Source:
> > git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
> > branch: omap-for-linus
> >
> > Doing a rm arch/arm/mach-omap2/*.o;make C=1 arch/arm/mach-omap2/
> > resulted in the following sparse warnings:
> > http://pastebin.mozilla.org/907954
> >
> > This series fixes the twl warnings
> > Nishanth Menon (2):
> > OMAP2+: TWL: make conversion routines static
> > OMAP2+: TWL: include pm header for init protos
> >
> > arch/arm/mach-omap2/omap_twl.c | 10 ++++++----
> > 1 files changed, 6 insertions(+), 4 deletions(-)
>
> Acked-by: Kevin Hilman <khilman@ti.com>
>
> Tony, these should probably queue for .38 if it's not too late.
On second thought, it's too late for the main 2.6.38 merge window for
these. I'll queue these in my pm-fixes branch for the 2.6.38-rc cycle.
Kevin
^ permalink raw reply
* [PATCH] arm: mach-omap2: pm: cleanup !CONFIG_SUSPEND handling
From: Kevin Hilman @ 2011-01-04 22:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1293640483-25610-1-git-send-email-aaro.koskinen@nokia.com>
Aaro Koskinen <aaro.koskinen@nokia.com> writes:
> Make !CONFIG_SUSPEND init declarations identical on all OMAPs and
> eliminate some ifdefs.
>
> Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
Very nice.
I was going to tackle something like this with that last cleanup I did,
but was rather late for the main 2.6.38 merge window so I just fixed
problem at hand. This is much better, thanks.
Will queue for 2.6.38-rc2 in my pm-fixes branch.
Kevin
> ---
> arch/arm/mach-omap2/pm.h | 4 ++++
> arch/arm/mach-omap2/pm24xx.c | 16 ++++++++--------
> arch/arm/mach-omap2/pm34xx.c | 16 ++++++++--------
> arch/arm/mach-omap2/pm44xx.c | 17 +++++++++--------
> 4 files changed, 29 insertions(+), 24 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
> index 1c1b0ab..704766b 100644
> --- a/arch/arm/mach-omap2/pm.h
> +++ b/arch/arm/mach-omap2/pm.h
> @@ -138,4 +138,8 @@ static inline int omap4_twl_init(void)
> }
> #endif
>
> +#ifndef CONFIG_SUSPEND
> +#define omap_pm_ops NULL
> +#endif
> +
> #endif
> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
> index dac2d1d..e65b329 100644
> --- a/arch/arm/mach-omap2/pm24xx.c
> +++ b/arch/arm/mach-omap2/pm24xx.c
> @@ -350,14 +350,14 @@ static void omap2_pm_end(void)
> enable_hlt();
> }
>
> -static struct platform_suspend_ops omap_pm_ops = {
> - .begin = omap2_pm_begin,
> - .enter = omap2_pm_enter,
> - .end = omap2_pm_end,
> - .valid = suspend_valid_only_mem,
> +static const struct platform_suspend_ops omap_pm_ops[] = {
> + {
> + .begin = omap2_pm_begin,
> + .enter = omap2_pm_enter,
> + .end = omap2_pm_end,
> + .valid = suspend_valid_only_mem,
> + }
> };
> -#else
> -static const struct platform_suspend_ops __initdata omap_pm_ops;
> #endif /* CONFIG_SUSPEND */
>
> /* XXX This function should be shareable between OMAP2xxx and OMAP3 */
> @@ -582,7 +582,7 @@ static int __init omap2_pm_init(void)
> omap24xx_cpu_suspend_sz);
> }
>
> - suspend_set_ops(&omap_pm_ops);
> + suspend_set_ops(omap_pm_ops);
> pm_idle = omap2_pm_idle;
>
> return 0;
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 5b323f2..a4c9283 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -605,11 +605,13 @@ static void omap3_pm_end(void)
> return;
> }
>
> -static struct platform_suspend_ops omap_pm_ops = {
> - .begin = omap3_pm_begin,
> - .end = omap3_pm_end,
> - .enter = omap3_pm_enter,
> - .valid = suspend_valid_only_mem,
> +static const struct platform_suspend_ops omap_pm_ops[] = {
> + {
> + .begin = omap3_pm_begin,
> + .end = omap3_pm_end,
> + .enter = omap3_pm_enter,
> + .valid = suspend_valid_only_mem,
> + }
> };
> #endif /* CONFIG_SUSPEND */
>
> @@ -1067,9 +1069,7 @@ static int __init omap3_pm_init(void)
> core_clkdm = clkdm_lookup("core_clkdm");
>
> omap_push_sram_idle();
> -#ifdef CONFIG_SUSPEND
> - suspend_set_ops(&omap_pm_ops);
> -#endif /* CONFIG_SUSPEND */
> + suspend_set_ops(omap_pm_ops);
>
> pm_idle = omap3_pm_idle;
> omap3_idle_init();
> diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c
> index e9f4862..6022c0a 100644
> --- a/arch/arm/mach-omap2/pm44xx.c
> +++ b/arch/arm/mach-omap2/pm44xx.c
> @@ -16,6 +16,7 @@
> #include <linux/err.h>
> #include <linux/slab.h>
>
> +#include "pm.h"
> #include "powerdomain.h"
> #include <mach/omap4-common.h>
>
> @@ -65,11 +66,13 @@ static void omap4_pm_end(void)
> return;
> }
>
> -static struct platform_suspend_ops omap_pm_ops = {
> - .begin = omap4_pm_begin,
> - .end = omap4_pm_end,
> - .enter = omap4_pm_enter,
> - .valid = suspend_valid_only_mem,
> +static const struct platform_suspend_ops omap_pm_ops[] = {
> + {
> + .begin = omap4_pm_begin,
> + .end = omap4_pm_end,
> + .enter = omap4_pm_enter,
> + .valid = suspend_valid_only_mem,
> + }
> };
> #endif /* CONFIG_SUSPEND */
>
> @@ -113,9 +116,7 @@ static int __init omap4_pm_init(void)
> }
> #endif
>
> -#ifdef CONFIG_SUSPEND
> - suspend_set_ops(&omap_pm_ops);
> -#endif /* CONFIG_SUSPEND */
> + suspend_set_ops(omap_pm_ops);
>
> err2:
> return ret;
^ permalink raw reply
* dmaengine: fix dma_unmap (was: Re: [PATCH 06/13] DMAENGINE: driver for the ARM PL080/PL081 PrimeCells)
From: Linus Walleij @ 2011-01-04 22:34 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <AANLkTinMCLC8j=AvzaCQ+Uuyk75T=rAkaLUz0jHPOJ-d@mail.gmail.com>
2011/1/3 Dan Williams <dan.j.williams@intel.com>:
> We could disable the driver if NET_DMA or ASYNC_TX_DMA are selected.
> ?That still allows the driver to be exercised with dmatest. ?Although
> I notice the driver is already marked experimental, do we need
> something stronger for 37-final?
Your pick, IMHO. To use it out-of-the-box with 2.6.37 is not possible
on any system anyway - we have not patched in the required
platform data to any ARM system! Those who do such things surely
know what they're doing.
Yours,
Linus Walleij
^ permalink raw reply
* [RFC 5/5] ARM: P2V: extend to 16-bit translation offsets
From: Nicolas Pitre @ 2011-01-04 21:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDPu-00023p-QG@rmk-PC.arm.linux.org.uk>
On Tue, 4 Jan 2011, Russell King - ARM Linux wrote:
> 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 <rmk+kernel@arm.linux.org.uk>
> ---
> arch/arm/Kconfig | 5 ++++-
> arch/arm/include/asm/memory.h | 14 ++++++++++----
> arch/arm/kernel/head.S | 18 ++++++++++++++++--
> 3 files changed, 30 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 801192b..8a753cb 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -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"
> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
> index 288b690..e2b54fd 100644
> --- a/arch/arm/include/asm/memory.h
> +++ b/arch/arm/include/asm/memory.h
> @@ -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
[...]
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
^ permalink raw reply
* [RFC 4/5] ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching
From: Nicolas Pitre @ 2011-01-04 21:27 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDPa-00023l-CR@rmk-PC.arm.linux.org.uk>
On Tue, 4 Jan 2011, Russell King - ARM Linux wrote:
> 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.
> 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
s/calcuate/calculate/
> 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.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
[...]
> @@ -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.
> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
> index 00b04ae..288b690 100644
> --- a/arch/arm/include/asm/memory.h
> +++ b/arch/arm/include/asm/memory.h
> @@ -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,
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index aedd80e..258b0ca 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -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}
> + 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.
> +__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"
> diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
> index 0c1bb68..6a42e17 100644
> --- a/arch/arm/kernel/module.c
> +++ b/arch/arm/kernel/module.c
> @@ -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;
> }
>
> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
> index f67e682..7c5499d 100644
> --- a/arch/arm/kernel/setup.c
> +++ b/arch/arm/kernel/setup.c
> @@ -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
^ permalink raw reply
* [RFC 1/5] ARM: P2V: separate PHYS_OFFSET from platform definitions
From: Uwe Kleine-König @ 2011-01-04 21:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDOb-00023Z-CR@rmk-PC.arm.linux.org.uk>
Hello Russell,
On Tue, Jan 04, 2011 at 08:22:17PM +0000, Russell King - ARM Linux wrote:
> This uncouple PHYS_OFFSET from the platform definitions, thereby
> facilitating run-time computation of the physical memory offset.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> ---
> 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(-)
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
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply
* [RFC 3/5] ARM: P2V: make head.S use PLAT_PHYS_OFFSET
From: Nicolas Pitre @ 2011-01-04 21:13 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDPF-00023h-V5@rmk-PC.arm.linux.org.uk>
On Tue, 4 Jan 2011, Russell King - ARM Linux wrote:
> head.S makes use of PHYS_OFFSET. When it becomes a variable, the
> assembler won't understand this. Switch it to use PLAT_PHYS_OFFSET
> for the time being, until this code is properly updated.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Right... One thing at a time.
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Nicolas
^ permalink raw reply
* [RFC 2/5] ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
From: Nicolas Pitre @ 2011-01-04 21:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDOv-00023d-Gi@rmk-PC.arm.linux.org.uk>
On Tue, 4 Jan 2011, Russell King - ARM Linux wrote:
> As PHYS_OFFSET will be becoming a variable, we can't have it used in
> initializers nor assembly code. Replace those in generic code with
> a run-time initialization. Replace those in platform code using the
> individual platform specific PLAT_PHYS_OFFSET.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Same comment as for 1/5.
Nicolas
^ permalink raw reply
* [RFC 1/5] ARM: P2V: separate PHYS_OFFSET from platform definitions
From: Nicolas Pitre @ 2011-01-04 21:10 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <E1PaDOb-00023Z-CR@rmk-PC.arm.linux.org.uk>
On Tue, 4 Jan 2011, Russell King - ARM Linux wrote:
> This uncouple PHYS_OFFSET from the platform definitions, thereby
> facilitating run-time computation of the physical memory offset.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
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
^ permalink raw reply
* [PATCH v6 1/2] ARM: mx5: dynamically allocate pwm devices
From: Uwe Kleine-König @ 2011-01-04 21:05 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <AANLkTim_Ouees3GAejQuK6HLbjmxjMyFfuqfTc3i1koN@mail.gmail.com>
On Tue, Jan 04, 2011 at 03:26:01PM -0200, Fabio Estevam wrote:
> Uwe/Sascha,
>
> Any comments about this series?
Looks good. Ack for both and sorry for not replying earlier.
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply
* [PATCH 2/4] arm: Kconfig: remove duplicated GENERIC_HARDIRQS entry
From: Uwe Kleine-König @ 2011-01-04 20:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104173301.GA25976@n2100.arm.linux.org.uk>
Hi Russell,
On Tue, Jan 04, 2011 at 05:33:01PM +0000, Russell King - ARM Linux wrote:
> On Tue, Jan 04, 2011 at 03:00:31PM +0100, Uwe Kleine-K?nig wrote:
> > On Tue, Jan 04, 2011 at 02:02:55PM +0200, Felipe Balbi wrote:
> > > @@ -171,9 +168,6 @@ config FIQ
> > > config ARCH_MTD_XIP
> > > bool
> > >
> > > -config GENERIC_HARDIRQS_NO__DO_IRQ
> > > - def_bool y
> > > -
> > You didn't mention this change in the commit log. Is this duplicated,
> > too or did it just slip through?
>
> If you look at kernel/irq/Kconfig (as I did with the original patch)
> you'd notice kernel/irq/Kconfig defines both of these symbols being
> removed when HAVE_GENERIC_HARDIRQS is enabled.
>
> If you read the discussion in the previous version of this patch set,
> you'd notice that the removal of this was specifically requested.
>
> It's very tiresome to have to re-explain these things. Please take
> some more time to research the points you bring up, rather than
I don't agree here 100%. IMHO the commit log was not good enough for
the change introduced by the patch (and Felipe's reply suggests that he
agrees). I could still research it, but:
- it was not obvious for me there was a previous version (no "v2" or
similar in the patch subject);
- for me it would take say 5 minutes to check, the author knows
the answer to my question immediately (at least he should);
- after a research I could suggest a better wording, but I don't care
much if it's me or Felipe who comes up with a better text.
So all in all I'm still confident that my mail was OK.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply
* [PATCH v3 0/4] Introduce hardware spinlock framework
From: Ohad Ben-Cohen @ 2011-01-04 20:42 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104121921.3550dcfa.akpm@linux-foundation.org>
On Tue, Jan 4, 2011 at 10:19 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>> > Acked-by: Tony Lindgren <tony@atomide.com>
>>
>> Can you please have a look at this patch set (see link no. [1] below) ?
>
> I looked - it looks reasonable. ?This is exactly the wrong time to be
> looking at large new patchsets - please refresh, retest and resend
> after -rc1 is released?
Sure, thanks !
^ permalink raw reply
* [PATCH 0/2] OMAP: TWL: sparse fixes
From: Nishanth Menon @ 2011-01-04 20:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <4D22503F.9060100@ti.com>
Nishanth Menon had written, on 01/03/2011 04:39 PM, the following:
> Russell King - ARM Linux had written, on 01/03/2011 04:36 PM, the
> following:
>> On Mon, Jan 03, 2011 at 12:58:28PM -0600, Nishanth Menon wrote:
>>> Source:
>>> git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
>>> branch: omap-for-linus
>>>
>>> Doing a rm arch/arm/mach-omap2/*.o;make C=1 arch/arm/mach-omap2/
>>> resulted in the following sparse warnings:
>>> http://pastebin.mozilla.org/907954
>>
>> FYI, you may like to try:
>>
>> make C=2 arch/arm/mach-omap2/
>>
>> instead of the two-step process:
>> | Do a kernel make with "make C=1" to run sparse on all the C files
>> that get
>> | recompiled, or use "make C=2" to run sparse on the files whether
>> they need to
>> | be recompiled or not. The latter is a fast way to check the whole
>> tree if you
>> | have already built it.
> Gee thanks. /me should update my old bash aliases :D
hmm.. minor nit (with codesourcery 2010.09-50 - 4.5.1):
rm arch/arm/mach-omap2/*.o;make C=1 arch/arm/mach-omap2/ 2>Kerr;make C=2
arch/arm/mach-omap2/ 2>Kerr1;diff Kerr Kerr1
[..]
1,4d0
< arch/arm/mach-omap2/mux.c: In function 'omap_mux_get_by_name':
< arch/arm/mach-omap2/mux.c:163:17: warning: 'found_mode' may be used
uninitialized in this function
< arch/arm/mach-omap2/clkt_clksel.c: In function 'omap2_clksel_set_parent':
< arch/arm/mach-omap2/clkt_clksel.c:100:35: warning: 'max_clkr' may be
used uninitialized in this function
Kinda interesting to note that C=2 does'nt list all potential gcc
warnings :( if one wanted a collated list of all warnings, rm .../*.o
helps I guess.
--
Regards,
Nishanth Menon
^ permalink raw reply
* [RFC 5/5] ARM: P2V: extend to 16-bit translation offsets
From: Russell King - ARM Linux @ 2011-01-04 20:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104202052.GE24935@n2100.arm.linux.org.uk>
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 <rmk+kernel@arm.linux.org.uk>
---
arch/arm/Kconfig | 5 ++++-
arch/arm/include/asm/memory.h | 14 ++++++++++----
arch/arm/kernel/head.S | 18 ++++++++++++++++--
3 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 801192b..8a753cb 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -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"
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index 288b690..e2b54fd 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -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
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 258b0ca..c0b77a0 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -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
--
1.6.2.5
^ permalink raw reply related
* [RFC 4/5] ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching
From: Russell King - ARM Linux @ 2011-01-04 20:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104202052.GE24935@n2100.arm.linux.org.uk>
This idea came from Nicolas, Eric Miao produced an initial version,
which was then rewritten into this.
Patch the physical to virtual translations at runtime. As we modify
the code, this makes it incompatible with XIP kernels, but on allows
is to achieve this with minimal loss of performance.
As many translations are of the form:
physical = virtual + (PHYS_OFFSET - PAGE_OFFSET)
virtual = physical - (PHYS_OFFSET - PAGE_OFFSET)
we generate an 'add' instruction for __virt_to_phys(), and a 'sub'
instruction for __phys_to_virt(). We calculate at run time (PHYS_OFFSET
- PAGE_OFFSET) by comparing the address prior to MMU initialization with
where it should be once the MMU has been initialized, and place this
constant into the above add/sub instructions.
Once we have (PHYS_OFFSET - PAGE_OFFSET), we can calcuate the real
PHYS_OFFSET as PAGE_OFFSET is a build-time constant, and save this for
the C-mode PHYS_OFFSET variable definition to use.
At present, we are unable to support Realview with Sparsemem enabled
as this uses a complex mapping function, and MSM as this requires a
constant which will not fit in our math instruction.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
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(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7b155b0..801192b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -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.
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index 00b04ae..288b690 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -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,
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index aedd80e..258b0ca 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -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}
+ 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
+__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"
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
index 0c1bb68..6a42e17 100644
--- a/arch/arm/kernel/module.c
+++ b/arch/arm/kernel/module.c
@@ -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;
}
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index f67e682..7c5499d 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -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();
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 86b66f3..45b5651 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -57,6 +57,10 @@ SECTIONS
__smpalt_end = .;
#endif
+ __pv_table_begin = .;
+ *(.pv_table)
+ __pv_table_end = .;
+
INIT_SETUP(16)
INIT_CALLS
--
1.6.2.5
^ permalink raw reply related
* [RFC 3/5] ARM: P2V: make head.S use PLAT_PHYS_OFFSET
From: Russell King - ARM Linux @ 2011-01-04 20:22 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104202052.GE24935@n2100.arm.linux.org.uk>
head.S makes use of PHYS_OFFSET. When it becomes a variable, the
assembler won't understand this. Switch it to use PLAT_PHYS_OFFSET
for the time being, until this code is properly updated.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
arch/arm/kernel/head.S | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index f17d9a0..aedd80e 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -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]
--
1.6.2.5
^ permalink raw reply related
* [RFC 2/5] ARM: P2V: avoid initializers and assembly using PHYS_OFFSET
From: Russell King - ARM Linux @ 2011-01-04 20:22 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104202052.GE24935@n2100.arm.linux.org.uk>
As PHYS_OFFSET will be becoming a variable, we can't have it used in
initializers nor assembly code. Replace those in generic code with
a run-time initialization. Replace those in platform code using the
individual platform specific PLAT_PHYS_OFFSET.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
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(-)
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 3455ad3..f67e682 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -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();
diff --git a/arch/arm/mach-msm/board-msm7x27.c b/arch/arm/mach-msm/board-msm7x27.c
index e7a76ef..08fcd40 100644
--- a/arch/arm/mach-msm/board-msm7x27.c
+++ b/arch/arm/mach-msm/board-msm7x27.c
@@ -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,
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c
index 1931e07..eb1d1b1 100644
--- a/arch/arm/mach-msm/board-msm7x30.c
+++ b/arch/arm/mach-msm/board-msm7x30.c
@@ -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,
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c
index ed2af4a..41892ed 100644
--- a/arch/arm/mach-msm/board-qsd8x50.c
+++ b/arch/arm/mach-msm/board-qsd8x50.c
@@ -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,
diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c
index 8919ffb..83604f5 100644
--- a/arch/arm/mach-msm/board-sapphire.c
+++ b/arch/arm/mach-msm/board-sapphire.c
@@ -107,7 +107,7 @@ MACHINE_START(SAPPHIRE, "sapphire")
/* Maintainer: Brian Swetland <swetland@google.com> */
#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,
diff --git a/arch/arm/mach-mx5/board-cpuimx51.c b/arch/arm/mach-mx5/board-cpuimx51.c
index 6a9792f..c4c3a9c 100644
--- a/arch/arm/mach-mx5/board-cpuimx51.c
+++ b/arch/arm/mach-mx5/board-cpuimx51.c
@@ -292,7 +292,7 @@ static struct sys_timer mxc_timer = {
MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
/* Maintainer: Eric B??nard <eric@eukrea.com> */
- .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,
diff --git a/arch/arm/mach-mx5/board-cpuimx51sd.c b/arch/arm/mach-mx5/board-cpuimx51sd.c
index 4b3a611..b887381 100644
--- a/arch/arm/mach-mx5/board-cpuimx51sd.c
+++ b/arch/arm/mach-mx5/board-cpuimx51sd.c
@@ -323,7 +323,7 @@ static struct sys_timer mxc_timer = {
MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
/* Maintainer: Eric B??nard <eric@eukrea.com> */
- .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,
diff --git a/arch/arm/mach-mx5/board-mx51_3ds.c b/arch/arm/mach-mx5/board-mx51_3ds.c
index 79ce8dc..10e6ce3 100644
--- a/arch/arm/mach-mx5/board-mx51_3ds.c
+++ b/arch/arm/mach-mx5/board-mx51_3ds.c
@@ -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,
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c
index ccb2d0c..abcc646 100644
--- a/arch/arm/mach-pxa/balloon3.c
+++ b/arch/arm/mach-pxa/balloon3.c
@@ -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
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 6ef5c5e..8ede983 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -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,
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index cbdc97a..9f26369 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -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,
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 8e8ab7d..dea06b2 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -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,
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 841118e..7d0f173 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -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,
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 02b755b..b89e28f 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -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,
diff --git a/arch/arm/mach-s5pv210/sleep.S b/arch/arm/mach-s5pv210/sleep.S
index d4d222b..2737622 100644
--- a/arch/arm/mach-s5pv210/sleep.S
+++ b/arch/arm/mach-s5pv210/sleep.S
@@ -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]
diff --git a/arch/arm/mach-tcc8k/board-tcc8000-sdk.c b/arch/arm/mach-tcc8k/board-tcc8000-sdk.c
index 7991415..fb6426d 100644
--- a/arch/arm/mach-tcc8k/board-tcc8000-sdk.c
+++ b/arch/arm/mach-tcc8k/board-tcc8000-sdk.c
@@ -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,
diff --git a/arch/arm/mach-vexpress/ct-ca9x4.c b/arch/arm/mach-vexpress/ct-ca9x4.c
index e628402..e9bccc5 100644
--- a/arch/arm/mach-vexpress/ct-ca9x4.c
+++ b/arch/arm/mach-vexpress/ct-ca9x4.c
@@ -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
--
1.6.2.5
^ permalink raw reply related
* [RFC 1/5] ARM: P2V: separate PHYS_OFFSET from platform definitions
From: Russell King - ARM Linux @ 2011-01-04 20:22 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20110104202052.GE24935@n2100.arm.linux.org.uk>
This uncouple PHYS_OFFSET from the platform definitions, thereby
facilitating run-time computation of the physical memory offset.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
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 +++++-----
| 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(-)
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index 23c2e8e..00b04ae 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -24,6 +24,8 @@
*/
#define UL(x) _AC(x, UL)
+#define PHYS_OFFSET PLAT_PHYS_OFFSET
+
#ifdef CONFIG_MMU
/*
diff --git a/arch/arm/kernel/tcm.c b/arch/arm/kernel/tcm.c
index 26685c2..f5cf660 100644
--- a/arch/arm/kernel/tcm.c
+++ b/arch/arm/kernel/tcm.c
@@ -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;
diff --git a/arch/arm/mach-aaec2000/include/mach/memory.h b/arch/arm/mach-aaec2000/include/mach/memory.h
index 4f93c56..4a10bf0 100644
--- a/arch/arm/mach-aaec2000/include/mach/memory.h
+++ b/arch/arm/mach-aaec2000/include/mach/memory.h
@@ -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 */
diff --git a/arch/arm/mach-at91/include/mach/memory.h b/arch/arm/mach-at91/include/mach/memory.h
index 14f4ef4..c2cfe50 100644
--- a/arch/arm/mach-at91/include/mach/memory.h
+++ b/arch/arm/mach-at91/include/mach/memory.h
@@ -23,6 +23,6 @@
#include <mach/hardware.h>
-#define PHYS_OFFSET (AT91_SDRAM_BASE)
+#define PLAT_PHYS_OFFSET (AT91_SDRAM_BASE)
#endif
diff --git a/arch/arm/mach-bcmring/include/mach/hardware.h b/arch/arm/mach-bcmring/include/mach/hardware.h
index 447eb34..8bf3564 100644
--- a/arch/arm/mach-bcmring/include/mach/hardware.h
+++ b/arch/arm/mach-bcmring/include/mach/hardware.h
@@ -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
diff --git a/arch/arm/mach-bcmring/include/mach/memory.h b/arch/arm/mach-bcmring/include/mach/memory.h
index 114f942..15162e4 100644
--- a/arch/arm/mach-bcmring/include/mach/memory.h
+++ b/arch/arm/mach-bcmring/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-clps711x/include/mach/memory.h b/arch/arm/mach-clps711x/include/mach/memory.h
index f45c8e8..3a032a6 100644
--- a/arch/arm/mach-clps711x/include/mach/memory.h
+++ b/arch/arm/mach-clps711x/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-cns3xxx/include/mach/memory.h b/arch/arm/mach-cns3xxx/include/mach/memory.h
index 3b6b769..dc16c5c 100644
--- a/arch/arm/mach-cns3xxx/include/mach/memory.h
+++ b/arch/arm/mach-cns3xxx/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-davinci/include/mach/memory.h b/arch/arm/mach-davinci/include/mach/memory.h
index 22eb97c..7882272 100644
--- a/arch/arm/mach-davinci/include/mach/memory.h
+++ b/arch/arm/mach-davinci/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-dove/include/mach/memory.h b/arch/arm/mach-dove/include/mach/memory.h
index d668720..bbc93fe 100644
--- a/arch/arm/mach-dove/include/mach/memory.h
+++ b/arch/arm/mach-dove/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-ebsa110/include/mach/memory.h b/arch/arm/mach-ebsa110/include/mach/memory.h
index 0ca66d0..8e49066 100644
--- a/arch/arm/mach-ebsa110/include/mach/memory.h
+++ b/arch/arm/mach-ebsa110/include/mach/memory.h
@@ -19,7 +19,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
/*
* Cache flushing area - SRAM
diff --git a/arch/arm/mach-ep93xx/include/mach/memory.h b/arch/arm/mach-ep93xx/include/mach/memory.h
index 554064e..c9400cf 100644
--- a/arch/arm/mach-ep93xx/include/mach/memory.h
+++ b/arch/arm/mach-ep93xx/include/mach/memory.h
@@ -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
--git a/arch/arm/mach-footbridge/include/mach/memory.h b/arch/arm/mach-footbridge/include/mach/memory.h
index 8d64f45..5c6df37 100644
--- a/arch/arm/mach-footbridge/include/mach/memory.h
+++ b/arch/arm/mach-footbridge/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-h720x/include/mach/memory.h b/arch/arm/mach-h720x/include/mach/memory.h
index ef4c1e2..9d36876 100644
--- a/arch/arm/mach-h720x/include/mach/memory.h
+++ b/arch/arm/mach-h720x/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-integrator/include/mach/memory.h b/arch/arm/mach-integrator/include/mach/memory.h
index 991f24d..334d5e2 100644
--- a/arch/arm/mach-integrator/include/mach/memory.h
+++ b/arch/arm/mach-integrator/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-iop13xx/include/mach/memory.h b/arch/arm/mach-iop13xx/include/mach/memory.h
index 3ad4553..1afa99e 100644
--- a/arch/arm/mach-iop13xx/include/mach/memory.h
+++ b/arch/arm/mach-iop13xx/include/mach/memory.h
@@ -6,7 +6,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#ifndef __ASSEMBLY__
diff --git a/arch/arm/mach-iop32x/include/mach/memory.h b/arch/arm/mach-iop32x/include/mach/memory.h
index c30f645..169cc23 100644
--- a/arch/arm/mach-iop32x/include/mach/memory.h
+++ b/arch/arm/mach-iop32x/include/mach/memory.h
@@ -8,6 +8,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0xa0000000)
+#define PLAT_PHYS_OFFSET UL(0xa0000000)
#endif
diff --git a/arch/arm/mach-iop33x/include/mach/memory.h b/arch/arm/mach-iop33x/include/mach/memory.h
index a30a96a..8e1daf7 100644
--- a/arch/arm/mach-iop33x/include/mach/memory.h
+++ b/arch/arm/mach-iop33x/include/mach/memory.h
@@ -8,6 +8,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#endif
diff --git a/arch/arm/mach-ixp2000/include/mach/memory.h b/arch/arm/mach-ixp2000/include/mach/memory.h
index 98e3471..5f0c4fd 100644
--- a/arch/arm/mach-ixp2000/include/mach/memory.h
+++ b/arch/arm/mach-ixp2000/include/mach/memory.h
@@ -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>
diff --git a/arch/arm/mach-ixp23xx/include/mach/memory.h b/arch/arm/mach-ixp23xx/include/mach/memory.h
index 6ef65d8..6cf0704 100644
--- a/arch/arm/mach-ixp23xx/include/mach/memory.h
+++ b/arch/arm/mach-ixp23xx/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-ixp4xx/include/mach/memory.h b/arch/arm/mach-ixp4xx/include/mach/memory.h
index 0136eaa..6d388c9 100644
--- a/arch/arm/mach-ixp4xx/include/mach/memory.h
+++ b/arch/arm/mach-ixp4xx/include/mach/memory.h
@@ -12,7 +12,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)
diff --git a/arch/arm/mach-kirkwood/include/mach/memory.h b/arch/arm/mach-kirkwood/include/mach/memory.h
index 45431e1..4600b44 100644
--- a/arch/arm/mach-kirkwood/include/mach/memory.h
+++ b/arch/arm/mach-kirkwood/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-ks8695/include/mach/memory.h b/arch/arm/mach-ks8695/include/mach/memory.h
index bace9a6..f7e1b9b 100644
--- a/arch/arm/mach-ks8695/include/mach/memory.h
+++ b/arch/arm/mach-ks8695/include/mach/memory.h
@@ -18,7 +18,7 @@
/*
* Physical SRAM offset.
*/
-#define PHYS_OFFSET KS8695_SDRAM_PA
+#define PLAT_PHYS_OFFSET KS8695_SDRAM_PA
#ifndef __ASSEMBLY__
diff --git a/arch/arm/mach-lh7a40x/include/mach/memory.h b/arch/arm/mach-lh7a40x/include/mach/memory.h
index edb8f5f..f77bde8 100644
--- a/arch/arm/mach-lh7a40x/include/mach/memory.h
+++ b/arch/arm/mach-lh7a40x/include/mach/memory.h
@@ -17,7 +17,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0xc0000000)
+#define PLAT_PHYS_OFFSET UL(0xc0000000)
/*
* Sparsemem version of the above
diff --git a/arch/arm/mach-loki/include/mach/memory.h b/arch/arm/mach-loki/include/mach/memory.h
index 2ed7e6e..6636665 100644
--- a/arch/arm/mach-loki/include/mach/memory.h
+++ b/arch/arm/mach-loki/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-lpc32xx/include/mach/memory.h b/arch/arm/mach-lpc32xx/include/mach/memory.h
index 044e1ac..a647dd6 100644
--- a/arch/arm/mach-lpc32xx/include/mach/memory.h
+++ b/arch/arm/mach-lpc32xx/include/mach/memory.h
@@ -22,6 +22,6 @@
/*
* Physical DRAM offset of bank 0
*/
-#define PHYS_OFFSET UL(0x80000000)
+#define PLAT_PHYS_OFFSET UL(0x80000000)
#endif
diff --git a/arch/arm/mach-mmp/include/mach/memory.h b/arch/arm/mach-mmp/include/mach/memory.h
index bdb21d7..d68b50a 100644
--- a/arch/arm/mach-mmp/include/mach/memory.h
+++ b/arch/arm/mach-mmp/include/mach/memory.h
@@ -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 */
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c
index 05241df..1931e07 100644
--- a/arch/arm/mach-msm/board-msm7x30.c
+++ b/arch/arm/mach-msm/board-msm7x30.c
@@ -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>
diff --git a/arch/arm/mach-msm/include/mach/memory.h b/arch/arm/mach-msm/include/mach/memory.h
index 070e17d..176875d 100644
--- a/arch/arm/mach-msm/include/mach/memory.h
+++ b/arch/arm/mach-msm/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-mv78xx0/include/mach/memory.h b/arch/arm/mach-mv78xx0/include/mach/memory.h
index e663042..a648c51 100644
--- a/arch/arm/mach-mv78xx0/include/mach/memory.h
+++ b/arch/arm/mach-mv78xx0/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-mx3/mach-kzm_arm11_01.c b/arch/arm/mach-mx3/mach-kzm_arm11_01.c
index 042cd56..d8ebde8 100644
--- a/arch/arm/mach-mx3/mach-kzm_arm11_01.c
+++ b/arch/arm/mach-mx3/mach-kzm_arm11_01.c
@@ -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"
diff --git a/arch/arm/mach-netx/include/mach/memory.h b/arch/arm/mach-netx/include/mach/memory.h
index 9a363f2..5956149 100644
--- a/arch/arm/mach-netx/include/mach/memory.h
+++ b/arch/arm/mach-netx/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-nomadik/include/mach/memory.h b/arch/arm/mach-nomadik/include/mach/memory.h
index 1e5689d..d332521 100644
--- a/arch/arm/mach-nomadik/include/mach/memory.h
+++ b/arch/arm/mach-nomadik/include/mach/memory.h
@@ -23,6 +23,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#endif
diff --git a/arch/arm/mach-ns9xxx/include/mach/memory.h b/arch/arm/mach-ns9xxx/include/mach/memory.h
index 6107193..5c65aee 100644
--- a/arch/arm/mach-ns9xxx/include/mach/memory.h
+++ b/arch/arm/mach-ns9xxx/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-nuc93x/include/mach/memory.h b/arch/arm/mach-nuc93x/include/mach/memory.h
index 323ab0d..ef9864b 100644
--- a/arch/arm/mach-nuc93x/include/mach/memory.h
+++ b/arch/arm/mach-nuc93x/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-orion5x/include/mach/memory.h b/arch/arm/mach-orion5x/include/mach/memory.h
index 52a2955..6769917 100644
--- a/arch/arm/mach-orion5x/include/mach/memory.h
+++ b/arch/arm/mach-orion5x/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-pnx4008/include/mach/memory.h b/arch/arm/mach-pnx4008/include/mach/memory.h
index 0e87700..1275db6 100644
--- a/arch/arm/mach-pnx4008/include/mach/memory.h
+++ b/arch/arm/mach-pnx4008/include/mach/memory.h
@@ -16,6 +16,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x80000000)
+#define PLAT_PHYS_OFFSET UL(0x80000000)
#endif
diff --git a/arch/arm/mach-pxa/include/mach/memory.h b/arch/arm/mach-pxa/include/mach/memory.h
index 92361a6..7f68724 100644
--- a/arch/arm/mach-pxa/include/mach/memory.h
+++ b/arch/arm/mach-pxa/include/mach/memory.h
@@ -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);
diff --git a/arch/arm/mach-realview/include/mach/memory.h b/arch/arm/mach-realview/include/mach/memory.h
index 5dafc15..e05fc2c 100644
--- a/arch/arm/mach-realview/include/mach/memory.h
+++ b/arch/arm/mach-realview/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-rpc/include/mach/memory.h b/arch/arm/mach-rpc/include/mach/memory.h
index 78191bf..18a2210 100644
--- a/arch/arm/mach-rpc/include/mach/memory.h
+++ b/arch/arm/mach-rpc/include/mach/memory.h
@@ -21,7 +21,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x10000000)
+#define PLAT_PHYS_OFFSET UL(0x10000000)
/*
* Cache flushing area - ROM
diff --git a/arch/arm/mach-s3c2400/include/mach/memory.h b/arch/arm/mach-s3c2400/include/mach/memory.h
index cf5901f..3f33670 100644
--- a/arch/arm/mach-s3c2400/include/mach/memory.h
+++ b/arch/arm/mach-s3c2400/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-s3c2410/include/mach/memory.h b/arch/arm/mach-s3c2410/include/mach/memory.h
index 6f1e587..f92b97b 100644
--- a/arch/arm/mach-s3c2410/include/mach/memory.h
+++ b/arch/arm/mach-s3c2410/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-s3c24a0/include/mach/memory.h b/arch/arm/mach-s3c24a0/include/mach/memory.h
index 7d74fd5..7d208a7 100644
--- a/arch/arm/mach-s3c24a0/include/mach/memory.h
+++ b/arch/arm/mach-s3c24a0/include/mach/memory.h
@@ -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)
diff --git a/arch/arm/mach-s3c64xx/include/mach/memory.h b/arch/arm/mach-s3c64xx/include/mach/memory.h
index 42cc54e..4760cda 100644
--- a/arch/arm/mach-s3c64xx/include/mach/memory.h
+++ b/arch/arm/mach-s3c64xx/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-s5p6442/include/mach/memory.h b/arch/arm/mach-s5p6442/include/mach/memory.h
index 9ddd877..cfe259d 100644
--- a/arch/arm/mach-s5p6442/include/mach/memory.h
+++ b/arch/arm/mach-s5p6442/include/mach/memory.h
@@ -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 */
diff --git a/arch/arm/mach-s5p64x0/include/mach/memory.h b/arch/arm/mach-s5p64x0/include/mach/memory.h
index 1b036b0..365a6eb 100644
--- a/arch/arm/mach-s5p64x0/include/mach/memory.h
+++ b/arch/arm/mach-s5p64x0/include/mach/memory.h
@@ -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 */
diff --git a/arch/arm/mach-s5pc100/include/mach/memory.h b/arch/arm/mach-s5pc100/include/mach/memory.h
index 4b60d18..bda4e79 100644
--- a/arch/arm/mach-s5pc100/include/mach/memory.h
+++ b/arch/arm/mach-s5pc100/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-s5pv210/include/mach/memory.h b/arch/arm/mach-s5pv210/include/mach/memory.h
index d503e0c..7b5fcf0 100644
--- a/arch/arm/mach-s5pv210/include/mach/memory.h
+++ b/arch/arm/mach-s5pv210/include/mach/memory.h
@@ -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)
/*
diff --git a/arch/arm/mach-s5pv310/include/mach/memory.h b/arch/arm/mach-s5pv310/include/mach/memory.h
index 1dffb48..470b01b 100644
--- a/arch/arm/mach-s5pv310/include/mach/memory.h
+++ b/arch/arm/mach-s5pv310/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-sa1100/include/mach/memory.h b/arch/arm/mach-sa1100/include/mach/memory.h
index 128a1df..a44da6a 100644
--- a/arch/arm/mach-sa1100/include/mach/memory.h
+++ b/arch/arm/mach-sa1100/include/mach/memory.h
@@ -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__
diff --git a/arch/arm/mach-shark/include/mach/memory.h b/arch/arm/mach-shark/include/mach/memory.h
index d9c4812..9afb170 100644
--- a/arch/arm/mach-shark/include/mach/memory.h
+++ b/arch/arm/mach-shark/include/mach/memory.h
@@ -15,7 +15,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x08000000)
+#define PLAT_PHYS_OFFSET UL(0x08000000)
#ifndef __ASSEMBLY__
diff --git a/arch/arm/mach-shmobile/include/mach/memory.h b/arch/arm/mach-shmobile/include/mach/memory.h
index 377584e..ad00c3c 100644
--- a/arch/arm/mach-shmobile/include/mach/memory.h
+++ b/arch/arm/mach-shmobile/include/mach/memory.h
@@ -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 */
diff --git a/arch/arm/mach-tegra/include/mach/memory.h b/arch/arm/mach-tegra/include/mach/memory.h
index 6151bab..537db3a 100644
--- a/arch/arm/mach-tegra/include/mach/memory.h
+++ b/arch/arm/mach-tegra/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-u300/include/mach/memory.h b/arch/arm/mach-u300/include/mach/memory.h
index bf134bc..888e2e3 100644
--- a/arch/arm/mach-u300/include/mach/memory.h
+++ b/arch/arm/mach-u300/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-u300/u300.c b/arch/arm/mach-u300/u300.c
index 07c35a8..48b3b7f 100644
--- a/arch/arm/mach-u300/u300.c
+++ b/arch/arm/mach-u300/u300.c
@@ -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)
{
diff --git a/arch/arm/mach-ux500/include/mach/memory.h b/arch/arm/mach-ux500/include/mach/memory.h
index 510571a..2ef697a 100644
--- a/arch/arm/mach-ux500/include/mach/memory.h
+++ b/arch/arm/mach-ux500/include/mach/memory.h
@@ -12,7 +12,7 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#define BUS_OFFSET UL(0x00000000)
#endif
diff --git a/arch/arm/mach-versatile/include/mach/memory.h b/arch/arm/mach-versatile/include/mach/memory.h
index 79aeab8..dacc9d8 100644
--- a/arch/arm/mach-versatile/include/mach/memory.h
+++ b/arch/arm/mach-versatile/include/mach/memory.h
@@ -23,6 +23,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x00000000)
+#define PLAT_PHYS_OFFSET UL(0x00000000)
#endif
diff --git a/arch/arm/mach-vexpress/include/mach/memory.h b/arch/arm/mach-vexpress/include/mach/memory.h
index be28232..5b7fcd4 100644
--- a/arch/arm/mach-vexpress/include/mach/memory.h
+++ b/arch/arm/mach-vexpress/include/mach/memory.h
@@ -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
diff --git a/arch/arm/mach-w90x900/include/mach/memory.h b/arch/arm/mach-w90x900/include/mach/memory.h
index 971b807..f02905b 100644
--- a/arch/arm/mach-w90x900/include/mach/memory.h
+++ b/arch/arm/mach-w90x900/include/mach/memory.h
@@ -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
diff --git a/arch/arm/plat-omap/include/plat/memory.h b/arch/arm/plat-omap/include/plat/memory.h
index f8d922f..e6720aa 100644
--- a/arch/arm/plat-omap/include/plat/memory.h
+++ b/arch/arm/plat-omap/include/plat/memory.h
@@ -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
/*
diff --git a/arch/arm/plat-spear/include/plat/memory.h b/arch/arm/plat-spear/include/plat/memory.h
index 27a4aba..7e3599e 100644
--- a/arch/arm/plat-spear/include/plat/memory.h
+++ b/arch/arm/plat-spear/include/plat/memory.h
@@ -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 */
diff --git a/arch/arm/plat-stmp3xxx/include/mach/memory.h b/arch/arm/plat-stmp3xxx/include/mach/memory.h
index 7b875a0..61fa548 100644
--- a/arch/arm/plat-stmp3xxx/include/mach/memory.h
+++ b/arch/arm/plat-stmp3xxx/include/mach/memory.h
@@ -17,6 +17,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x40000000)
+#define PLAT_PHYS_OFFSET UL(0x40000000)
#endif
diff --git a/arch/arm/plat-tcc/include/mach/memory.h b/arch/arm/plat-tcc/include/mach/memory.h
index cd91ba8..28a6e0c 100644
--- a/arch/arm/plat-tcc/include/mach/memory.h
+++ b/arch/arm/plat-tcc/include/mach/memory.h
@@ -13,6 +13,6 @@
/*
* Physical DRAM offset.
*/
-#define PHYS_OFFSET UL(0x20000000)
+#define PLAT_PHYS_OFFSET UL(0x20000000)
#endif
--
1.6.2.5
^ permalink raw reply related
* [RFC 0/5] runtime P2V translations
From: Russell King - ARM Linux @ 2011-01-04 20:20 UTC (permalink / raw)
To: linux-arm-kernel
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.
^ permalink raw reply
* [PATCH v3 0/4] Introduce hardware spinlock framework
From: Andrew Morton @ 2011-01-04 20:19 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <AANLkTikLuu+njQA_PRmS_q8zs_xpB2gsqh3oZQJkB_Cm@mail.gmail.com>
On Tue, 4 Jan 2011 14:23:20 +0200
Ohad Ben-Cohen <ohad@wizery.com> wrote:
> Hi Andrew,
>
> On Sat, Dec 18, 2010 at 2:53 AM, Tony Lindgren <tony@atomide.com> wrote:
> > * Ohad Ben-Cohen <ohad@wizery.com> [101216 13:34]:
> >> Tony, Andrew, can you please have a look ?
> >>
> >> Any comment or suggestion is appreciated.
> >
> > Looks sane to me from omap point of view and it seems the locks
> > are now all timeout based:
> >
> > Acked-by: Tony Lindgren <tony@atomide.com>
>
> Can you please have a look at this patch set (see link no. [1] below) ?
I looked - it looks reasonable. This is exactly the wrong time to be
looking at large new patchsets - please refresh, retest and resend
after -rc1 is released?
^ permalink raw reply
* [PATCH 1/4] ARM: runtime patching of __virt_to_phys() and __phys_to_virt()
From: Russell King - ARM Linux @ 2011-01-04 20:17 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <8ya39p8h4ui.fsf@huya.qualcomm.com>
On Tue, Jan 04, 2011 at 11:00:05AM -0800, David Brown wrote:
> On Tue, Jan 04 2011, Nicolas Pitre wrote:
>
> > On Tue, 4 Jan 2011, David Brown wrote:
> >
> >> Any idea how much it would hurt other targets to have the
> >> __virt_to_phys() and __phys_to_virt() have a 16-bit fixup, even if only
> >> the upper 8 bits are used?
> >
> > Probably not that much. But let's make it work satisfactorily for the
> > general case first, and then we might consider and test variations that
> > could accommodate msm.
>
> Sounds like a good plan. We've got quite a few other things to clean up
> before we can build for more than one arch anyway.
Actually, we can do this quite easily. Having a config symbol which
gets enabled when MSM is added, which then enables two consecutive
__pv_fixups gives us 16-bits to play with.
As I originally intended with my implementation, the value field of the
instruction can be used to identify what this fixup is about - and we
can put that to use by selecting either bits 31-24 or 23-16 of the
offset value.
This still allows optimizations to happen with instruction scheduling -
eg, for the MSM kernel I've just built with this enabled:
c000b320: e2844001 add r4, r4, #1 ; 0x1
c000b324: e59f3264 ldr r3, [pc, #612] ; c000b590 <setup_arch+0x690>
c000b328: e2844000 add r4, r4, #0 ; 0x0
c000b32c: e2833001 add r3, r3, #1 ; 0x1
c000b330: e59f5228 ldr r5, [pc, #552] ; c000b560 <setup_arch+0x660>
c000b334: e2833000 add r3, r3, #0 ; 0x0
The first and second adds comprise one translation, the second pair are
a second translation, and as you can see, the compiler scheduled the
loads inbetween.
^ permalink raw reply
* [PATCH 5/5] omap2+: pm_bus: make functions used as pointers as static
From: Nishanth Menon @ 2011-01-04 20:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1294171634-13943-1-git-send-email-nm@ti.com>
omap_pm_runtime_suspend and omap_pm_runtime_resume are used
as function pointers and does not really need to be exposed
to the world.
Fixes sparse warnings:
arch/arm/mach-omap2/pm_bus.c:23:5: warning: symbol 'omap_pm_runtime_suspend' was not declared. Should it be static?
arch/arm/mach-omap2/pm_bus.c:40:5: warning: symbol 'omap_pm_runtime_resume' was not declared. Should it be static?
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/pm_bus.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap2/pm_bus.c b/arch/arm/mach-omap2/pm_bus.c
index 784989f..5acd2ab 100644
--- a/arch/arm/mach-omap2/pm_bus.c
+++ b/arch/arm/mach-omap2/pm_bus.c
@@ -20,7 +20,7 @@
#include <plat/omap-pm.h>
#ifdef CONFIG_PM_RUNTIME
-int omap_pm_runtime_suspend(struct device *dev)
+static int omap_pm_runtime_suspend(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
int r, ret = 0;
@@ -37,7 +37,7 @@ int omap_pm_runtime_suspend(struct device *dev)
return ret;
};
-int omap_pm_runtime_resume(struct device *dev)
+static int omap_pm_runtime_resume(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
int r;
--
1.6.3.3
^ permalink raw reply related
* [PATCH 4/5] omap2+: wdt: trivial sparse fixes
From: Nishanth Menon @ 2011-01-04 20:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1294171634-13943-1-git-send-email-nm@ti.com>
omap2_wd_timer_disable is declared in wdtimer.h and used by hwmod
function pointers for usage, the header inclusion is necessary
to ensure that the prototype and function remains consistent.
omap_wdt_latency is passed as a pointer and does not need global scope
Fixes sparse warnings:
arch/arm/mach-omap2/devices.c:981:31: warning: symbol 'omap_wdt_latency' was not declared. Should it be static?
arch/arm/mach-omap2/wd_timer.c:27:5: warning: symbol 'omap2_wd_timer_disable' was not declared. Should it be static?
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/devices.c | 2 +-
arch/arm/mach-omap2/wd_timer.c | 2 ++
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 381f4eb..2c9c912 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -978,7 +978,7 @@ static int __init omap2_init_devices(void)
arch_initcall(omap2_init_devices);
#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
-struct omap_device_pm_latency omap_wdt_latency[] = {
+static struct omap_device_pm_latency omap_wdt_latency[] = {
[0] = {
.deactivate_func = omap_device_idle_hwmods,
.activate_func = omap_device_enable_hwmods,
diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c
index b0c4907..4067669 100644
--- a/arch/arm/mach-omap2/wd_timer.c
+++ b/arch/arm/mach-omap2/wd_timer.c
@@ -13,6 +13,8 @@
#include <plat/omap_hwmod.h>
+#include "wd_timer.h"
+
/*
* In order to avoid any assumptions from bootloader regarding WDT
* settings, WDT module is reset during init. This enables the watchdog
--
1.6.3.3
^ permalink raw reply related
* [PATCH 3/5] omap3: igep3: make igep3_flash_init static
From: Nishanth Menon @ 2011-01-04 20:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1294171634-13943-1-git-send-email-nm@ti.com>
igep3_flash_init is not used beyond the scope of the file, make it
static instead.
Fixes sparse warning:
arch/arm/mach-omap2/board-igep0030.c:106:13: warning: symbol 'igep3_flash_init' was not declared. Should it be static?
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/board-igep0030.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c
index bcccd68..c88e8f7 100644
--- a/arch/arm/mach-omap2/board-igep0030.c
+++ b/arch/arm/mach-omap2/board-igep0030.c
@@ -103,7 +103,7 @@ static struct platform_device igep3_onenand_device = {
},
};
-void __init igep3_flash_init(void)
+static void __init igep3_flash_init(void)
{
u8 cs = 0;
u8 onenandcs = GPMC_CS_NUM + 1;
@@ -137,7 +137,7 @@ void __init igep3_flash_init(void)
}
#else
-void __init igep3_flash_init(void) {}
+static void __init igep3_flash_init(void) {}
#endif
static struct regulator_consumer_supply igep3_vmmc1_supply = {
--
1.6.3.3
^ permalink raw reply related
* [PATCH 2/5] omap3: zoom: use static for pointer passing
From: Nishanth Menon @ 2011-01-04 20:07 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1294171634-13943-1-git-send-email-nm@ti.com>
omap_zoom_wlan_data and zoom2_set_hs_extmute are not used beyond
the scope of zoom-peripherals directly, instead pointers are used.
make them static instead.
Fixes sparse warnings:
arch/arm/mach-omap2/board-zoom-peripherals.c:193:29: warning: symbol 'omap_zoom_wlan_data' was not declared. Should it be static?
arch/arm/mach-omap2/board-zoom-peripherals.c:245:6: warning: symbol 'zoom2_set_hs_extmute' was not declared. Should it be static?
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/board-zoom-peripherals.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
index 3fbd0ed..3d1f9ab 100644
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -190,7 +190,7 @@ static struct platform_device omap_vwlan_device = {
},
};
-struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
+static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
.irq = OMAP_GPIO_IRQ(OMAP_ZOOM_WLAN_IRQ_GPIO),
/* ZOOM ref clock is 26 MHz */
.board_ref_clock = 1,
@@ -242,7 +242,7 @@ static int zoom_twl_gpio_setup(struct device *dev,
}
/* EXTMUTE callback function */
-void zoom2_set_hs_extmute(int mute)
+static void zoom2_set_hs_extmute(int mute)
{
gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
}
--
1.6.3.3
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox