x86, debug: mtrr_cleanup print out var mtrr before change it
authorYinghai Lu <yhlu.kernel@gmail.com>
Fri, 3 Oct 2008 06:26:59 +0000 (23:26 -0700)
committerIngo Molnar <mingo@elte.hu>
Fri, 3 Oct 2008 07:50:04 +0000 (09:50 +0200)
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/mtrr/main.c

index b4a3f0c1a5e369b544c459c978015895768ddbf3..406074c46f1ed3e84488763927e43b630c49e2da 100644 (file)
@@ -1211,13 +1211,14 @@ static unsigned long __initdata min_loss_pfn[RANGE_NUM];
 static int __init mtrr_cleanup(unsigned address_bits)
 {
        unsigned long extra_remove_base, extra_remove_size;
-       unsigned long i, base, size, def, dummy;
+       unsigned long base, size, def, dummy;
        mtrr_type type;
        int nr_range, nr_range_new;
        u64 chunk_size, gran_size;
        unsigned long range_sums, range_sums_new;
        int index_good;
        int num_reg_good;
+       int i;
 
        /* extra one for all 0 */
        int num[MTRR_NUM_TYPES + 1];
@@ -1259,6 +1260,28 @@ static int __init mtrr_cleanup(unsigned address_bits)
                num_var_ranges - num[MTRR_NUM_TYPES])
                return 0;
 
+       /* print original var MTRRs at first, for debugging: */
+       printk(KERN_DEBUG "original variable MTRRs\n");
+       for (i = 0; i < num_var_ranges; i++) {
+               char start_factor = 'K', size_factor = 'K';
+               unsigned long start_base, size_base;
+
+               size_base = range_state[i].size_pfn << (PAGE_SHIFT - 10);
+               if (!size_base)
+                       continue;
+
+               size_base = to_size_factor(size_base, &size_factor),
+               start_base = range_state[i].base_pfn << (PAGE_SHIFT - 10);
+               start_base = to_size_factor(start_base, &start_factor),
+
+               printk(KERN_DEBUG "reg %d, base: %ld%cB, range: %ld%cB, type %s\n",
+                       i, start_base, start_factor,
+                       size_base, size_factor,
+                       (type == MTRR_TYPE_UNCACHABLE) ? "UC" :
+                           ((type == MTRR_TYPE_WRBACK) ? "WB" : "Other")
+                       );
+       }
+
        memset(range, 0, sizeof(range));
        extra_remove_size = 0;
        if (mtrr_tom2) {