Re: [RFC PATCH v2, part4 03/39] c6x: normalize global variables exported by vmlinux.lds

Mark Salter
2013-03-25T17:58:50Z

On Sun, 2013-03-24 at 15:24 +0800, Jiang Liu wrote:
> Normalize global variables exported by vmlinux.lds to conform usage
> guidelines from include/asm-generic/sections.h.
>
> Use _text to mark the start of the kernel image including the head text,
> and _stext to mark the start of the .text section.
>
> This patch also fixes possible bugs due to current address layout that
> [__init_begin, __init_end] is a sub-range of [_stext, _etext] and pages
> within range [__init_begin, __init_end] will be freed by free_initmem().

I won't have time to look at this in detail until later this week, but
the reason for that layout is because c6x commonly stores text in flash.
Not all of the xip support is in-tree yet, but when it is, we don't want
to free init text.

--Mark

>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> Cc: Mark Salter <msalter@redhat.com>
> Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
> Cc: linux-c6x-dev@linux-c6x.org
> Cc: linux-kernel@vger.kernel.org
> ---
> arch/c6x/kernel/vmlinux.lds.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/c6x/kernel/vmlinux.lds.S b/arch/c6x/kernel/vmlinux.lds.S
> index 1d81c4c..279d807 100644
> --- a/arch/c6x/kernel/vmlinux.lds.S
> +++ b/arch/c6x/kernel/vmlinux.lds.S
> @@ -54,16 +54,15 @@ SECTIONS
> }
>
> . = ALIGN(PAGE_SIZE);
> + __init_begin = .;
> .init :
> {
> - _stext = .;
> _sinittext = .;
> HEAD_TEXT
> INIT_TEXT
> _einittext = .;
> }
>
> - __init_begin = _stext;
> INIT_DATA_SECTION(16)
>
> PERCPU_SECTION(128)
> @@ -74,6 +73,7 @@ SECTIONS
> .text :
> {
> _text = .;
> + _stext = .;
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT