aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2008-12-19 09:16:52 +0800
committerHuang Ying <ying.huang@intel.com>2008-12-19 09:16:52 +0800
commit0adb4b151cd063dd3e2b58662438e990ba27c603 (patch)
tree8d501d850370f1d4e4f429f29be8bc9da62c1842
parent6116fbd985367b6b3b25e0377dd410df58638390 (diff)
downloadmce-inject-0adb4b151cd063dd3e2b58662438e990ba27c603.tar.gz
Add parse and dump support for new struct mce fields
mce->time, mce->cpuvendor and mce->cpuid are supported. Signed-off-by: Huang Ying <ying.huang@intel.com>
-rw-r--r--inject.c4
-rw-r--r--mce.lex2
-rw-r--r--mce.y4
3 files changed, 8 insertions, 2 deletions
diff --git a/inject.c b/inject.c
index 190c2da..9bd1a9b 100644
--- a/inject.c
+++ b/inject.c
@@ -210,11 +210,13 @@ void dump_mce(struct mce *m)
printf("CPU %d\n", m->extcpu);
printf("BANK %d\n", m->bank);
printf("TSC 0x%Lx\n", m->tsc);
+ printf("TIME %Lu\n", m->time);
printf("RIP 0x%02x:0x%Lx\n", m->cs, m->ip);
printf("MISC 0x%Lx\n", m->misc);
printf("ADDR 0x%Lx\n", m->addr);
printf("STATUS 0x%Lx\n", m->status);
- printf("MCGSTATUS 0x%Lx\n\n", m->mcgstatus);
+ printf("MCGSTATUS 0x%Lx\n", m->mcgstatus);
+ printf("PROCESSOR %u:0x%x\n\n", m->cpuvendor, m->cpuid);
}
void submit_mce(struct mce *m)
diff --git a/mce.lex b/mce.lex
index 210ed7a..e5d33c6 100644
--- a/mce.lex
+++ b/mce.lex
@@ -64,11 +64,13 @@ static struct key {
KEY(STATUS),
KEY(RIP),
KEY(TSC),
+ KEY(TIME),
KEY(ADDR),
KEY(MISC),
KEY(CPU),
KEY(BANK),
KEY(MCGSTATUS),
+ KEY(PROCESSOR),
KEY(NOBROADCAST),
KEY(HOLD),
KEY(IN_IRQ),
diff --git a/mce.y b/mce.y
index 965ad49..309580c 100644
--- a/mce.y
+++ b/mce.y
@@ -40,7 +40,7 @@ static void init(void);
%}
%token STATUS RIP TSC ADDR MISC CPU BANK MCGSTATUS NOBROADCAST HOLD
-%token IN_IRQ IN_PROC
+%token IN_IRQ IN_PROC PROCESSOR TIME
%token CORRECTED UNCORRECTED FATAL MCE
%token NUMBER
%token SYMBOL
@@ -73,12 +73,14 @@ mce_term: STATUS status_list { m.status = $2; }
| BANK NUMBER { m.bank = $2; }
| TSC NUMBER { m.tsc = $2; }
+ | TIME NUMBER { m.time = $2; }
| RIP NUMBER { m.ip = $2; }
| RIP NUMBER ':' NUMBER { m.ip = $4; m.cs = $2; }
| RIP NUMBER ':' '<' NUMBER '>' '{' SYMBOL '}'
{ m.ip = $5; m.cs = $2; }
| ADDR NUMBER { m.addr = $2; m.status |= MCI_STATUS_ADDRV; }
| MISC NUMBER { m.misc = $2; m.status |= MCI_STATUS_MISCV; }
+ | PROCESSOR NUMBER ':' NUMBER { m.cpuvendor = $2; m.cpuid = $4; }
| NOBROADCAST { mce_flags |= MCE_NOBROADCAST; }
| HOLD { mce_flags |= MCE_HOLD; }
| IN_IRQ { MCJ_CTX_SET(m.inject_flags, MCJ_CTX_IRQ); }