[PATCH] PPC64: Adding symbols in vmcoreinfo to facilitate dump filtering
Mahesh Jagannath Salgaonkar
mahesh at linux.vnet.ibm.com
Sat Nov 16 05:27:46 EST 2013
On 11/15/2013 11:01 PM, Hari Bathini wrote:
> When CONFIG_SPARSEMEM_VMEMMAP option is used in kernel, makedumpfile fails
> to filter vmcore dump as it fails to do vmemmap translations. So far
> dump filtering on ppc64 never had to deal with vmemmap addresses seperately
> as vmemmap regions where mapped in zone normal. But with the inclusion of
> CONFIG_SPARSEMEM_VMEMMAP config option in kernel, this vmemmap address
> translation support becomes necessary for dump filtering. For vmemmap adress
> translation, few kernel symbols are needed by dump filtering tool. This patch
> adds those symbols to vmcoreinfo, which a dump filtering tool can use for
> filtering the kernel dump. Tested this changes successfully with makedumpfile
> tool that supports vmemmap to physical address translation outside zone normal.
>
> Signed-off-by: Hari Bathini <hbathini at linux.vnet.ibm.com>
> ---
Acked-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
> arch/powerpc/include/asm/pgalloc-64.h | 4 ++++
> arch/powerpc/kernel/machine_kexec.c | 12 ++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h
> index f65e27b..33e507a 100644
> --- a/arch/powerpc/include/asm/pgalloc-64.h
> +++ b/arch/powerpc/include/asm/pgalloc-64.h
> @@ -17,6 +17,10 @@ struct vmemmap_backing {
> unsigned long virt_addr;
> };
>
> +#ifdef CONFIG_SPARSEMEM_VMEMMAP
> +extern struct vmemmap_backing *vmemmap_list;
> +#endif /* CONFIG_SPARSEMEM_VMEMMAP */
> +
> /*
> * Functions that deal with pagetables that could be at any level of
> * the table need to be passed an "index_size" so they know how to
> diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c
> index e1ec57e..88a7fb4 100644
> --- a/arch/powerpc/kernel/machine_kexec.c
> +++ b/arch/powerpc/kernel/machine_kexec.c
> @@ -18,6 +18,7 @@
> #include <linux/ftrace.h>
>
> #include <asm/machdep.h>
> +#include <asm/pgalloc.h>
> #include <asm/prom.h>
> #include <asm/sections.h>
>
> @@ -75,6 +76,17 @@ void arch_crash_save_vmcoreinfo(void)
> #ifndef CONFIG_NEED_MULTIPLE_NODES
> VMCOREINFO_SYMBOL(contig_page_data);
> #endif
> +#if defined(CONFIG_PPC64) && defined(CONFIG_SPARSEMEM_VMEMMAP)
> + VMCOREINFO_SYMBOL(vmemmap_list);
> + VMCOREINFO_SYMBOL(mmu_vmemmap_psize);
> + VMCOREINFO_SYMBOL(mmu_psize_defs);
> + VMCOREINFO_STRUCT_SIZE(vmemmap_backing);
> + VMCOREINFO_OFFSET(vmemmap_backing, list);
> + VMCOREINFO_OFFSET(vmemmap_backing, phys);
> + VMCOREINFO_OFFSET(vmemmap_backing, virt_addr);
> + VMCOREINFO_STRUCT_SIZE(mmu_psize_def);
> + VMCOREINFO_OFFSET(mmu_psize_def, shift);
> +#endif
> }
>
> /*
>
More information about the Linuxppc-dev
mailing list