diff options
author | Huang Ying <ying.huang@intel.com> | 2008-12-19 09:16:52 +0800 |
---|---|---|
committer | Huang Ying <ying.huang@intel.com> | 2008-12-19 09:16:52 +0800 |
commit | 0adb4b151cd063dd3e2b58662438e990ba27c603 (patch) | |
tree | 8d501d850370f1d4e4f429f29be8bc9da62c1842 | |
parent | 6116fbd985367b6b3b25e0377dd410df58638390 (diff) | |
download | mce-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.c | 4 | ||||
-rw-r--r-- | mce.lex | 2 | ||||
-rw-r--r-- | mce.y | 4 |
3 files changed, 8 insertions, 2 deletions
@@ -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) @@ -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), @@ -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); } |