lkml.org 
[lkml]   [2011]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[RFC PATCH v5 6/9] fadump: Add PT_NOTE program header for vmcoreinfo
    From
    Date
    From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>

    Introduce a PT_NOTE program header that points to physical address of
    vmcoreinfo_note buffer declared in kernel/kexec.c. The vmcoreinfo
    note buffer is populated during crash_fadump() at the time of system
    crash.

    Change in v5:
    - Added 'fadump_' prefix to static function relocate().

    Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    ---
    arch/powerpc/kernel/fadump.c | 29 +++++++++++++++++++++++++++++
    1 files changed, 29 insertions(+), 0 deletions(-)

    diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
    index 1879ddf..20ea849 100644
    --- a/arch/powerpc/kernel/fadump.c
    +++ b/arch/powerpc/kernel/fadump.c
    @@ -818,6 +818,19 @@ static void fadump_setup_crash_memory_ranges(void)
    }
    }

    +/*
    + * If the given physical address falls within the boot memory region then
    + * return the relocated address that points to the dump region reserved
    + * for saving initial boot memory contents.
    + */
    +static inline unsigned long fadump_relocate(unsigned long paddr)
    +{
    + if (paddr > RMR_START && paddr < fw_dump.boot_memory_size)
    + return fdm.rmr_region.destination_address + paddr;
    + else
    + return paddr;
    +}
    +
    static int fadump_create_elfcore_headers(char *bufp)
    {
    struct elfhdr *elf;
    @@ -849,6 +862,22 @@ static int fadump_create_elfcore_headers(char *bufp)

    (elf->e_phnum)++;

    + /* setup ELF PT_NOTE for vmcoreinfo */
    + phdr = (struct elf_phdr *)bufp;
    + bufp += sizeof(struct elf_phdr);
    + phdr->p_type = PT_NOTE;
    + phdr->p_flags = 0;
    + phdr->p_vaddr = 0;
    + phdr->p_align = 0;
    +
    + phdr->p_paddr = fadump_relocate(paddr_vmcoreinfo_note());
    + phdr->p_offset = phdr->p_paddr;
    + phdr->p_memsz = vmcoreinfo_max_size;
    + phdr->p_filesz = vmcoreinfo_max_size;
    +
    + /* Increment number of program headers. */
    + (elf->e_phnum)++;
    +
    /* setup PT_LOAD sections. */

    for (i = 0; i < crash_mem_ranges; i++) {


    \
     
     \ /
      Last update: 2011-11-15 16:27    [W:0.040 / U:0.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site