diff options
author | Huang Ying <ying.huang@intel.com> | 2008-12-12 13:29:30 +0100 |
---|---|---|
committer | Andi Kleen <ak@linux.intel.com> | 2008-12-12 13:29:30 +0100 |
commit | 385f9e6b6aa9e2cbe76cb95c31f72699d6924eb1 (patch) | |
tree | f581d662658290ebc16500c21610db54f1a75473 | |
parent | 0c7e2a2531d692fba0eb6c741a90341947b6dfa5 (diff) | |
download | mce-inject-385f9e6b6aa9e2cbe76cb95c31f72699d6924eb1.tar.gz |
Extend struct mce in mec-inject in sync with kernel
From: Huang Ying <ying.huang@intel.com>
struct mce is extended in kernel, changes mce-inject correspondingly.
Signed-off-by: Huang Ying <ying.huang@intel.com>
AK: <adapted to current tree>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
-rw-r--r-- | inject.c | 8 | ||||
-rw-r--r-- | mce.h | 15 | ||||
-rw-r--r-- | mce.y | 4 |
3 files changed, 20 insertions, 7 deletions
@@ -130,7 +130,7 @@ void do_inject_mce(int fd, struct mce *m) cpu_set_t aset; NEW(t); - if (cpu == m->cpu) + if (cpu == m->extcpu) t->m = m; else if (cpu_mce[i]) t->m = cpu_mce[i]; @@ -139,7 +139,7 @@ void do_inject_mce(int fd, struct mce *m) else { t->m = &t->otherm; t->otherm = otherm; - t->otherm.cpu = cpu; + t->otherm.cpu = t->otherm.extcpu = cpu; } t->fd = fd; t->next = tlist; @@ -173,7 +173,7 @@ void inject_mce(struct mce *m) int inject_fd; if (mce_flags & MCE_HOLD) { - int cpu_index = cpu_id_to_index(m->cpu); + int cpu_index = cpu_id_to_index(m->extcpu); struct mce *nm; NEW(nm); *nm = *m; @@ -192,7 +192,7 @@ void inject_mce(struct mce *m) void dump_mce(struct mce *m) { - printf("CPU %d\n", m->cpu); + printf("CPU %d\n", m->extcpu); printf("BANK %d\n", m->bank); printf("TSC 0x%Lx\n", m->tsc); printf("RIP 0x%02x:0x%Lx\n", m->cs, m->ip); @@ -30,6 +30,19 @@ #define MCJ_CTX_IRQ 2 /* inject context: IRQ */ #define MCJ_NMI_BROADCAST 4 /* do NMI broadcasting */ +#define MCJ_CTX_MASK 3 +#define MCJ_CTX(flags) ((flags) & MCJ_CTX_MASK) +#define MCJ_CTX_RANDOM 0 /* inject context: random */ +#define MCJ_CTX_PROCESS 1 /* inject context: process */ +#define MCJ_CTX_IRQ 2 /* inject context: IRQ */ +#define MCJ_NMI_BROADCAST 4 /* do NMI broadcasting */ + +#define MCJ_CTX_SET(flags, ctx) \ + do { \ + (flags) &= ~MCJ_CTX_MASK; \ + (flags) |= ((ctx) & MCJ_CTX_MASK); \ + } while (0) + /* Fields are zero when not available */ struct mce { __u64 status; @@ -64,7 +77,7 @@ struct mce_log { unsigned len; /* = MCE_LOG_LEN */ unsigned next; unsigned flags; - unsigned pad0; + unsigned recordlen; /* length of struct mce */ struct mce entry[MCE_LOG_LEN]; }; @@ -53,8 +53,8 @@ static void init(void); input: /* empty */ | input mce_start mce { submit_mce(&m); } ; -mce_start: CPU NUMBER { init(); m.cpu = $2; } - | CPU NUMBER NUMBER { init(); m.cpu = $2; m.bank = $3; } +mce_start: CPU NUMBER { init(); m.cpu = m.extcpu = $2; } + | CPU NUMBER NUMBER { init(); m.cpu = m.extcpu = $2; m.bank = $3; } | MCE { init(); } | CPU NUMBER ':' MACHINE CHECK EXCEPTION ':' NUMBER BANK NUMBER ':' |