[PATCH 1/20] [POWERPC] Reworking machine check handling and Fix 440/440A
Josh Boyer
jwboyer at linux.vnet.ibm.com
Fri Dec 14 06:53:17 EST 2007
On Thu, 13 Dec 2007 18:38:31 +1100
Benjamin Herrenschmidt <benh at kernel.crashing.org> 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.
[snip]
> Index: linux-merge/include/asm-ppc/reg_booke.h
> ===================================================================
> --- linux-merge.orig/include/asm-ppc/reg_booke.h 2007-12-11 16:21:38.000000000 +1100
> +++ linux-merge/include/asm-ppc/reg_booke.h 2007-12-11 16:23:21.000000000 +1100
> @@ -207,7 +207,7 @@
> #define CCR1_TCS 0x00000080 /* Timer Clock Select */
>
> /* Bit definitions for the MCSR. */
> -#ifdef CONFIG_440A
> +#ifdef CONFIG_44x
> #define MCSR_MCS 0x80000000 /* Machine Check Summary */
> #define MCSR_IB 0x40000000 /* Instruction PLB Error */
> #define MCSR_DRB 0x20000000 /* Data Read PLB Error */
This breaks non-44x based arch/ppc platforms. For example ep405 in
arch/ppc fails with:
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c: In function ‘machine_check_440A’:
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:260: error: ‘MCSR_IB’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:260: error: (Each undeclared identifier is reported only once
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:260: error: for each function it appears in.)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:262: error: ‘MCSR_DRB’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:264: error: ‘MCSR_DWB’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:266: error: ‘MCSR_TLBP’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:268: error: ‘MCSR_ICP’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:272: error: ‘MCSR_DCSP’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:274: error: ‘MCSR_DCFP’ undeclared (first use in this function)
/home/jwboyer/src/linux-2.6/arch/ppc/kernel/traps.c:276: error: ‘MCSR_IMPE’ undeclared (first use in this function)
make[2]: *** [arch/ppc/kernel/traps.o] Error 1
The same is true for other platforms as well. Getting closer...
josh
More information about the Linuxppc-dev
mailing list