[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEN] Only parse the crashkernel command line parameter once on boot
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxxxxx> # Node ID 5091a9a55d8677399fa55c721ce0bc2beae9ba74 # Parent f6993ff5cf49c2e98890ee86a233b95353bee461 [XEN] Only parse the crashkernel command line parameter once on boot not each time it is requested. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxxxxx> --- xen/arch/x86/setup.c | 8 +++----- xen/common/kexec.c | 51 ++++++++++++++++++++++----------------------------- 2 files changed, 25 insertions(+), 34 deletions(-) diff -r f6993ff5cf49 -r 5091a9a55d86 xen/arch/x86/setup.c --- a/xen/arch/x86/setup.c Thu Nov 30 18:44:54 2006 +0000 +++ b/xen/arch/x86/setup.c Thu Nov 30 18:44:55 2006 +0000 @@ -299,7 +299,6 @@ void __init __start_xen(multiboot_info_t unsigned long nr_pages, modules_length; paddr_t s, e; int i, e820_warn = 0, e820_raw_nr = 0, bytes = 0; - xen_kexec_reserve_t crash_area; struct ns16550_defaults ns16550 = { .data_bits = 8, .parity = 'n', @@ -480,8 +479,7 @@ void __init __start_xen(multiboot_info_t #endif } - machine_kexec_reserved(&crash_area); - if ( crash_area.size > 0 ) + if ( kexec_crash_area.size > 0 ) { unsigned long kdump_start, kdump_size, k; @@ -489,8 +487,8 @@ void __init __start_xen(multiboot_info_t init_boot_pages(initial_images_start, initial_images_end); - kdump_start = crash_area.start; - kdump_size = crash_area.size; + kdump_start = kexec_crash_area.start; + kdump_size = kexec_crash_area.size; printk("Kdump: %luMB (%lukB) at 0x%lx\n", kdump_size >> 20, diff -r f6993ff5cf49 -r 5091a9a55d86 xen/common/kexec.c --- a/xen/common/kexec.c Thu Nov 30 18:44:54 2006 +0000 +++ b/xen/common/kexec.c Thu Nov 30 18:44:55 2006 +0000 @@ -22,9 +22,6 @@ #include <xen/version.h> #include <public/elfnote.h> -static char opt_crashkernel[32] = ""; -string_param("crashkernel", opt_crashkernel); - DEFINE_PER_CPU (crash_note_t, crash_notes); cpumask_t crash_saved_cpus; int crashing_cpu; @@ -38,6 +35,26 @@ unsigned long kexec_flags = 0; /* the lo unsigned long kexec_flags = 0; /* the lowest bits are for KEXEC_IMAGE... */ spinlock_t kexec_lock = SPIN_LOCK_UNLOCKED; + +xen_kexec_reserve_t kexec_crash_area; + +static void __init parse_crashkernel(char *str) +{ + unsigned long start, size; + + size = parse_size_and_unit(str, &str); + if ( *str == '@' ) + start = parse_size_and_unit(str+1, NULL); + else + start = 0; + + if ( start && size ) + { + kexec_crash_area.start = start; + kexec_crash_area.size = size; + } +} +custom_param("crashkernel", parse_crashkernel); static void one_cpu_only(void) { @@ -134,34 +151,10 @@ static __init int register_crashdump_tri } __initcall(register_crashdump_trigger); -void machine_kexec_reserved(xen_kexec_reserve_t *reservation) -{ - unsigned long start, size; - char *str = opt_crashkernel; - - memset(reservation, 0, sizeof(*reservation)); - - size = parse_size_and_unit(str, &str); - if ( *str == '@' ) - start = parse_size_and_unit(str+1, NULL); - else - start = 0; - - if ( start && size ) - { - reservation->start = start; - reservation->size = size; - } -} - static int kexec_get_reserve(xen_kexec_range_t *range) { - xen_kexec_reserve_t reservation; - - machine_kexec_reserved(&reservation); - - range->start = reservation.start; - range->size = reservation.size; + range->start = kexec_crash_area.start; + range->size = kexec_crash_area.size; return 0; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |