Index: linux-2.6/arch/x86/kernel/cpu/mtrr/main.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/cpu/mtrr/main.c +++ linux-2.6/arch/x86/kernel/cpu/mtrr/main.c @@ -1103,6 +1103,9 @@ static u64 __init real_trim_memory(unsig trim_size = limit_pfn; trim_size <<= PAGE_SHIFT; trim_size -= trim_start; + + printk(KERN_INFO "trimm e820 for MTRR MAP (UC): %016lx - %016lx\n", start_pfn, limit_pfn); + return update_memory_range(trim_start, trim_size, E820_RAM, E820_RESERVED); } @@ -1203,7 +1206,8 @@ int __init mtrr_trim_uncached_memory(uns " all of memory, losing %lluMB of RAM.\n", total_real_trim_size >> 20); - WARN_ON(1); + if (enable_mtrr_cleanup < 1) + WARN_ON(1); printk(KERN_INFO "update e820 for mtrr -- end_pfn\n"); update_e820(); @@ -1214,7 +1218,7 @@ int __init mtrr_trim_uncached_memory(uns if (range[0].start) total_real_trim_size += real_trim_memory(0, range[0].start); - for (i = 0; i < nr_range - 1; i--) { + for (i = 0; i < nr_range - 1; i++) { if (range[i].end + 1 < range[i+1].start) total_real_trim_size += real_trim_memory(range[i].end + 1, range[i+1].start); } @@ -1224,7 +1228,8 @@ int __init mtrr_trim_uncached_memory(uns " all of memory, losing %lluMB of RAM.\n", total_real_trim_size >> 20); - WARN_ON(1); + if (enable_mtrr_cleanup < 1) + WARN_ON(1); printk(KERN_INFO "update e820 for mtrr -- holes\n"); update_e820();