From: Nicolas Pitre <nicolas.pitre@linaro.org> To: Michal Simek <monstr@monstr.eu> Cc: linux-kernel@vger.kernel.org, Russell King <linux@arm.linux.org.uk>, Marc Zyngier <marc.zyngier@arm.com>, Grant Likely <grant.likely@secretlab.ca>, Will Deacon <will.deacon@arm.com>, Rob Herring <rob.herring@calxeda.com>, linux-arm-kernel@lists.infradead.org, Ohad Ben-Cohen <ohad@wizery.com>, Peter Crosthwaite <peter.crosthwaite@petalogix.com> Subject: Re: [RFC PATCH 7/8] ARM: vmlinux.lds: Setup physical load address not virtual Date: Mon, 18 Jun 2012 10:06:36 -0400 (EDT) [thread overview] Message-ID: <alpine.LFD.2.02.1206181000540.23555@xanadu.home> (raw) In-Reply-To: <1340019011-18642-8-git-send-email-monstr@monstr.eu> On Mon, 18 Jun 2012, Michal Simek wrote: > Setup correct virtual and physical address in ELF LOAD section. We are moving to a single kernel binary for multiple targets, including targets with different physical load addresses. The kernel code figures out at run time what the actual physical address is when CONFIG_ARM_PATCH_PHYS_VIRT is set which is the default these days. In other words, we don't know the physical offset at build time in that case and CONFIG_PHYS_OFFSET is simply not defined. Why do you need this change? Your patch comments are lacking justification for them. > Signed-off-by: Michal Simek <monstr@monstr.eu> > --- > arch/arm/include/asm/page.h | 2 ++ > arch/arm/kernel/vmlinux.lds.S | 28 ++++++++++++++-------------- > 2 files changed, 16 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h > index ecf9019..4070209 100644 > --- a/arch/arm/include/asm/page.h > +++ b/arch/arm/include/asm/page.h > @@ -15,6 +15,8 @@ > #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) > #define PAGE_MASK (~(PAGE_SIZE-1)) > > +#define LOAD_OFFSET (CONFIG_PAGE_OFFSET - CONFIG_PHYS_OFFSET) > + > #ifndef __ASSEMBLY__ > > #ifndef CONFIG_MMU > diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S > index c887be0..b996bc0 100644 > --- a/arch/arm/kernel/vmlinux.lds.S > +++ b/arch/arm/kernel/vmlinux.lds.S > @@ -3,11 +3,11 @@ > * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> > */ > > +#include <asm/page.h> > #include <asm-generic/vmlinux.lds.h> > #include <asm/cache.h> > #include <asm/thread_info.h> > #include <asm/memory.h> > -#include <asm/page.h> > > #define PROC_INFO \ > . = ALIGN(4); \ > @@ -86,11 +86,11 @@ SECTIONS > #else > . = PAGE_OFFSET + TEXT_OFFSET; > #endif > - .head.text : { > + .head.text : AT(ADDR(.head.text) - LOAD_OFFSET) { > _text = .; > HEAD_TEXT > } > - .text : { /* Real text segment */ > + .text : AT(ADDR(.text) - LOAD_OFFSET){ /* Real text segment */ > _stext = .; /* Text and read-only data */ > __exception_text_start = .; > *(.exception.text) > @@ -132,12 +132,12 @@ SECTIONS > * Stack unwinding tables > */ > . = ALIGN(8); > - .ARM.unwind_idx : { > + .ARM.unwind_idx : AT(ADDR(.ARM.unwind_idx) - LOAD_OFFSET) { > __start_unwind_idx = .; > *(.ARM.exidx*) > __stop_unwind_idx = .; > } > - .ARM.unwind_tab : { > + .ARM.unwind_tab : AT(ADDR(.ARM.unwind_tab) - LOAD_OFFSET) { > __start_unwind_tab = .; > *(.ARM.extab*) > __stop_unwind_tab = .; > @@ -152,35 +152,35 @@ SECTIONS > #endif > > INIT_TEXT_SECTION(8) > - .exit.text : { > + .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { > ARM_EXIT_KEEP(EXIT_TEXT) > } > - .init.proc.info : { > + .init.proc.info : AT(ADDR(.init.proc.info) - LOAD_OFFSET) { > ARM_CPU_DISCARD(PROC_INFO) > } > - .init.arch.info : { > + .init.arch.info : AT(ADDR(.init.arch.info) - LOAD_OFFSET) { > __arch_info_begin = .; > *(.arch.info.init) > __arch_info_end = .; > } > - .init.tagtable : { > + .init.tagtable : AT(ADDR(.init.tagtable) - LOAD_OFFSET) { > __tagtable_begin = .; > *(.taglist.init) > __tagtable_end = .; > } > #ifdef CONFIG_SMP_ON_UP > - .init.smpalt : { > + .init.smpalt : AT(ADDR(.init.smpalt) - LOAD_OFFSET) { > __smpalt_begin = .; > *(.alt.smp.init) > __smpalt_end = .; > } > #endif > - .init.pv_table : { > + .init.pv_table : AT(ADDR(.init.pv_table) - LOAD_OFFSET) { > __pv_table_begin = .; > *(.pv_table) > __pv_table_end = .; > } > - .init.data : { > + .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { > #ifndef CONFIG_XIP_KERNEL > INIT_DATA > #endif > @@ -191,7 +191,7 @@ SECTIONS > INIT_RAM_FS > } > #ifndef CONFIG_XIP_KERNEL > - .exit.data : { > + .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { > ARM_EXIT_KEEP(EXIT_DATA) > } > #endif > @@ -207,7 +207,7 @@ SECTIONS > __data_loc = .; > #endif > > - .data : AT(__data_loc) { > + .data : AT(ADDR(.data) - LOAD_OFFSET) { > _data = .; /* address in memory */ > _sdata = .; > > -- > 1.7.0.4 >
WARNING: multiple messages have this Message-ID (diff)
From: nicolas.pitre@linaro.org (Nicolas Pitre) To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 7/8] ARM: vmlinux.lds: Setup physical load address not virtual Date: Mon, 18 Jun 2012 10:06:36 -0400 (EDT) [thread overview] Message-ID: <alpine.LFD.2.02.1206181000540.23555@xanadu.home> (raw) In-Reply-To: <1340019011-18642-8-git-send-email-monstr@monstr.eu> On Mon, 18 Jun 2012, Michal Simek wrote: > Setup correct virtual and physical address in ELF LOAD section. We are moving to a single kernel binary for multiple targets, including targets with different physical load addresses. The kernel code figures out at run time what the actual physical address is when CONFIG_ARM_PATCH_PHYS_VIRT is set which is the default these days. In other words, we don't know the physical offset at build time in that case and CONFIG_PHYS_OFFSET is simply not defined. Why do you need this change? Your patch comments are lacking justification for them. > Signed-off-by: Michal Simek <monstr@monstr.eu> > --- > arch/arm/include/asm/page.h | 2 ++ > arch/arm/kernel/vmlinux.lds.S | 28 ++++++++++++++-------------- > 2 files changed, 16 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h > index ecf9019..4070209 100644 > --- a/arch/arm/include/asm/page.h > +++ b/arch/arm/include/asm/page.h > @@ -15,6 +15,8 @@ > #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) > #define PAGE_MASK (~(PAGE_SIZE-1)) > > +#define LOAD_OFFSET (CONFIG_PAGE_OFFSET - CONFIG_PHYS_OFFSET) > + > #ifndef __ASSEMBLY__ > > #ifndef CONFIG_MMU > diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S > index c887be0..b996bc0 100644 > --- a/arch/arm/kernel/vmlinux.lds.S > +++ b/arch/arm/kernel/vmlinux.lds.S > @@ -3,11 +3,11 @@ > * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> > */ > > +#include <asm/page.h> > #include <asm-generic/vmlinux.lds.h> > #include <asm/cache.h> > #include <asm/thread_info.h> > #include <asm/memory.h> > -#include <asm/page.h> > > #define PROC_INFO \ > . = ALIGN(4); \ > @@ -86,11 +86,11 @@ SECTIONS > #else > . = PAGE_OFFSET + TEXT_OFFSET; > #endif > - .head.text : { > + .head.text : AT(ADDR(.head.text) - LOAD_OFFSET) { > _text = .; > HEAD_TEXT > } > - .text : { /* Real text segment */ > + .text : AT(ADDR(.text) - LOAD_OFFSET){ /* Real text segment */ > _stext = .; /* Text and read-only data */ > __exception_text_start = .; > *(.exception.text) > @@ -132,12 +132,12 @@ SECTIONS > * Stack unwinding tables > */ > . = ALIGN(8); > - .ARM.unwind_idx : { > + .ARM.unwind_idx : AT(ADDR(.ARM.unwind_idx) - LOAD_OFFSET) { > __start_unwind_idx = .; > *(.ARM.exidx*) > __stop_unwind_idx = .; > } > - .ARM.unwind_tab : { > + .ARM.unwind_tab : AT(ADDR(.ARM.unwind_tab) - LOAD_OFFSET) { > __start_unwind_tab = .; > *(.ARM.extab*) > __stop_unwind_tab = .; > @@ -152,35 +152,35 @@ SECTIONS > #endif > > INIT_TEXT_SECTION(8) > - .exit.text : { > + .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { > ARM_EXIT_KEEP(EXIT_TEXT) > } > - .init.proc.info : { > + .init.proc.info : AT(ADDR(.init.proc.info) - LOAD_OFFSET) { > ARM_CPU_DISCARD(PROC_INFO) > } > - .init.arch.info : { > + .init.arch.info : AT(ADDR(.init.arch.info) - LOAD_OFFSET) { > __arch_info_begin = .; > *(.arch.info.init) > __arch_info_end = .; > } > - .init.tagtable : { > + .init.tagtable : AT(ADDR(.init.tagtable) - LOAD_OFFSET) { > __tagtable_begin = .; > *(.taglist.init) > __tagtable_end = .; > } > #ifdef CONFIG_SMP_ON_UP > - .init.smpalt : { > + .init.smpalt : AT(ADDR(.init.smpalt) - LOAD_OFFSET) { > __smpalt_begin = .; > *(.alt.smp.init) > __smpalt_end = .; > } > #endif > - .init.pv_table : { > + .init.pv_table : AT(ADDR(.init.pv_table) - LOAD_OFFSET) { > __pv_table_begin = .; > *(.pv_table) > __pv_table_end = .; > } > - .init.data : { > + .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { > #ifndef CONFIG_XIP_KERNEL > INIT_DATA > #endif > @@ -191,7 +191,7 @@ SECTIONS > INIT_RAM_FS > } > #ifndef CONFIG_XIP_KERNEL > - .exit.data : { > + .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { > ARM_EXIT_KEEP(EXIT_DATA) > } > #endif > @@ -207,7 +207,7 @@ SECTIONS > __data_loc = .; > #endif > > - .data : AT(__data_loc) { > + .data : AT(ADDR(.data) - LOAD_OFFSET) { > _data = .; /* address in memory */ > _sdata = .; > > -- > 1.7.0.4 >
next prev parent reply other threads:[~2012-06-18 14:13 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-06-18 11:30 ARM SMP/GIC/LDS patches for Xilinx Zynq remoteproc Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 1/8] ARM: gic: Support forcing cpumask for possible cpus in the system Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:33 ` Russell King - ARM Linux 2012-06-18 11:33 ` Russell King - ARM Linux 2012-06-18 11:41 ` Michal Simek 2012-06-18 11:41 ` Michal Simek 2012-06-20 6:48 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 2/8] ARM: gic: Export gic_raise_softirq function for kernel modules Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 3/8] ARM: gic: Introduce new gic_set_cpu Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 4/8] ARM: smp: Move cpu initialization directly to ipi_cpu_stop Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:34 ` Russell King - ARM Linux 2012-06-18 11:34 ` Russell King - ARM Linux 2012-06-18 11:53 ` Michal Simek 2012-06-18 11:53 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 5/8] AMP: smp: Extend number of IPIs Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:35 ` Russell King - ARM Linux 2012-06-18 11:35 ` Russell King - ARM Linux 2012-06-18 11:54 ` Michal Simek 2012-06-18 11:54 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 6/8] ARM: smp: Use generic API for ipi Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:36 ` Russell King - ARM Linux 2012-06-18 11:36 ` Russell King - ARM Linux 2012-06-18 11:54 ` Michal Simek 2012-06-18 11:54 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 7/8] ARM: vmlinux.lds: Setup physical load address not virtual Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 14:06 ` Nicolas Pitre [this message] 2012-06-18 14:06 ` Nicolas Pitre 2012-06-18 18:15 ` Michal Simek 2012-06-18 19:02 ` Nicolas Pitre 2012-06-18 19:02 ` Nicolas Pitre 2012-06-18 19:23 ` Michal Simek 2012-06-18 19:23 ` Michal Simek 2012-06-18 21:10 ` Nicolas Pitre 2012-06-18 21:10 ` Nicolas Pitre 2012-06-19 4:16 ` Michal Simek 2012-06-18 11:30 ` [RFC PATCH 8/8] ARM: vmlinux.lds: Setup correct entry point to physical address Michal Simek 2012-06-18 11:30 ` Michal Simek 2012-06-18 11:37 ` Russell King - ARM Linux 2012-06-18 11:37 ` Russell King - ARM Linux 2012-06-18 11:45 ` Michal Simek 2012-06-18 11:45 ` Michal Simek
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=alpine.LFD.2.02.1206181000540.23555@xanadu.home \ --to=nicolas.pitre@linaro.org \ --cc=grant.likely@secretlab.ca \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=marc.zyngier@arm.com \ --cc=monstr@monstr.eu \ --cc=ohad@wizery.com \ --cc=peter.crosthwaite@petalogix.com \ --cc=rob.herring@calxeda.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.