Hi Atsushi, On Wednesday 19 July 2017 01:16 PM, Atsushi Kumagai wrote: > Hello Pratyush, > >> Call cach_init() before get_kcore_dump_loads(), because latter uses >> cache_search(). >> >> Call path is like this : >> get_kcore_dump_loads() -> process_dump_load() -> vaddr_to_paddr() -> >> vtop4_x86_64() -> readmem() -> cache_search() > > I found that the current cach_init() is too early, cache_init() should be > called after fallback_to_current_page_size() for older kernel > which doesn't have VMCOREINFO. > Could you confirm that the patch below is fine with you ? Its fine and works. > > Thanks, > Atsushi Kumagai > > From: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com> > Date: Wed, 19 Jul 2017 15:05:58 +0900 > Subject: [PATCH] Fix the regression caused by moving cache_init() earlier > > info->page_size should be set before calling cache_init() since it > allocates some buffers based on info->page_size. However, cache_init() > was moved before fallback_to_current_page_size() while it set > info->page_size for older kernel which doesn't have VMCOREINFO. > > This patch moves cache_init() after fallback_to_current_page_size() > and reverts the commit: b98e6e0d2a(sadump: set info->page_size before cache_init()) > > Signed-off-by: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com> > --- > makedumpfile.c | 28 ++++++++++++++++------------ > 1 file changed, 16 insertions(+), 12 deletions(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index a3f0697..f85003a 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -3905,15 +3905,6 @@ initial(void) > if (!get_value_for_old_linux()) > return FALSE; > > - if (info->flag_sadump && !set_page_size(sadump_page_size())) > - return FALSE; > - > - if (!is_xen_memory() && !cache_init()) > - return FALSE; > - > - if (info->flag_mem_usage && !get_kcore_dump_loads()) > - return FALSE; > - > if (info->flag_refiltering) { > if (info->flag_elf_dumpfile) { > MSG("'-E' option is disable, "); > @@ -3936,6 +3927,9 @@ initial(void) > return FALSE; > } > > + if (!set_page_size(sadump_page_size())) > + return FALSE; > + > if (!sadump_initialize_bitmap_memory()) > return FALSE; > > @@ -3949,9 +3943,7 @@ initial(void) > * postponed until debug information becomes > * available. > */ > - > - } else if (!get_phys_base()) > - return FALSE; > + } > > out: > if (!info->page_size) { > @@ -3962,6 +3954,18 @@ out: > if (!fallback_to_current_page_size()) > return FALSE; > } > + > + if (!is_xen_memory() && !cache_init()) > + return FALSE; > + > + if (info->flag_mem_usage && !get_kcore_dump_loads()) > + return FALSE; > + > + if (!info->flag_refiltering && !info->flag_sadump) { > + if (!get_phys_base()) > + return FALSE; > + } > + > if (!get_max_mapnr()) > return FALSE; > > -- Regards Pratyush