[RFC/PATCH 5/14] powerpc: Fix 440/440A machine check handling
Josh Boyer
jwboyer at linux.vnet.ibm.com
Thu Nov 22 00:12:40 EST 2007
On Wed, 21 Nov 2007 17:16:24 +1100
Benjamin Herrenschmidt <benh at kernel.crashing.org> wrote:
> This removes CONFIG_440A which was a problem for multiplatform
> kernels and instead fixes up the IVOR at runtime from a setup_cpu
> function. The "A" version of the machine check also tweaks the
> regs->trap value to differenciate the 2 versions at the C level.
>
<snip>
> void machine_check_exception(struct pt_regs *regs)
> {
> @@ -463,8 +489,20 @@ void machine_check_exception(struct pt_r
> /* See if any machine dependent calls */
> if (ppc_md.machine_check_exception)
> recover = ppc_md.machine_check_exception(regs);
> - else
> - recover = generic_machine_check_exception(regs);
> + else {
> +#ifdef CONFIG_4xx
> + if (IS_MCHECK_EXC(regs))
> + recover = decode_machine_check_4xxA(regs);
> + else
> + recover = decode_machine_check_4xx(regs);
> +#elif defined (CONFIG_E500)
> + recover = decode_machine_check_e500(regs);
> +#elif defined (CONFIG_E200)
> + recover = decode_machine_check_e200(regs);
> +#else
> + recover = decode_machine_check_generic(regs);
> +#endif
Why didn't you just add a ppc_md.machine_check_exception to the
effected boards? Then you could have gotten rid of the ifdefs all
together.
josh
More information about the Linuxppc-dev
mailing list