diff -r 7809e0941b38 xen/arch/x86/e820.c --- a/xen/arch/x86/e820.c Sat Apr 25 08:19:14 2009 +0100 +++ b/xen/arch/x86/e820.c Tue Apr 28 13:51:20 2009 +0100 @@ -15,6 +15,10 @@ static void parse_mem(char *s) { opt_mem = parse_size_and_unit(s, NULL); } custom_param("mem", parse_mem); +/* opt_nomtrr_check: Don't clip ram to highest cacheable MTRR. */ +static int __initdata opt_no_mtrr_check = 0; +boolean_param("nomtrr", opt_no_mtrr_check); + struct e820map e820; static void __init add_memory_region(unsigned long long start, @@ -444,9 +448,12 @@ reserve_dmi_region(); - top_of_ram = mtrr_top_of_ram(); - if ( top_of_ram ) - clip_to_limit(top_of_ram, "MTRRs do not cover all of memory."); + if ( !opt_no_mtrr_check ) + { + top_of_ram = mtrr_top_of_ram(); + if ( top_of_ram ) + clip_to_limit(top_of_ram, "MTRRs do not cover all of memory."); + } } int __init e820_change_range_type(