Hello Petr, >Xen dumps fail, because the p2m mapping is initialized too late. >The dependency goes like this: > >- Xen uses FLATMEM >- get_mm_flatmem() uses info->dom0_mapnr to initialize mm structures >- get_dom0_mapnr() needs p2m mappings to read from a VADDR >- the p2m list is initialized in get_machdep_info() > >Signed-off-by: Petr Tesarik <ptesarik at suse.cz> >--- > makedumpfile.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > >diff --git a/makedumpfile.c b/makedumpfile.c >index e91583d..d3f5237 100644 >--- a/makedumpfile.c >+++ b/makedumpfile.c >@@ -3128,6 +3128,12 @@ out: > if (!get_max_mapnr()) > return FALSE; > >+ if (debug_info && !get_machdep_info()) >+ return FALSE; You have to move get_machdep_info() after cache_init() since get_machdep_info() calls readmem() on some architectures. Otherwise, readmem() calls cache_alloc() without the cache initialization. Thanks Atsushi Kumagai >+ >+ if (is_xen_memory() && !get_dom0_mapnr()) >+ return FALSE; >+ > if (info->flag_cyclic) { > if (info->bufsize_cyclic == 0) { > if (!calculate_cyclic_buffer_size()) >@@ -3185,9 +3191,6 @@ out: > if (info->flag_sadump) > (void) sadump_virt_phys_base(); > >- if (!get_machdep_info()) >- return FALSE; >- > if (info->flag_sadump) { > int online_cpus; > >@@ -3233,9 +3236,6 @@ out: > return FALSE; > } > >- if (is_xen_memory() && !get_dom0_mapnr()) >- return FALSE; >- > if (!get_value_for_old_linux()) > return FALSE; > >-- >1.8.4.5