[Crash-utility] [PATCH 2/5] Move xen p2m map initialization to xen_kdump_p2m

Petr Tesarik ptesarik at suse.com
Thu Sep 24 16:17:10 UTC 2015


There is currently only one caller of xen_kdump_p2m() and it must
ensure that the p2m map is created before calling this function.
If there are multiple callers, this code would have to be repeated,
so it's better to put it directly into xen_kdump_p2m.

Signed-off-by: Petr Tesarik <ptesarik at suse.com>
---
 netdump.c  | 18 ------------------
 xen_dom0.c | 17 +++++++++++++++++
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/netdump.c b/netdump.c
index 38ddc8f..3a2df55 100644
--- a/netdump.c
+++ b/netdump.c
@@ -3708,24 +3708,6 @@ read_kdump(int fd, void *bufptr, int cnt, ulong addr, physaddr_t paddr)
 	}
 
 	if (XEN_CORE_DUMPFILE() && !XEN_HYPER_MODE()) {
-		struct xen_kdump_data *xkd = get_xen_kdump_data();
-		if (!(xkd->flags & KDUMP_P2M_INIT)) {
-        		if (!machdep->xen_kdump_p2m_create)
-                		error(FATAL,
-                            "xen kdump dumpfiles not supported on this architecture\n");
-
-			if ((xkd->page =
-			    (char *)malloc(PAGESIZE())) == NULL)
-				error(FATAL,
-				    "cannot malloc xen kdump data page\n");
-
-			if (!machdep->xen_kdump_p2m_create(xkd))
-                		error(FATAL,
-                    	    "cannot create xen kdump pfn-to-mfn mapping\n");
-
-			xkd->flags |= KDUMP_P2M_INIT;
-		}
-
 		if ((paddr = xen_kdump_p2m(paddr)) == P2M_FAILURE) {
 			if (CRASHDEBUG(8)) 
 				fprintf(fp, "read_kdump: xen_kdump_p2m(%llx): "
diff --git a/xen_dom0.c b/xen_dom0.c
index 547f3a1..826a90b 100644
--- a/xen_dom0.c
+++ b/xen_dom0.c
@@ -168,6 +168,23 @@ xen_kdump_p2m(physaddr_t pseudo)
 	if (pc->curcmd_flags & XEN_MACHINE_ADDR)
 		return pseudo;
 
+	if (!(xkd->flags & KDUMP_P2M_INIT)) {
+		if (!machdep->xen_kdump_p2m_create)
+			error(FATAL,
+			      "xen kdump dumpfiles not supported on this architecture\n");
+
+		if ((xkd->page =
+		     (char *)malloc(PAGESIZE())) == NULL)
+			error(FATAL,
+			      "cannot malloc xen kdump data page\n");
+
+		if (!machdep->xen_kdump_p2m_create(xkd))
+			error(FATAL,
+			      "cannot create xen kdump pfn-to-mfn mapping\n");
+
+		xkd->flags |= KDUMP_P2M_INIT;
+	}
+
 #ifdef IA64
 	return ia64_xen_kdump_p2m(xkd, pseudo);
 #endif
-- 
2.1.4




More information about the Crash-utility mailing list