aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/setup.c
diff options
context:
space:
mode:
authorAndrew Cooper <andrew.cooper3@citrix.com>2012-03-16 10:30:12 +0000
committerAndrew Cooper <andrew.cooper3@citrix.com>2012-03-16 10:30:12 +0000
commit3355c1a2a60cd660bbe12f12e7f0942b18106c6e (patch)
tree4e745af78d47418f70b701a3ea6b92df12044cae /xen/arch/x86/setup.c
parentc55ad3aa8549e00c12ca0eefc269e591d83ee0c6 (diff)
downloadxen-3355c1a2a60cd660bbe12f12e7f0942b18106c6e.tar.gz
xen-3355c1a2a60cd660bbe12f12e7f0942b18106c6e.tar.bz2
xen-3355c1a2a60cd660bbe12f12e7f0942b18106c6e.zip
KEXEC: Allocate crash structures in low memory
On 64bit Xen with 32bit dom0 and crashkernel, xmalloc'ing items such as the CPU crash notes will go into the xenheap, which tends to be in upper memory. This causes problems on machines with more than 64GB (or 4GB if no PAE support) of ram as the crashkernel physically cant access the crash notes. The solution is to force Xen to allocate certain structures in lower memory. This is achieved by introducing two new command line parameters; low_crashinfo and crashinfo_maxaddr. Because of the potential impact on 32bit PV guests, and that this problem does not exist for 64bit dom0 on 64bit Xen, this new functionality defaults to the codebase's previous behavior, requiring the user to explicitly add extra command line parameters to change the behavior. This patch consists of 3 logically distinct but closely related changes. 1) Add the two new command line parameters. 2) Change crash note allocation to use lower memory when instructed. 3) Change the conring buffer to use lower memory when instructed. There result is that the crash notes and console ring will be placed in lower memory so useful information can be recovered in the case of a crash. Changes since v1: - Patch xen-command-line.markdown to document new options Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/setup.c')
-rw-r--r--xen/arch/x86/setup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b9da9851c9..49f91ab543 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -583,6 +583,10 @@ void __init __start_xen(unsigned long mbi_p)
}
cmdline_parse(cmdline);
+ /* Must be after command line argument parsing and before
+ * allocing any xenheap structures wanted in lower memory. */
+ kexec_early_calculations();
+
parse_video_info();
set_current((struct vcpu *)0xfffff000); /* debug sanity */