[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] x86, mce: Control Machine Check Log output verbosity



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1253871902 -3600
# Node ID c7ee30ba186d170ef09620b86731f8387544445f
# Parent  0f8376078dc145b465a1929af10e7f576375d8a5
x86, mce: Control Machine Check Log output verbosity

This small patch is for controlling machine check related Xen log
output. When set mce_verbosity=verbose in command line, all mce
related logs will be printed. Otherwise, those logs will be
eliminated.

Signed-off-by: Liping Ke <liping.ke@xxxxxxxxx>
---
 xen/arch/x86/cpu/mcheck/mce.c       |   55 +++++++++++++++-----------
 xen/arch/x86/cpu/mcheck/mce.h       |   15 +++++++
 xen/arch/x86/cpu/mcheck/mce_intel.c |   76 ++++++++++++++++++------------------
 3 files changed, 86 insertions(+), 60 deletions(-)

diff -r 0f8376078dc1 -r c7ee30ba186d xen/arch/x86/cpu/mcheck/mce.c
--- a/xen/arch/x86/cpu/mcheck/mce.c     Wed Sep 23 18:19:30 2009 +0100
+++ b/xen/arch/x86/cpu/mcheck/mce.c     Fri Sep 25 10:45:02 2009 +0100
@@ -22,10 +22,10 @@
 
 #include "mce.h"
 
-int mce_disabled = 0;
+int mce_disabled;
 invbool_param("mce", mce_disabled);
 
-int is_mc_panic = 0;
+int is_mc_panic;
 unsigned int nr_mce_banks;
 
 static uint64_t g_mcg_cap;
@@ -48,6 +48,17 @@ static int x86_mcerr(const char *msg, in
 #endif
 
 cpu_banks_t mca_allbanks;
+
+int mce_verbosity;
+static void __init mce_set_verbosity(char *str)
+{
+    if (strcmp("verbose", str) == 0)
+        mce_verbosity = MCE_VERBOSE;
+    else
+        printk(KERN_DEBUG "Machine Check verbosity level %s not recognised"
+                 "use mce_verbosity=verbose", str);
+}
+custom_param("mce_verbosity", mce_set_verbosity);
 
 /* Handle unconfigured int18 (should never happen) */
 static void unexpected_machine_check(struct cpu_user_regs *regs, long 
error_code)
@@ -687,24 +698,24 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
     case MSR_IA32_MCG_STATUS:
         *val = d->arch.vmca_msrs.mcg_status;
         if (*val)
-            gdprintk(XENLOG_DEBUG,
+            mce_printk(MCE_VERBOSE,
                 "MCE: rdmsr MCG_STATUS 0x%"PRIx64"\n", *val);
         break;
     case MSR_IA32_MCG_CAP:
         *val = d->arch.vmca_msrs.mcg_cap;
-        gdprintk(XENLOG_DEBUG, "MCE: rdmsr MCG_CAP 0x%"PRIx64"\n",
+        mce_printk(MCE_VERBOSE, "MCE: rdmsr MCG_CAP 0x%"PRIx64"\n",
             *val);
         break;
     case MSR_IA32_MCG_CTL:
         *val = d->arch.vmca_msrs.mcg_ctl;
-        gdprintk(XENLOG_DEBUG, "MCE: rdmsr MCG_CTL 0x%"PRIx64"\n",
+        mce_printk(MCE_VERBOSE, "MCE: rdmsr MCG_CTL 0x%"PRIx64"\n",
             *val);
         break;
     case MSR_IA32_MC0_CTL ... MSR_IA32_MC0_CTL + 4 * MAX_NR_BANKS - 1:
         bank = (msr - MSR_IA32_MC0_CTL) / 4;
         if ( bank >= (d->arch.vmca_msrs.mcg_cap & MCG_CAP_COUNT) )
         {
-            gdprintk(XENLOG_WARNING, "MCE: bank %u does not exist\n", bank);
+            mce_printk(MCE_QUIET, "MCE: bank %u does not exist\n", bank);
             ret = -1;
             break;
         }
@@ -712,7 +723,7 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
         {
         case MSR_IA32_MC0_CTL:
             *val = d->arch.vmca_msrs.mci_ctl[bank];
-            gdprintk(XENLOG_DEBUG, "MCE: rdmsr MC%u_CTL 0x%"PRIx64"\n",
+            mce_printk(MCE_VERBOSE, "MCE: rdmsr MC%u_CTL 0x%"PRIx64"\n",
                      bank, *val);
             break;
         case MSR_IA32_MC0_STATUS:
@@ -723,7 +734,7 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
                                    struct bank_entry, list);
                 if (entry->bank == bank) {
                     *val = entry->mci_status;
-                    gdprintk(XENLOG_DEBUG,
+                    mce_printk(MCE_VERBOSE,
                              "MCE: rd MC%u_STATUS in vMCE# context "
                              "value 0x%"PRIx64"\n", bank, *val);
                 }
@@ -739,7 +750,7 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
                 if ( entry->bank == bank )
                 {
                     *val = entry->mci_addr;
-                    gdprintk(XENLOG_DEBUG,
+                    mce_printk(MCE_VERBOSE,
                              "MCE: rdmsr MC%u_ADDR in vMCE# context "
                              "0x%"PRIx64"\n", bank, *val);
                 }
@@ -753,7 +764,7 @@ int mce_rdmsr(uint32_t msr, uint64_t *va
                 if ( entry->bank == bank )
                 {
                     *val = entry->mci_misc;
-                    gdprintk(XENLOG_DEBUG,
+                    mce_printk(MCE_VERBOSE,
                              "MCE: rd MC%u_MISC in vMCE# context "
                              "0x%"PRIx64"\n", bank, *val);
                 }
@@ -795,7 +806,7 @@ int mce_wrmsr(u32 msr, u64 val)
     case MSR_IA32_MCG_CTL:
         if ( val && (val + 1) )
         {
-            gdprintk(XENLOG_WARNING, "MCE: val \"%"PRIx64"\" written "
+            mce_printk(MCE_QUIET, "MCE: val \"%"PRIx64"\" written "
                      "to MCG_CTL should be all 0s or 1s\n", val);
             ret = -1;
             break;
@@ -804,7 +815,7 @@ int mce_wrmsr(u32 msr, u64 val)
         break;
     case MSR_IA32_MCG_STATUS:
         d->arch.vmca_msrs.mcg_status = val;
-        gdprintk(XENLOG_DEBUG, "MCE: wrmsr MCG_STATUS %"PRIx64"\n", val);
+        mce_printk(MCE_VERBOSE, "MCE: wrmsr MCG_STATUS %"PRIx64"\n", val);
         /* For HVM guest, this is the point for deleting vMCE injection node */
         if ( d->is_hvm && (d->arch.vmca_msrs.nr_injection > 0) )
         {
@@ -814,29 +825,29 @@ int mce_wrmsr(u32 msr, u64 val)
                 entry = list_entry(d->arch.vmca_msrs.impact_header.next,
                     struct bank_entry, list);
                 if ( entry->mci_status & MCi_STATUS_VAL )
-                    gdprintk(XENLOG_ERR, "MCE: MCi_STATUS MSR should have "
+                    mce_printk(MCE_QUIET, "MCE: MCi_STATUS MSR should have "
                                 "been cleared before write MCG_STATUS MSR\n");
 
-                gdprintk(XENLOG_DEBUG, "MCE: Delete HVM last injection "
+                mce_printk(MCE_QUIET, "MCE: Delete HVM last injection "
                                 "Node, nr_injection %u\n",
                                 d->arch.vmca_msrs.nr_injection);
                 list_del(&entry->list);
                 xfree(entry);
             }
             else
-                gdprintk(XENLOG_WARNING, "MCE: Not found HVM guest"
+                mce_printk(MCE_QUIET, "MCE: Not found HVM guest"
                     " last injection Node, something Wrong!\n");
         }
         break;
     case MSR_IA32_MCG_CAP:
-        gdprintk(XENLOG_WARNING, "MCE: MCG_CAP is read-only\n");
+        mce_printk(MCE_QUIET, "MCE: MCG_CAP is read-only\n");
         ret = -1;
         break;
     case MSR_IA32_MC0_CTL ... MSR_IA32_MC0_CTL + 4 * MAX_NR_BANKS - 1:
         bank = (msr - MSR_IA32_MC0_CTL) / 4;
         if ( bank >= (d->arch.vmca_msrs.mcg_cap & MCG_CAP_COUNT) )
         {
-            gdprintk(XENLOG_WARNING, "MCE: bank %u does not exist\n", bank);
+            mce_printk(MCE_QUIET, "MCE: bank %u does not exist\n", bank);
             ret = -1;
             break;
         }
@@ -845,7 +856,7 @@ int mce_wrmsr(u32 msr, u64 val)
         case MSR_IA32_MC0_CTL:
             if ( val && (val + 1) )
             {
-                gdprintk(XENLOG_WARNING, "MCE: val written to MC%u_CTL "
+                mce_printk(MCE_QUIET, "MCE: val written to MC%u_CTL "
                          "should be all 0s or 1s (is %"PRIx64")\n",
                          bank, val);
                 ret = -1;
@@ -865,20 +876,20 @@ int mce_wrmsr(u32 msr, u64 val)
                                    struct bank_entry, list);
                 if ( entry->bank == bank )
                     entry->mci_status = val;
-                gdprintk(XENLOG_DEBUG,
+                mce_printk(MCE_VERBOSE,
                          "MCE: wr MC%u_STATUS %"PRIx64" in vMCE#\n",
                          bank, val);
             }
             else
-                gdprintk(XENLOG_DEBUG,
+                mce_printk(MCE_VERBOSE,
                          "MCE: wr MC%u_STATUS %"PRIx64"\n", bank, val);
             break;
         case MSR_IA32_MC0_ADDR:
-            gdprintk(XENLOG_WARNING, "MCE: MC%u_ADDR is read-only\n", bank);
+            mce_printk(MCE_QUIET, "MCE: MC%u_ADDR is read-only\n", bank);
             ret = -1;
             break;
         case MSR_IA32_MC0_MISC:
-            gdprintk(XENLOG_WARNING, "MCE: MC%u_MISC is read-only\n", bank);
+            mce_printk(MCE_QUIET, "MCE: MC%u_MISC is read-only\n", bank);
             ret = -1;
             break;
         }
diff -r 0f8376078dc1 -r c7ee30ba186d xen/arch/x86/cpu/mcheck/mce.h
--- a/xen/arch/x86/cpu/mcheck/mce.h     Wed Sep 23 18:19:30 2009 +0100
+++ b/xen/arch/x86/cpu/mcheck/mce.h     Fri Sep 25 10:45:02 2009 +0100
@@ -11,6 +11,21 @@
 
 #include "x86_mca.h"
 #include "mctelem.h"
+
+#define MCE_QUIET 0
+#define MCE_VERBOSE 1
+
+extern int mce_verbosity;
+/* Define the default level of machine check related print.
+ * When set mce_verbosity=verbose, all mce debug information
+ * will be printed, otherwise, those information will not be
+ * printed.
+ */
+#define mce_printk(v, s, a...) do {       \
+        if ((v) <= mce_verbosity) \
+            printk(s, ##a);       \
+        } while (0)
+
 
 /* Init functions */
 int amd_k7_mcheck_init(struct cpuinfo_x86 *c);
diff -r 0f8376078dc1 -r c7ee30ba186d xen/arch/x86/cpu/mcheck/mce_intel.c
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c       Wed Sep 23 18:19:30 2009 +0100
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c       Fri Sep 25 10:45:02 2009 +0100
@@ -238,7 +238,7 @@ static int fill_vmsr_data(struct mcinfo_
 
         /* Not impact a valid domain, skip this error of the bank */
         if (!d) {
-            printk(KERN_DEBUG "MCE: Not found valid impacted DOM\n");
+            mce_printk(MCE_QUIET, "MCE: Not found valid impacted DOM\n");
             return 0;
         }
 
@@ -247,7 +247,7 @@ static int fill_vmsr_data(struct mcinfo_
          */
         if ( (d->is_hvm) && (d->arch.vmca_msrs.nr_injection > 0) )
         {
-            printk(KERN_DEBUG "MCE: HVM guest has not handled previous"
+            mce_printk(MCE_QUIET, "MCE: HVM guest has not handled previous"
                         " vMCE yet!\n");
             return -1;
         }
@@ -269,7 +269,7 @@ static int fill_vmsr_data(struct mcinfo_
         d->arch.vmca_msrs.nr_injection++;
         spin_unlock(&d->arch.vmca_msrs.lock);
 
-        printk(KERN_DEBUG "MCE: Found error @[BANK%d "
+        mce_printk(MCE_VERBOSE,"MCE: Found error @[BANK%d "
                 "status %"PRIx64" addr %"PRIx64" domid %d]\n ",
                 mc_bank->mc_bank, mc_bank->mc_status, mc_bank->mc_addr,
                 mc_bank->mc_domid);
@@ -289,14 +289,14 @@ static int inject_mce(struct domain *d)
     {
         if (d->is_hvm)
         {
-            printk(KERN_DEBUG "MCE: inject vMCE to HVM DOM %d\n", 
+            mce_printk(MCE_VERBOSE, "MCE: inject vMCE to HVM DOM %d\n", 
                         d->domain_id);
             vcpu_kick(d->vcpu[0]);
         }
         /* PV guest including DOM0 */
         else
         {
-            printk(KERN_DEBUG "MCE: inject vMCE to PV DOM%d\n", 
+            mce_printk(MCE_VERBOSE, "MCE: inject vMCE to PV DOM%d\n", 
                         d->domain_id);
             if (guest_has_trap_callback
                    (d, 0, TRAP_machine_check))
@@ -305,14 +305,14 @@ static int inject_mce(struct domain *d)
                         d->vcpu[0]->cpu_affinity;
                 cpus_clear(affinity);
                 cpu_set(cpu, affinity);
-                printk(KERN_DEBUG "MCE: CPU%d set affinity, old %d\n", cpu,
+                mce_printk(MCE_VERBOSE, "MCE: CPU%d set affinity, old %d\n", 
cpu,
                             d->vcpu[0]->processor);
                 vcpu_set_affinity(d->vcpu[0], &affinity);
                 vcpu_kick(d->vcpu[0]);
             }
             else
             {
-                printk(KERN_DEBUG "MCE: Kill PV guest with No MCE handler\n");
+                mce_printk(MCE_VERBOSE, "MCE: Kill PV guest with No MCE 
handler\n");
                 domain_crash(d);
             }
         }
@@ -322,7 +322,7 @@ static int inject_mce(struct domain *d)
          * in this case, inject fail. [We can't lose this vMCE for
          * the mce node's consistency].
         */
-        printk(KERN_DEBUG "There's a pending vMCE waiting to be injected "
+        mce_printk(MCE_QUIET, "There's a pending vMCE waiting to be injected "
                     " to this DOM%d!\n", d->domain_id);
         return -1;
     }
@@ -338,7 +338,7 @@ void intel_UCR_handler(struct mcinfo_ban
     unsigned long mfn, gfn;
     uint32_t status;
 
-    printk(KERN_DEBUG "MCE: Enter UCR recovery action\n");
+    mce_printk(MCE_VERBOSE, "MCE: Enter UCR recovery action\n");
     result->result = MCA_NEED_RESET;
     if (bank->mc_addr != 0) {
          mfn = bank->mc_addr >> PAGE_SHIFT;
@@ -351,7 +351,7 @@ void intel_UCR_handler(struct mcinfo_ban
                   if (status & PG_OFFLINE_OWNED) {
                       result->result |= MCA_OWNER;
                       result->owner = status >> PG_OFFLINE_OWNER_SHIFT;
-                      printk(KERN_DEBUG "MCE: This error page is ownded"
+                      mce_printk(MCE_QUIET, "MCE: This error page is ownded"
                                   " by DOM %d\n", result->owner);
                       /* Fill vMCE# injection and vMCE# MSR virtualization "
                        * "related data */
@@ -364,7 +364,7 @@ void intel_UCR_handler(struct mcinfo_ban
                               gfn << PAGE_SHIFT | (bank->mc_addr & PAGE_MASK);
                           if (fill_vmsr_data(bank, global->mc_gstatus) == -1)
                           {
-                              printk(KERN_DEBUG "Fill vMCE# data for DOM%d "
+                              mce_printk(MCE_QUIET, "Fill vMCE# data for DOM%d 
"
                                       "failed\n", result->owner);
                               domain_crash(d);
                               return;
@@ -372,7 +372,7 @@ void intel_UCR_handler(struct mcinfo_ban
                           /* We will inject vMCE to DOMU*/
                           if ( inject_mce(d) < 0 )
                           {
-                              printk(KERN_DEBUG "inject vMCE to DOM%d"
+                              mce_printk(MCE_QUIET, "inject vMCE to DOM%d"
                                           " failed\n", d->domain_id);
                               domain_crash(d);
                               return;
@@ -452,11 +452,11 @@ static int mce_action(mctelem_cookie_t m
                     mc_panic("MCE: Software recovery failed for the UCR "
                                 "error\n");
                 else if (mca_res.result == MCA_RECOVERED)
-                    printk(KERN_DEBUG "MCE: The UCR error is succesfully "
-                                "recovered by software!\n");
+                    mce_printk(MCE_VERBOSE, "MCE: The UCR error is"
+                                "successfully recovered by software!\n");
                 else if (mca_res.result == MCA_NO_ACTION)
-                    printk(KERN_DEBUG "MCE: Overwrite SRAO error can't execute 
"
-                                "recover action, RIPV=1, let it be.\n");
+                    mce_printk(MCE_VERBOSE, "MCE: Overwrite SRAO error can't"
+                                "do recover action, RIPV=1, let it be.\n");
                 break;
             }
         }
@@ -464,8 +464,8 @@ static int mce_action(mctelem_cookie_t m
          * in MCA Handler
          */
         if ( i >= INTEL_MAX_RECOVERY )
-            printk(KERN_DEBUG "MCE: No software recovery action found for "
-                            "this SRAO error\n");
+            mce_printk(MCE_VERBOSE, "MCE: No software recovery action"
+                            " found for this SRAO error\n");
 
     }
     return 1;
@@ -477,7 +477,7 @@ static void mce_softirq(void)
     int cpu = smp_processor_id();
     unsigned int workcpu;
 
-    printk(KERN_DEBUG "CPU%d enter softirq\n", cpu);
+    mce_printk(MCE_VERBOSE, "CPU%d enter softirq\n", cpu);
 
     mce_barrier_enter(&mce_inside_bar);
 
@@ -500,7 +500,7 @@ static void mce_softirq(void)
     /* We choose severity_cpu for further processing */
     if (atomic_read(&severity_cpu) == cpu) {
 
-        printk(KERN_DEBUG "CPU%d handling errors\n", cpu);
+        mce_printk(MCE_VERBOSE, "CPU%d handling errors\n", cpu);
 
         /* Step1: Fill DOM0 LOG buffer, vMCE injection buffer and
          * vMCE MSRs virtualization buffer
@@ -511,7 +511,7 @@ static void mce_softirq(void)
 
         /* Step2: Send Log to DOM0 through vIRQ */
         if (dom0 && guest_enabled_event(dom0->vcpu[0], VIRQ_MCA)) {
-            printk(KERN_DEBUG "MCE: send MCE# to DOM0 through virq\n");
+            mce_printk(MCE_VERBOSE, "MCE: send MCE# to DOM0 through virq\n");
             send_guest_global_virq(dom0, VIRQ_MCA);
         }
     }
@@ -669,7 +669,7 @@ static void intel_machine_check(struct c
         }
         atomic_set(&found_error, 1);
 
-        printk(KERN_DEBUG "MCE: clear_bank map %lx on CPU%d\n",
+        mce_printk(MCE_VERBOSE, "MCE: clear_bank map %lx on CPU%d\n",
                 *((unsigned long*)clear_bank), smp_processor_id());
         mcheck_mca_clearbanks(clear_bank);
        /* Print MCE error */
@@ -696,13 +696,13 @@ static void intel_machine_check(struct c
     /* Clear error finding flags after all cpus finishes above judgement */
     mce_barrier_enter(&mce_trap_bar);
     if (atomic_read(&found_error)) {
-        printk(KERN_DEBUG "MCE: Choose one CPU "
+        mce_printk(MCE_VERBOSE, "MCE: Choose one CPU "
                        "to clear error finding flag\n ");
         atomic_set(&found_error, 0);
     }
     mca_rdmsrl(MSR_IA32_MCG_STATUS, gstatus);
     if ((gstatus & MCG_STATUS_MCIP) != 0) {
-        printk(KERN_DEBUG "MCE: Clear MCIP@ last step");
+        mce_printk(MCE_VERBOSE, "MCE: Clear MCIP@ last step");
         mca_wrmsrl(MSR_IA32_MCG_STATUS, gstatus & ~MCG_STATUS_MCIP);
     }
     mce_barrier_exit(&mce_trap_bar);
@@ -778,7 +778,7 @@ static int intel_recoverable_scan(u64 st
     else if ( ser_support && !(status & MCi_STATUS_OVER) 
                 && !(status & MCi_STATUS_PCC) && (status & MCi_STATUS_S)
                 && (status & MCi_STATUS_AR) ) {
-        printk(KERN_DEBUG "MCE: No SRAR error defined currently.\n");
+        mce_printk(MCE_VERBOSE, "MCE: No SRAR error defined currently.\n");
         return 0;
     }
     /* SRAO error */
@@ -831,7 +831,7 @@ static void cmci_discover(void)
     mctelem_cookie_t mctc;
     struct mca_summary bs;
 
-    printk(KERN_DEBUG "CMCI: find owner on CPU%d\n", smp_processor_id());
+    mce_printk(MCE_VERBOSE, "CMCI: find owner on CPU%d\n", smp_processor_id());
 
     spin_lock_irqsave(&cmci_discover_lock, flags);
 
@@ -861,9 +861,9 @@ static void cmci_discover(void)
     } else if (mctc != NULL)
         mctelem_dismiss(mctc);
 
-    printk(KERN_DEBUG "CMCI: CPU%d owner_map[%lx], no_cmci_map[%lx]\n", 
-           smp_processor_id(), 
-           *((unsigned long *)__get_cpu_var(mce_banks_owned)), 
+    mce_printk(MCE_VERBOSE, "CMCI: CPU%d owner_map[%lx], no_cmci_map[%lx]\n",
+           smp_processor_id(),
+           *((unsigned long *)__get_cpu_var(mce_banks_owned)),
            *((unsigned long *)__get_cpu_var(no_cmci_banks)));
 }
 
@@ -904,7 +904,7 @@ static void clear_cmci(void)
     if (!cmci_support || mce_disabled == 1)
         return;
 
-    printk(KERN_DEBUG "CMCI: clear_cmci support on CPU%d\n", 
+    mce_printk(MCE_VERBOSE, "CMCI: clear_cmci support on CPU%d\n",
             smp_processor_id());
 
     for (i = 0; i < nr_mce_banks; i++) {
@@ -933,14 +933,14 @@ static void intel_init_cmci(struct cpuin
     int cpu = smp_processor_id();
 
     if (!mce_available(c) || !cmci_support) {
-        printk(KERN_DEBUG "CMCI: CPU%d has no CMCI support\n", cpu);
+        mce_printk(MCE_QUIET, "CMCI: CPU%d has no CMCI support\n", cpu);
         return;
     }
 
     apic = apic_read(APIC_CMCI);
     if ( apic & APIC_VECTOR_MASK )
     {
-        printk(KERN_WARNING "CPU%d CMCI LVT vector (%#x) already installed\n",
+        mce_printk(MCE_QUIET, "CPU%d CMCI LVT vector (%#x) already 
installed\n",
             cpu, ( apic & APIC_VECTOR_MASK ));
         return;
     }
@@ -968,7 +968,7 @@ fastcall void smp_cmci_interrupt(struct 
     if (bs.errcnt && mctc != NULL) {
         if (guest_enabled_event(dom0->vcpu[0], VIRQ_MCA)) {
             mctelem_commit(mctc);
-            printk(KERN_DEBUG "CMCI: send CMCI to DOM0 through virq\n");
+            mce_printk(MCE_VERBOSE, "CMCI: send CMCI to DOM0 through virq\n");
             send_guest_global_virq(dom0, VIRQ_MCA);
         } else {
             x86_mcinfo_dump(mctelem_dataptr(mctc));
@@ -1004,7 +1004,7 @@ static void _mce_cap_init(struct cpuinfo
     if (l & MCG_EXT_P)
     {
         nr_intel_ext_msrs = (l >> MCG_EXT_CNT) & 0xff;
-        printk (KERN_INFO "CPU%d: Intel Extended MCE MSRs (%d) available\n",
+        mce_printk (MCE_QUIET, "CPU%d: Intel Extended MCE MSRs (%d) 
available\n",
             smp_processor_id(), nr_intel_ext_msrs);
     }
     firstbank = mce_firstbank(c);
@@ -1045,7 +1045,7 @@ static void mce_init(void)
         if (!(l | h))
         {
             /* if ctl is 0, this bank is never initialized */
-            printk(KERN_DEBUG "mce_init: init bank%d\n", i);
+            mce_printk(MCE_VERBOSE, "mce_init: init bank%d\n", i);
             wrmsr (MSR_IA32_MC0_CTL + 4*i, 0xffffffff, 0xffffffff);
             wrmsr (MSR_IA32_MC0_STATUS + 4*i, 0x0, 0x0);
         }
@@ -1058,7 +1058,7 @@ int intel_mcheck_init(struct cpuinfo_x86
 int intel_mcheck_init(struct cpuinfo_x86 *c)
 {
     _mce_cap_init(c);
-    printk (KERN_INFO "Intel machine check reporting enabled on CPU#%d.\n",
+    mce_printk(MCE_QUIET, "Intel machine check reporting enabled on CPU#%d.\n",
             smp_processor_id());
 
     /* machine check is available */
@@ -1082,7 +1082,7 @@ int intel_mce_wrmsr(uint32_t msr, uint64
     switch ( msr )
     {
     case MSR_IA32_MC0_CTL2 ... MSR_IA32_MC0_CTL2 + MAX_NR_BANKS - 1:
-        gdprintk(XENLOG_WARNING, "We have disabled CMCI capability, "
+        mce_printk(MCE_QUIET, "We have disabled CMCI capability, "
                  "Guest should not write this MSR!\n");
         break;
     default:
@@ -1100,7 +1100,7 @@ int intel_mce_rdmsr(uint32_t msr, uint64
     switch ( msr )
     {
     case MSR_IA32_MC0_CTL2 ... MSR_IA32_MC0_CTL2 + MAX_NR_BANKS - 1:
-        gdprintk(XENLOG_WARNING, "We have disabled CMCI capability, "
+        mce_printk(MCE_QUIET, "We have disabled CMCI capability, "
                  "Guest should not read this MSR!\n");
         break;
     default:

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.