[PATCH 1/2] Earlier initialization of dom0_mapnr
Atsushi Kumagai
kumagai-atsushi at mxc.nes.nec.co.jp
Fri Mar 28 04:18:13 EDT 2014
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
More information about the kexec
mailing list