Subject: Re: [PATCH 4/25] powerpc: Reworking machine check handling and Fix 440/440A

From: Josh Boyer <[email-masked]>
Date: Mon, 10 Dec 2007 11:59:26 -0600

On Thu, 06 Dec 2007 19:00:03 +1100
Benjamin Herrenschmidt <[email-masked]> wrote:

> This adds a cputable function pointer for the CPU-side machine
> check handling. The semantic is still the same as the old one,
> the one in ppc_md. overrides the one in cputable, though
> ultimately we'll want to change that so the CPU gets first.
> 
> 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.

This breaks ARCH=ppc builds.  Unfortunately, that tree shares the
cputable.[ch] files, but has it's own traps.c.  Which means you get
lots of nice undefined references like below for example:

arch/powerpc/kernel/built-in.o:(.init.data+0x44): undefined reference to `machine_check_4xx'
arch/powerpc/kernel/built-in.o:(.init.data+0x8c): undefined reference to `machine_check_4xx'
arch/powerpc/kernel/built-in.o:(.init.data+0xd4): undefined reference to `machine_check_4xx'

Because the cputable entries for the processors are setting the .machine_check function and it's never built.

I'm not sure which would be easier, making arch/ppc use traps.c from arch/powerpc, or adding similar functionality there.

josh