From: David Daney <ddaney@caviumnetworks.com>
To: Philby John <pjohn@mvista.com>
Cc: linux-mips@linux-mips.org
Subject: Re: [PATCH] MIPS: Octeon: add option to ignore PT_NOTE section
Date: Thu, 14 Apr 2011 13:02:22 -0700 [thread overview]
Message-ID: <4DA752CE.3010009@caviumnetworks.com> (raw)
In-Reply-To: <4DA74DFE.7030905@mvista.com>
On 04/14/2011 12:41 PM, Philby John wrote:
> Another finding to be noted about this approach is that, booting works
> fine with just these lines of code
>
> +#ifndef CONFIG_DISABLE_ELF_NOTE_HEADER
> NOTES :text :note
> +#else
> + NOTES :text
> +#endif
>
> And IMHO we should be just using this, which is what you get if one were
> to use the command
> $mips-gnu-strip -R .notes vmlinux -o fixed-vmlinux
>
> So with just the above lines of code or with the strip command above
> readelf shows this output
>
> Elf file type is EXEC (Executable file)
> Entry point 0xffffffff81105d10
> There are 2 program headers, starting at offset 64
>
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000010000 0xffffffff81100000 0xffffffff81100000
> 0x000000000098be00 0x0000000000a00000 RWE 10000
> NOTE 0x0000000000000000 0x0000000000000000 0x0000000000000000
> 0x0000000000000000 0x0000000000000000 R 8
>
Can someone with a defective bootloader verify that a zero size PT_NOTE
header is as good as *no* PT_NOTE header?
If so, we should just omit the patch all together and tell people who
are interested to use the strip command instead.
David Daney
> Section to Segment mapping:
> Segment Sections...
> 00 .text __ex_table .notes .rodata .pci_fixup __ksymtab
> __ksymtab_gpl __ksymtab_strings __init_rodata __param .data .init.text
> .init.data .exit.text .data.percpu .bss .bss.superpage_aligned
> 01
>
> Where as if one were to remove the PT_NOTE section readelf would show ...
>
> Elf file type is EXEC (Executable file)
> Entry point 0xffffffff81105d10
> There are 1 program headers, starting at offset 64
>
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000010000 0xffffffff81100000 0xffffffff81100000
> 0x000000000098be00 0x0000000000a00000 RWE 10000
>
> Section to Segment mapping:
> Segment Sections...
> 00 .text __ex_table .notes .rodata .pci_fixup __ksymtab
> __ksymtab_gpl __ksymtab_strings __init_rodata __param .data .init.text
> .init.data .exit.text .data.percpu .bss .bss.superpage_aligned
>
>
> Shouldn't we just follow what strip does?
>
> Regards,
> Philby
>
> On 04/14/2011 11:26 PM, philby john wrote:
>> From: David Daney<ddaney@caviumnetworks.com>
>> Date: Wed, 13 Apr 2011 20:46:32 +0530
>> Subject: [PATCH] MIPS: Octeon: add option to ignore PT_NOTE section
>>
>> Some early Octeon bootloaders cannot process PT_NOTE program
>> headers as reported in numerous sections of the web, here is
>> an example http://www.spinics.net/lists/mips/msg37799.html
>> Loading usually fails with such an error ...
>> Error allocating memory for elf image!
>>
>> The work around usually is to strip the .notes section by using
>> such a command $mips-gnu-strip -R .notes vmlinux -o fixed-vmlinux
>> It is expected that the vmlinux image got after compilation be
>> bootable. Add a Kconfig option to ignore the PT_NOTE section.
>>
>> Signed-off-by: David Daney<ddaney@caviumnetworks.com>
>> Signed-off-by: Philby John<pjohn@mvista.com>
>> ---
>> arch/mips/cavium-octeon/Kconfig | 8 ++++++++
>> arch/mips/kernel/vmlinux.lds.S | 6 ++++++
>> 2 files changed, 14 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/mips/cavium-octeon/Kconfig b/arch/mips/cavium-octeon/Kconfig
>> index caae228..ddecee3 100644
>> --- a/arch/mips/cavium-octeon/Kconfig
>> +++ b/arch/mips/cavium-octeon/Kconfig
>> @@ -90,6 +90,14 @@ config CAVIUM_OCTEON_LOCK_L2_MEMCPY
>> help
>> Lock the kernel's implementation of memcpy() into L2.
>>
>> +config DISABLE_ELF_NOTE_HEADER
>> + bool "Disable the creation of the ELF PT_NOTE program header in vmlinux"
>> + depends on CPU_CAVIUM_OCTEON
>> + help
>> + Some early Octeon bootloaders cannot process PT_NOTE program
>> + headers. Select y to omit these headers so that the kernel
>> + can be loaded with older bootloaders.
>> +
>> config ARCH_SPARSEMEM_ENABLE
>> def_bool y
>> select SPARSEMEM_STATIC
>> diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
>> index 832afbb..0536910 100644
>> --- a/arch/mips/kernel/vmlinux.lds.S
>> +++ b/arch/mips/kernel/vmlinux.lds.S
>> @@ -8,7 +8,9 @@ OUTPUT_ARCH(mips)
>> ENTRY(kernel_entry)
>> PHDRS {
>> text PT_LOAD FLAGS(7); /* RWX */
>> +#ifndef CONFIG_DISABLE_ELF_NOTE_HEADER
>> note PT_NOTE FLAGS(4); /* R__ */
>> +#endif
>> }
>>
>> #ifdef CONFIG_32BIT
>> @@ -62,7 +64,11 @@ SECTIONS
>> __stop___dbe_table = .;
>> }
>>
>> +#ifndef CONFIG_DISABLE_ELF_NOTE_HEADER
>> NOTES :text :note
>> +#else
>> + NOTES :text
>> +#endif
>> .dummy : { *(.dummy) } :text
>>
>> RODATA
>
>
next prev parent reply other threads:[~2011-04-14 20:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-13 16:07 [PATCH] MIPS: Octeon: add option to ignore PT_NOTE section philby john
2011-04-13 17:38 ` David Daney
2011-04-14 17:54 ` philby john
2011-04-14 17:56 ` philby john
2011-04-14 19:41 ` Philby John
2011-04-14 20:02 ` David Daney [this message]
2011-05-19 10:28 ` Ralf Baechle
2011-04-15 8:24 ` Florian Fainelli
2011-04-15 8:55 ` Philby John
2011-04-15 16:27 ` David Daney
2011-04-16 15:21 ` Philby John
2011-04-16 15:51 ` Florian Fainelli
2011-04-17 5:16 ` Philby John
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=4DA752CE.3010009@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=pjohn@mvista.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox