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 <hbath...@linux.vnet.ibm.com> > ---
Acked-by: Mahesh Salgaonkar <mah...@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 > } > > /* > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev