[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] kexec: Provide a user friendly option for memory address limit
grub2 requires that the '<' character be escaped which is inconvienet for users, provide a more natural specifier. An example crashkernel argument may be crashkernel=256M,below=4G Signed-off-by: Simon Crowe <Simon.Crowe@xxxxxxxxxx> --- docs/misc/kexec_and_kdump.txt | 8 +++++++- docs/misc/xen-command-line.markdown | 1 + xen/common/kexec.c | 12 ++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/misc/kexec_and_kdump.txt b/docs/misc/kexec_and_kdump.txt index 2f93771..0842b3d 100644 --- a/docs/misc/kexec_and_kdump.txt +++ b/docs/misc/kexec_and_kdump.txt @@ -136,7 +136,13 @@ command line parameter to the Xen hypervisor. It has two forms: e.g. crashkernel=128M@256M - Regardless of which of the two forms of the crashkernel command line you + iii) crashkernel=size,below=offset + + This allows us to place the crash kernel within the usuable address + space without having to worry about a specific phyiscal address. + The '<' and 'below' options are synonymous + + Regardless of which of the forms of the crashkernel command line you use, the crash kernel region should appear in /proc/iomem on x86. If it doesn't then either the crashkernel parameter is missing, or for some reason the region couldn't be placed - for instance because it is too large. diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 44d9985..d99cb63 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -474,6 +474,7 @@ combination with the `low_crashinfo` command line option. ### crashkernel > `= <ramsize-range>:<size>[,...][{@,<}<offset>]` > `= <size>[{@,<}<offset>]` +> `= <size>,below=offset>]` Specify sizes and optionally placement of the crash kernel reservation area. The `<ramsize-range>:<size>` pairs indicate how much memory to diff --git a/xen/common/kexec.c b/xen/common/kexec.c index fbca8a6..b59f5e9 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -88,7 +88,7 @@ static void *crash_heap_current = NULL, *crash_heap_end = NULL; /* * Parse command lines in the format * - * crashkernel=<ramsize-range>:<size>[,...][{@,<}<address>] + * crashkernel=<ramsize-range>:<size>[,...][{@,<,below=}<address>] * * with <ramsize-range> being of form * @@ -97,6 +97,10 @@ static void *crash_heap_current = NULL, *crash_heap_end = NULL; * as well as the legacy ones in the format * * crashkernel=<size>[{@,<}<address>] + * crashkernel=<size>,below=address + * + * < and below are synonyomous, the latter being useful for grub2 systems + * which would otherwise require escaping of the < option */ static void __init parse_crashkernel(const char *str) { @@ -111,7 +115,7 @@ static void __init parse_crashkernel(const char *str) { printk(XENLOG_WARNING "crashkernel: too many ranges\n"); cur = NULL; - str = strpbrk(str, "@<"); + str = strpbrk(str, "@,<"); break; } @@ -162,6 +166,10 @@ static void __init parse_crashkernel(const char *str) kexec_crash_area.start = parse_size_and_unit(cur = str + 1, &str); else if ( *str == '<' ) kexec_crash_area_limit = parse_size_and_unit(cur = str + 1, &str); + else if ( !strncmp(str,",below=", 7) ) + { + kexec_crash_area_limit = parse_size_and_unit(cur = str + 7, &str); + } else printk(XENLOG_WARNING "crashkernel: '%s' ignored\n", str); } -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |