Mailing List Archive

[PATCH] linux-2.6.18/kexec: don't initialize when no crash area was reserved
While the waste of memory needed may not be significant, the amount of
additional but pointless entries in /proc/iomem certainly may be (on
large systems).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/drivers/xen/core/machine_kexec.c
+++ b/drivers/xen/core/machine_kexec.c
@@ -34,6 +34,17 @@ void __init xen_machine_kexec_setup_reso
if (!is_initial_xendomain())
return;

+ /* fill in crashk_res if range is reserved by hypervisor */
+ memset(&range, 0, sizeof(range));
+ range.range = KEXEC_RANGE_MA_CRASH;
+
+ if (HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range)
+ || !range.size)
+ return;
+
+ crashk_res.start = range.start;
+ crashk_res.end = range.start + range.size - 1;
+
/* determine maximum number of physical cpus */
op.cmd = XENPF_get_cpuinfo;
op.u.pcpu_info.xen_cpuid = 0;
@@ -96,19 +107,6 @@ void __init xen_machine_kexec_setup_reso
xen_hypervisor_res.end = range.start + range.size - 1;
xen_hypervisor_res.flags = IORESOURCE_BUSY | IORESOURCE_MEM;

- /* fill in crashk_res if range is reserved by hypervisor */
-
- memset(&range, 0, sizeof(range));
- range.range = KEXEC_RANGE_MA_CRASH;
-
- if (HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, &range))
- goto free;
-
- if (range.size) {
- crashk_res.start = range.start;
- crashk_res.end = range.start + range.size - 1;
- }
-
/* get physical address of vmcoreinfo */
memset(&range, 0, sizeof(range));
range.range = KEXEC_RANGE_MA_VMCOREINFO;