Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 163044
b: refs/heads/master
c: 0dcc668
h: refs/heads/master
v: v3
  • Loading branch information
Huang Ying authored and H. Peter Anvin committed Aug 10, 2009
1 parent 1d4bde0 commit da954d5
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 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: 5b7e88edc6193f36941bccbfd5ed9ed5fe27d2e1
refs/heads/master: 0dcc66851f1091af421416c28a9458836885f522
1 change: 1 addition & 0 deletions trunk/arch/x86/include/asm/mce.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
#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_EXCEPTION 8 /* raise as exception */

/* Fields are zero when not available */
struct mce {
Expand Down
16 changes: 8 additions & 8 deletions trunk/arch/x86/kernel/cpu/mcheck/mce-inject.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ static void inject_mce(struct mce *m)
i->finished = 1;
}

static void raise_corrected(struct mce *m)
static void raise_poll(struct mce *m)
{
unsigned long flags;
mce_banks_t b;
Expand All @@ -56,7 +56,7 @@ static void raise_corrected(struct mce *m)
m->finished = 0;
}

static void raise_uncorrected(struct mce *m, struct pt_regs *pregs)
static void raise_exception(struct mce *m, struct pt_regs *pregs)
{
struct pt_regs regs;
unsigned long flags;
Expand Down Expand Up @@ -85,10 +85,10 @@ static int mce_raise_notify(struct notifier_block *self,
if (val != DIE_NMI_IPI || !cpu_isset(cpu, mce_inject_cpumask))
return NOTIFY_DONE;
cpu_clear(cpu, mce_inject_cpumask);
if (m->status & MCI_STATUS_UC)
raise_uncorrected(m, args->regs);
if (m->inject_flags & MCJ_EXCEPTION)
raise_exception(m, args->regs);
else if (m->status)
raise_corrected(m);
raise_poll(m);
return NOTIFY_STOP;
}

Expand All @@ -104,7 +104,7 @@ static int raise_local(struct mce *m)
int ret = 0;
int cpu = m->extcpu;

if (m->status & MCI_STATUS_UC) {
if (m->inject_flags & MCJ_EXCEPTION) {
printk(KERN_INFO "Triggering MCE exception on CPU %d\n", cpu);
switch (context) {
case MCJ_CTX_IRQ:
Expand All @@ -115,7 +115,7 @@ static int raise_local(struct mce *m)
*/
/*FALL THROUGH*/
case MCJ_CTX_PROCESS:
raise_uncorrected(m, NULL);
raise_exception(m, NULL);
break;
default:
printk(KERN_INFO "Invalid MCE context\n");
Expand All @@ -124,7 +124,7 @@ static int raise_local(struct mce *m)
printk(KERN_INFO "MCE exception done on CPU %d\n", cpu);
} else if (m->status) {
printk(KERN_INFO "Starting machine check poll CPU %d\n", cpu);
raise_corrected(m);
raise_poll(m);
mce_notify_irq();
printk(KERN_INFO "Machine check poll done on CPU %d\n", cpu);
} else
Expand Down

0 comments on commit da954d5

Please sign in to comment.