[PATCH 5/5] xen: Use cpu_present_map instead of cpu_online_map

Daniel Kiper daniel.kiper at oracle.com
Tue Nov 13 11:15:47 EST 2012


Newer Xen versions (at least 4.2) clear cpu_online_map during crash.
In this case it is not possible to check which CPUs were available.
cpu_present_map contains such information but it has different meaning.
However, we do not have a choice and we must use cpu_present_map instead
of cpu_online_map.

Signed-off-by: Daniel Kiper <daniel.kiper at oracle.com>

diff -Npru crash-6.1.0.orig/xen_hyper.c crash-6.1.0/xen_hyper.c
--- crash-6.1.0.orig/xen_hyper.c	2012-11-13 15:08:41.000000000 +0100
+++ crash-6.1.0/xen_hyper.c	2012-11-13 15:09:03.000000000 +0100
@@ -1912,11 +1912,10 @@ xen_hyper_get_cpu_info(void)
 	if((xht->cpumask = malloc(XEN_HYPER_SIZE(cpumask_t))) == NULL) {
 		error(FATAL, "cannot malloc cpumask space.\n");
 	}
-	/* kakuma: It may be better to use cpu_present_map. */
-	addr = symbol_value("cpu_online_map");
+	addr = symbol_value("cpu_present_map");
 	if (!readmem(addr, KVADDR, xht->cpumask,
-		XEN_HYPER_SIZE(cpumask_t), "cpu_online_map", RETURN_ON_ERROR)) {
-		error(FATAL, "cannot read cpu_online_map.\n");
+		XEN_HYPER_SIZE(cpumask_t), "cpu_present_map", RETURN_ON_ERROR)) {
+		error(FATAL, "cannot read cpu_present_map.\n");
 	}
 	if (xht->cpu_idxs) {
 		free(xht->cpu_idxs);



More information about the kexec mailing list