WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

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

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86, mce: Control Machine Check Log output verbosity
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 25 Sep 2009 02:55:15 -0700
Delivery-date: Fri, 25 Sep 2009 02:56:40 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86, mce: Control Machine Check Log output verbosity, Xen patchbot-unstable <=