diff options
author | Andrew Cooper <andrew.cooper3@citrix.com> | 2012-03-16 10:30:12 +0000 |
---|---|---|
committer | Andrew Cooper <andrew.cooper3@citrix.com> | 2012-03-16 10:30:12 +0000 |
commit | 3355c1a2a60cd660bbe12f12e7f0942b18106c6e (patch) | |
tree | 4e745af78d47418f70b701a3ea6b92df12044cae /xen/arch/x86/setup.c | |
parent | c55ad3aa8549e00c12ca0eefc269e591d83ee0c6 (diff) | |
download | xen-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.c | 4 |
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 */ |