Firmware Assisted Dump is a facility to dump kernel core with assistance from firmware. As part of this process the kernel ELF version is stored.
Currently, fadump.h defines this to 0 if it is not already defined. This clashes with a define in elf.h which sets it based on the current task - not based on the kernel. When the kernel is compiled on LE, the kernel will always be version 2. Otherwise it will be version 0. So the correct behaviour is to set the ELF eflags based on the endianness of the kernel. Do that. Remove the definition in fadump.h, which becomes unused. Cc: Mahesh Salgaonkar <mah...@linux.vnet.ibm.com> Cc: Hari Bathini <hbath...@linux.vnet.ibm.com> Signed-off-by: Daniel Axtens <d...@axtens.net> --- Mahesh or Hari: I'm not familiar with this code at all, so if either of you could check that this makes sense I would really appreciate that. Thanks! --- arch/powerpc/include/asm/fadump.h | 4 ---- arch/powerpc/kernel/fadump.c | 6 +++++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h index b4407d0add27..0031806475f0 100644 --- a/arch/powerpc/include/asm/fadump.h +++ b/arch/powerpc/include/asm/fadump.h @@ -45,10 +45,6 @@ #define memblock_num_regions(memblock_type) (memblock.memblock_type.cnt) -#ifndef ELF_CORE_EFLAGS -#define ELF_CORE_EFLAGS 0 -#endif - /* Firmware provided dump sections */ #define FADUMP_CPU_STATE_DATA 0x0001 #define FADUMP_HPTE_REGION 0x0002 diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c index 0638b82ce294..457f08e544c6 100644 --- a/arch/powerpc/kernel/fadump.c +++ b/arch/powerpc/kernel/fadump.c @@ -779,7 +779,11 @@ static int fadump_init_elfcore_header(char *bufp) elf->e_entry = 0; elf->e_phoff = sizeof(struct elfhdr); elf->e_shoff = 0; - elf->e_flags = ELF_CORE_EFLAGS; +#ifdef __LITTLE_ENDIAN__ + elf->e_flags = 2; +#else + elf->e_flags = 0; +#endif elf->e_ehsize = sizeof(struct elfhdr); elf->e_phentsize = sizeof(struct elf_phdr); elf->e_phnum = 0; -- 2.7.4