[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