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

[Xen-devel] [PATCH] x86/MCE: mcequirk stuff is AMD-specific



Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

--- a/xen/arch/x86/cpu/mcheck/mce_amd.c
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.c
@@ -70,12 +70,22 @@
 #include "x86_mca.h"
 #include "mce_amd.h"
 #include "mcaction.h"
-#include "mce_quirks.h"
 #include "vmce.h"
 
-#define ANY -1
+#define ANY (~0U)
 
-static const struct mce_quirkdata mce_amd_quirks[] = {
+enum mcequirk_amd_flags {
+    MCEQUIRK_NONE,
+    MCEQUIRK_K8_GART,
+    MCEQUIRK_F10_GART
+};
+
+static const struct mce_quirkdata {
+    unsigned int cpu_family;
+    unsigned int cpu_model;
+    unsigned int cpu_stepping;
+    enum mcequirk_amd_flags quirk;
+} mce_amd_quirks[] = {
     { 0xf /* cpu family */, ANY /* all models */, ANY /* all steppings */,
       MCEQUIRK_K8_GART },
     { 0x10 /* cpu family */, ANY /* all models */, ANY /* all steppings */,
@@ -157,10 +167,10 @@ bool mc_amd_addrcheck(uint64_t status, u
 }
 
 /* MC quirks */
-enum mcequirk_amd_flags
-mcequirk_lookup_amd_quirkdata(struct cpuinfo_x86 *c)
+static enum mcequirk_amd_flags
+mcequirk_lookup_amd_quirkdata(const struct cpuinfo_x86 *c)
 {
-    int i;
+    unsigned int i;
 
     BUG_ON(c->x86_vendor != X86_VENDOR_AMD);
 
@@ -176,10 +186,11 @@ mcequirk_lookup_amd_quirkdata(struct cpu
                 continue;
         return mce_amd_quirks[i].quirk;
     }
-    return 0;
+
+    return MCEQUIRK_NONE;
 }
 
-int mcequirk_amd_apply(enum mcequirk_amd_flags flags)
+static void mcequirk_amd_apply(enum mcequirk_amd_flags flags)
 {
     uint64_t val;
 
@@ -197,11 +208,12 @@ int mcequirk_amd_apply(enum mcequirk_amd
 
     case MCEQUIRK_F10_GART:
         if ( rdmsr_safe(MSR_AMD64_MCx_MASK(4), val) == 0 )
-                wrmsr_safe(MSR_AMD64_MCx_MASK(4), val | (1 << 10));
+            wrmsr_safe(MSR_AMD64_MCx_MASK(4), val | (1 << 10));
         break;
-    }
 
-    return 0;
+    default:
+        ASSERT(flags == MCEQUIRK_NONE);
+    }
 }
 
 static struct mcinfo_extended *
--- a/xen/arch/x86/cpu/mcheck/mce_quirks.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* * MCA quirks
- * Copyright (c) 2009 Advanced Micro Devices, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef _MCE_QUIRK_H
-#define _MCE_QUIRK_H
-
-#include <xen/types.h>
-
-struct mce_quirkdata {
-       int32_t cpu_family;
-       int16_t cpu_model;
-       int16_t cpu_stepping;
-       uint32_t quirk;
-};
-
-/* use a binary flag if multiple quirks apply
- * to one CPU family/model
- */
-
-enum mcequirk_amd_flags {
-       MCEQUIRK_K8_GART = 2,
-       MCEQUIRK_F10_GART
-};
-
-enum mcequirk_intel_flags {
-       MCEQUIRK_DUMMY = 0x1, /* nothing known yet */
-};
-
-enum mcequirk_amd_flags
-mcequirk_lookup_amd_quirkdata(struct cpuinfo_x86 *c);
-
-int mcequirk_amd_apply(enum mcequirk_amd_flags flags);
-
-enum mcequirk_intel_flags
-mcequirk_lookup_intel_quirkdata(struct cpuinfo_x86 *c);
-
-int mcequirk_intel_apply(enum mcequirk_intel_flags flags);
-
-#endif /* _MCE_QUIRK_H */





_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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