Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 257245
b: refs/heads/master
c: a17957c
h: refs/heads/master
i:
  257243: bffe423
v: v3
  • Loading branch information
Hidetoshi Seto authored and Borislav Petkov committed Jun 16, 2011
1 parent 6a8a617 commit db23056
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 70 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 901d7691d3238ad68c80a567b88b1e5d614137fb
refs/heads/master: a17957cdec69acb9e26319618b95a810a936e637
127 changes: 58 additions & 69 deletions trunk/arch/x86/kernel/cpu/mcheck/mce-severity.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,116 +43,105 @@ static struct severity {
unsigned char covered;
char *msg;
} severities[] = {
#define KERNEL .context = IN_KERNEL
#define USER .context = IN_USER
#define SER .ser = SER_REQUIRED
#define NOSER .ser = NO_SER
#define SEV(s) .sev = MCE_ ## s ## _SEVERITY
#define BITCLR(x, s, m, r...) { .mask = x, .result = 0, SEV(s), .msg = m, ## r }
#define BITSET(x, s, m, r...) { .mask = x, .result = x, SEV(s), .msg = m, ## r }
#define MCGMASK(x, res, s, m, r...) \
{ .mcgmask = x, .mcgres = res, SEV(s), .msg = m, ## r }
#define MASK(x, y, s, m, r...) \
{ .mask = x, .result = y, SEV(s), .msg = m, ## r }
#define MCESEV(s, m, c...) { .sev = MCE_ ## s ## _SEVERITY, .msg = m, ## c }
#define KERNEL .context = IN_KERNEL
#define USER .context = IN_USER
#define SER .ser = SER_REQUIRED
#define NOSER .ser = NO_SER
#define BITCLR(x) .mask = x, .result = 0
#define BITSET(x) .mask = x, .result = x
#define MCGMASK(x, y) .mcgmask = x, .mcgres = y
#define MASK(x, y) .mask = x, .result = y
#define MCI_UC_S (MCI_STATUS_UC|MCI_STATUS_S)
#define MCI_UC_SAR (MCI_STATUS_UC|MCI_STATUS_S|MCI_STATUS_AR)
#define MCACOD 0xffff

BITCLR(
MCI_STATUS_VAL,
NO, "Invalid"
MCESEV(
NO, "Invalid",
BITCLR(MCI_STATUS_VAL)
),
BITCLR(
MCI_STATUS_EN,
NO, "Not enabled"
MCESEV(
NO, "Not enabled",
BITCLR(MCI_STATUS_EN)
),
BITSET(
MCI_STATUS_PCC,
PANIC, "Processor context corrupt"
MCESEV(
PANIC, "Processor context corrupt",
BITSET(MCI_STATUS_PCC)
),
/* When MCIP is not set something is very confused */
MCGMASK(
MCG_STATUS_MCIP, 0,
PANIC, "MCIP not set in MCA handler"
MCESEV(
PANIC, "MCIP not set in MCA handler",
MCGMASK(MCG_STATUS_MCIP, 0)
),
/* Neither return not error IP -- no chance to recover -> PANIC */
MCGMASK(
MCG_STATUS_RIPV|MCG_STATUS_EIPV, 0,
PANIC, "Neither restart nor error IP"
MCESEV(
PANIC, "Neither restart nor error IP",
MCGMASK(MCG_STATUS_RIPV|MCG_STATUS_EIPV, 0)
),
MCGMASK(
MCG_STATUS_RIPV, 0,
MCESEV(
PANIC, "In kernel and no restart IP",
KERNEL
KERNEL, MCGMASK(MCG_STATUS_RIPV, 0)
),
BITCLR(
MCI_STATUS_UC,
MCESEV(
KEEP, "Corrected error",
NOSER
NOSER, BITCLR(MCI_STATUS_UC)
),

/* ignore OVER for UCNA */
MASK(
MCI_UC_SAR, MCI_STATUS_UC,
MCESEV(
KEEP, "Uncorrected no action required",
SER
SER, MASK(MCI_UC_SAR, MCI_STATUS_UC)
),
MASK(
MCI_STATUS_OVER|MCI_UC_SAR, MCI_STATUS_UC|MCI_STATUS_AR,
MCESEV(
PANIC, "Illegal combination (UCNA with AR=1)",
SER
SER,
MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_STATUS_UC|MCI_STATUS_AR)
),
MASK(
MCI_STATUS_S, 0,
MCESEV(
KEEP, "Non signalled machine check",
SER
SER, MASK(MCI_STATUS_S, 0)
),

/* AR add known MCACODs here */
MASK(
MCI_STATUS_OVER|MCI_UC_SAR, MCI_STATUS_OVER|MCI_UC_SAR,
MCESEV(
PANIC, "Action required with lost events",
SER
SER,
MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_STATUS_OVER|MCI_UC_SAR)
),
MASK(
MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_SAR,
MCESEV(
PANIC, "Action required; unknown MCACOD",
SER
SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_SAR)
),

/* known AO MCACODs: */
MASK(
MCI_UC_SAR|MCI_STATUS_OVER|0xfff0, MCI_UC_S|0xc0,
MCESEV(
AO, "Action optional: memory scrubbing error",
SER
SER, MASK(MCI_UC_SAR|MCI_STATUS_OVER|0xfff0, MCI_UC_S|0xc0)
),
MASK(
MCI_UC_SAR|MCI_STATUS_OVER|MCACOD, MCI_UC_S|0x17a,
MCESEV(
AO, "Action optional: last level cache writeback error",
SER
SER, MASK(MCI_UC_SAR|MCI_STATUS_OVER|MCACOD, MCI_UC_S|0x17a)
),

MASK(
MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_S,
MCESEV(
SOME, "Action optional unknown MCACOD",
SER
SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_S)
),
MASK(
MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_S|MCI_STATUS_OVER,
MCESEV(
SOME, "Action optional with lost events",
SER
SER, MASK(MCI_STATUS_OVER|MCI_UC_SAR, MCI_UC_S|MCI_STATUS_OVER)
),
BITSET(
MCI_STATUS_UC|MCI_STATUS_OVER,
PANIC, "Overflowed uncorrected"

MCESEV(
PANIC, "Overflowed uncorrected",
BITSET(MCI_STATUS_UC|MCI_STATUS_OVER)
),
BITSET(
MCI_STATUS_UC,
UC, "Uncorrected"
MCESEV(
UC, "Uncorrected",
BITSET(MCI_STATUS_UC)
),
BITSET(
0,
SOME, "No match"
MCESEV(
SOME, "No match",
BITSET(0)
) /* always matches. keep at end */
};

Expand Down

0 comments on commit db23056

Please sign in to comment.