All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: more debug print out with mtrr
@ 2009-03-12  3:05 Yinghai Lu
  2009-03-12  3:05 ` [PATCH] x86: print out mtrr_range_state when user specify size Yinghai Lu
  2009-03-13  1:40 ` [PATCH] x86: more debug print out with mtrr Ingo Molnar
  0 siblings, 2 replies; 19+ messages in thread
From: Yinghai Lu @ 2009-03-12  3:05 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin; +Cc: linux-kernel@vger.kernel.org


Impact: more print out

remove unneeded mtrr_show

it will only printout one time by first cpu, so it is not big deal.

also print out directly from get_mtrr, because it doesn't update mtrr_state.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 arch/x86/kernel/cpu/mtrr/generic.c |   93
+++++++++++++++++++------------------
 1 file changed, 50 insertions(+), 43 deletions(-)

Index: linux-2.6/arch/x86/kernel/cpu/mtrr/generic.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/mtrr/generic.c
+++ linux-2.6/arch/x86/kernel/cpu/mtrr/generic.c
@@ -33,14 +33,6 @@ u64 mtrr_tom2;
 struct mtrr_state_type mtrr_state = {};
 EXPORT_SYMBOL_GPL(mtrr_state);
 
-static int __initdata mtrr_show;
-static int __init mtrr_debug(char *opt)
-{
-    mtrr_show = 1;
-    return 0;
-}
-early_param("mtrr.show", mtrr_debug);
-
 /*
  * Returns the effective MTRR type for the region
  * Error returns:
@@ -193,13 +185,51 @@ static void print_fixed(unsigned base, u
     unsigned i;
 
     for (i = 0; i < 8; ++i, ++types, base += step)
-        printk(KERN_INFO "MTRR %05X-%05X %s\n",
+        printk(KERN_INFO "  %05X-%05X %s\n",
             base, base + step - 1, mtrr_attrib_to_str(*types));
 }
 
 static void prepare_set(void);
 static void post_set(void);
 
+static void __init print_mtrr_state(void)
+{
+    unsigned int i;
+    int high_width;
+
+    printk(KERN_INFO "MTRR default type: %s\n",
mtrr_attrib_to_str(mtrr_state.def_type));
+    if (mtrr_state.have_fixed) {
+        printk(KERN_INFO "MTRR fixed ranges %sabled:\n",
+               mtrr_state.enabled & 1 ? "en" : "dis");
+        print_fixed(0x00000, 0x10000, mtrr_state.fixed_ranges + 0);
+        for (i = 0; i < 2; ++i)
+            print_fixed(0x80000 + i * 0x20000, 0x04000,
mtrr_state.fixed_ranges + (i + 1) * 8);
+        for (i = 0; i < 8; ++i)
+            print_fixed(0xC0000 + i * 0x08000, 0x01000,
mtrr_state.fixed_ranges + (i + 3) * 8);
+    }
+    printk(KERN_INFO "MTRR variable ranges %sabled:\n",
+           mtrr_state.enabled & 2 ? "en" : "dis");
+    high_width = ((size_or_mask ? ffs(size_or_mask) - 1 : 32) - (32 -
PAGE_SHIFT) + 3) / 4;
+    for (i = 0; i < num_var_ranges; ++i) {
+        if (mtrr_state.var_ranges[i].mask_lo & (1 << 11))
+            printk(KERN_INFO "  %u base %0*X%05X000 mask %0*X%05X000 %s\n",
+                   i,
+                   high_width,
+                   mtrr_state.var_ranges[i].base_hi,
+                   mtrr_state.var_ranges[i].base_lo >> 12,
+                   high_width,
+                   mtrr_state.var_ranges[i].mask_hi,
+                   mtrr_state.var_ranges[i].mask_lo >> 12,
+                   mtrr_attrib_to_str(mtrr_state.var_ranges[i].base_lo
& 0xff));
+        else
+            printk(KERN_INFO "   %u disabled\n", i);
+    }
+    if (mtrr_tom2) {
+        printk(KERN_INFO "TOM2: %016llx aka %lldM\n",
+                  mtrr_tom2, mtrr_tom2>>20);
+    }
+}
+
 /*  Grab all of the MTRR state for this CPU into *state  */
 void __init get_mtrr_state(void)
 {
@@ -231,41 +261,9 @@ void __init get_mtrr_state(void)
         mtrr_tom2 |= low;
         mtrr_tom2 &= 0xffffff800000ULL;
     }
-    if (mtrr_show) {
-        int high_width;
 
-        printk(KERN_INFO "MTRR default type: %s\n",
mtrr_attrib_to_str(mtrr_state.def_type));
-        if (mtrr_state.have_fixed) {
-            printk(KERN_INFO "MTRR fixed ranges %sabled:\n",
-                   mtrr_state.enabled & 1 ? "en" : "dis");
-            print_fixed(0x00000, 0x10000, mtrr_state.fixed_ranges + 0);
-            for (i = 0; i < 2; ++i)
-                print_fixed(0x80000 + i * 0x20000, 0x04000,
mtrr_state.fixed_ranges + (i + 1) * 8);
-            for (i = 0; i < 8; ++i)
-                print_fixed(0xC0000 + i * 0x08000, 0x01000,
mtrr_state.fixed_ranges + (i + 3) * 8);
-        }
-        printk(KERN_INFO "MTRR variable ranges %sabled:\n",
-               mtrr_state.enabled & 2 ? "en" : "dis");
-        high_width = ((size_or_mask ? ffs(size_or_mask) - 1 : 32) - (32
- PAGE_SHIFT) + 3) / 4;
-        for (i = 0; i < num_var_ranges; ++i) {
-            if (mtrr_state.var_ranges[i].mask_lo & (1 << 11))
-                printk(KERN_INFO "MTRR %u base %0*X%05X000 mask
%0*X%05X000 %s\n",
-                       i,
-                       high_width,
-                       mtrr_state.var_ranges[i].base_hi,
-                       mtrr_state.var_ranges[i].base_lo >> 12,
-                       high_width,
-                       mtrr_state.var_ranges[i].mask_hi,
-                       mtrr_state.var_ranges[i].mask_lo >> 12,
-                      
mtrr_attrib_to_str(mtrr_state.var_ranges[i].base_lo & 0xff));
-            else
-                printk(KERN_INFO "MTRR %u disabled\n", i);
-        }
-        if (mtrr_tom2) {
-            printk(KERN_INFO "TOM2: %016llx aka %lldM\n",
-                      mtrr_tom2, mtrr_tom2>>20);
-        }
-    }
+    print_mtrr_state();
+
     mtrr_state_set = 1;
 
     /* PAT setup for BP. We need to go through sync steps here */
@@ -377,7 +375,12 @@ static void generic_get_mtrr(unsigned in
     unsigned int mask_lo, mask_hi, base_lo, base_hi;
     unsigned int tmp, hi;
 
+    /*
+     * get_mtrr doesn't need to update mtrr_state, also it could be called
+     * from any cpu, so try to print it out directly.
+     */
     rdmsr(MTRRphysMask_MSR(reg), mask_lo, mask_hi);
+
     if ((mask_lo & 0x800) == 0) {
         /*  Invalid (i.e. free) range  */
         *base = 0;
@@ -407,6 +410,10 @@ static void generic_get_mtrr(unsigned in
     *size = -mask_lo;
     *base = base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT;
     *type = base_lo & 0xff;
+
+    printk(KERN_DEBUG "  get_mtrr: cpu%d reg%02d base=%010lx
size=%010lx %s\n",
+            smp_processor_id(), reg, *base, *size,
+            mtrr_attrib_to_str(*type & 0xff));
 }
 
 /**

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2009-03-14 11:41 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-12  3:05 [PATCH] x86: more debug print out with mtrr Yinghai Lu
2009-03-12  3:05 ` [PATCH] x86: print out mtrr_range_state when user specify size Yinghai Lu
2009-03-12  3:07   ` [PATCH] x86: seperate mtrr cleanup/mtrr_e820 trim to seperated file Yinghai Lu
2009-03-13  2:34     ` [tip:x86/mtrr] x86: separate mtrr cleanup/mtrr_e820 trim to separate file Yinghai Lu
2009-03-13  2:34   ` [tip:x86/mtrr] x86: print out mtrr_range_state when user specify size Yinghai Lu
2009-03-13  1:40 ` [PATCH] x86: more debug print out with mtrr Ingo Molnar
2009-03-13  1:43   ` Yinghai Lu
2009-03-13  2:34     ` [tip:x86/mtrr] x86: more MTRR debug printouts Yinghai Lu
2009-03-13  4:26       ` Jaswinder Singh Rajput
2009-03-13 15:33       ` Jaswinder Singh Rajput
2009-03-13 15:45         ` Jaswinder Singh Rajput
2009-03-13 19:46           ` Yinghai Lu
2009-03-14  7:15             ` Jaswinder Singh Rajput
2009-03-14  7:21               ` Yinghai Lu
2009-03-14 11:18             ` Ingo Molnar
2009-03-14 11:30               ` Ingo Molnar
2009-03-14 11:39             ` [tip:x86/mtrr] x86: fix get_mtrr() warning about smp_processor_id() with CONFIG_PREEMPT=y Yinghai Lu
2009-03-13  1:44   ` [PATCH] x86: print out mtrr_range_state when user specify size Yinghai Lu
2009-03-13  1:45   ` [PATCH] x86: seperate mtrr cleanup/mtrr_e820 trim to seperated file Yinghai Lu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.