MCE: implement recoverscan for AMD
PATCH 1/1 MCE: implement recoverscan for AMD
Implement recoverable_scan() for AMD
Signed-off-by Christoph Egger <[email protected]>
Signature · 6 lines
---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632
# User Christoph Egger
# Date 1348750048 -7200
Implement recoverable_scan() for AMD
Signed-off-by Christoph Egger <[email protected]>
xen/arch/x86/cpu/mcheck/Makefile +1 -0
@@ -2,6 +2,7 @@ obj-y += amd_nonfatal.o obj-y += k7.o obj-y += amd_k8.o obj-y += amd_f10.o +obj-y += mce_amd.o obj-y += barrier.o obj-y += mctelem.o obj-y += mce.o
xen/arch/x86/cpu/mcheck/amd_f10.c +7 -6
@@ -37,18 +37,13 @@#include <xen/init.h> #include <xen/types.h> -#include <xen/kernel.h> -#include <xen/config.h> -#include <xen/smp.h> -#include <asm/processor.h> -#include <asm/system.h> #include <asm/msr.h> #include "mce.h" #include "mce_quirks.h" #include "x86_mca.h" - +#include "mce_amd.h" static struct mcinfo_extended *amd_f10_handler (struct mc_info *mi,uint16_t bank,uint64_t status)
@@ -89,6 +84,11 @@ amd_f10_handler(struct mc_info *mi, uintreturn mc_ext; } +static int amd_f10_recoverable_scan (uint64_t status) +{ +return mc_amd_recoverable_scan (status); +} +/* AMD Family10 machine check */ enum mcheck_type amd_f10_mcheck_init (struct cpuinfo_x86 *c) {
@@ -101,6 +101,7 @@ enum mcheck_type amd_f10_mcheck_init(strmcequirk_amd_apply (quirkflag);x86_mce_callback_register (amd_f10_handler); +mce_recoverable_register (amd_f10_recoverable_scan);return mcheck_amd_famXX; }
xen/arch/x86/cpu/mcheck/mce.h +1 -1
@@ -73,7 +73,7 @@ extern void mcheck_cmn_handler(struct cp struct mca_banks *, struct mca_banks *);/* Register a handler for judging whether mce is recoverable. */ -typedef int (*mce_recoverable_t )(u64 status); +typedef int (*mce_recoverable_t )(uint64_t status);extern void mce_recoverable_register (mce_recoverable_t );/* Read an MSR, checking for an interposed value first */
xen/arch/x86/cpu/mcheck/mce_amd.c new file +76 -0
76 lines not on this page · raw message
xen/arch/x86/cpu/mcheck/mce_amd.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _MCHECK_AMD_H +#define _MCHECK_AMD_H + +int mc_amd_recoverable_scan (uint64_t status); + +#endif
xen/arch/x86/cpu/mcheck/mce_intel.c +1 -1
@@ -560,7 +560,7 @@ static int intel_need_clearbank_scan(enu* 4) SRAO ser_support = 1, PCC = 0, S = 1, AR = 0, EN = 1 [UC = 1] * 5) UCNA ser_support = 1, OVER = 0, EN = 1, PCC = 0, S = 0, AR = 0, [UC = 1] */ -static int intel_recoverable_scan (u64 status) +static int intel_recoverable_scan (uint64_t status) {if ( !(status & MCi_STATUS_UC ) )
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xen.org/xen-devel