aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2008-12-12 13:29:30 +0100
committerAndi Kleen <ak@linux.intel.com>2008-12-12 13:29:30 +0100
commit385f9e6b6aa9e2cbe76cb95c31f72699d6924eb1 (patch)
treef581d662658290ebc16500c21610db54f1a75473
parent0c7e2a2531d692fba0eb6c741a90341947b6dfa5 (diff)
downloadmce-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.c8
-rw-r--r--mce.h15
-rw-r--r--mce.y4
3 files changed, 20 insertions, 7 deletions
diff --git a/inject.c b/inject.c
index 0cbe85c..78d6348 100644
--- a/inject.c
+++ b/inject.c
@@ -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);
diff --git a/mce.h b/mce.h
index 12628b2..127076d 100644
--- a/mce.h
+++ b/mce.h
@@ -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];
};
diff --git a/mce.y b/mce.y
index 2d831f8..2605c15 100644
--- a/mce.y
+++ b/mce.y
@@ -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 ':'