Message ID | 20130826193156.2855.85412.stgit@mars (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Tue, Aug 27, 2013 at 01:01:56AM +0530, Mahesh J Salgaonkar wrote: > From: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> > > This patch adds the early machine check function pointer in cputable for > CPU specific early machine check handling. The early machine handle routine > will be called in real mode to handle SLB and TLB errors. This patch just > sets up a mechanism invoke CPU specific handler. The subsequent patches > will populate the function pointer. > > Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> Your patch description should talk about how this new hook is different from the existing machine_check hook and why you need a new one. Apart from that: Acked-by: Paul Mackerras <paulus@samba.org>
diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index 6f3887d..d8c098e 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h @@ -90,6 +90,13 @@ struct cpu_spec { * if the error is fatal, 1 if it was fully recovered and 0 to * pass up (not CPU originated) */ int (*machine_check)(struct pt_regs *regs); + + /* + * Processor specific early machine check handler which is + * called in real mode to handle SLB and TLB errors. + */ + long (*machine_check_early)(struct pt_regs *regs); + }; extern struct cpu_spec *cur_cpu_spec; diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index e8d6bf1..8b0a946 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -292,8 +292,11 @@ void system_reset_exception(struct pt_regs *regs) */ long machine_check_early(struct pt_regs *regs) { - /* TODO: handle/decode machine check reason */ - return 0; + long handled = 0; + + if (cur_cpu_spec && cur_cpu_spec->machine_check_early) + handled = cur_cpu_spec->machine_check_early(regs); + return handled; } #endif