From: Andy Fleming The Spurious interrupt assignment for OpenPIC was the constant, OPENPIC_VEC_SPURIOUS plus the offset passed in. Due to bugs in some OpenPICs, the end value needed to be 255 on those systems. However, the constant was then chosen to be 239, because offset on most systems is 16. The 85xx has an offset of 64, however, and so this assignment caused lock-ups during boot. The proposed solution is to declare OPENPIC_VEC_SPURIOUS to be 255, and use that value directly, instead of adding the offset to it. Signed-off-by: Tom Rini Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc/syslib/open_pic.c | 8 ++++---- 25-akpm/include/asm-ppc/open_pic.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff -puN arch/ppc/syslib/open_pic.c~ppc32-85xx-spurious-interrupt-bug arch/ppc/syslib/open_pic.c --- 25/arch/ppc/syslib/open_pic.c~ppc32-85xx-spurious-interrupt-bug 2004-09-20 10:35:55.288950928 -0700 +++ 25-akpm/arch/ppc/syslib/open_pic.c 2004-09-20 10:35:55.294950016 -0700 @@ -412,7 +412,7 @@ void __init openpic_init(int offset) /* Initialize the spurious interrupt */ if (ppc_md.progress) ppc_md.progress("openpic: spurious",0x3bd); - openpic_set_spurious(OPENPIC_VEC_SPURIOUS+offset); + openpic_set_spurious(OPENPIC_VEC_SPURIOUS); openpic_disable_8259_pass_through(); #ifdef CONFIG_EPIC_SERIAL_MODE openpic_eicr_set_clk(7); /* Slowest value until we know better */ @@ -865,7 +865,7 @@ openpic_get_irq(struct pt_regs *regs) irq = cirq; openpic_eoi(); } - } else if (irq == OPENPIC_VEC_SPURIOUS + open_pic_irq_offset) + } else if (irq == OPENPIC_VEC_SPURIOUS) irq = -1; return irq; } @@ -988,9 +988,9 @@ int openpic_resume(struct sys_device *sy /* OpenPIC sometimes seem to need some time to be fully back up... */ do { - openpic_set_spurious(OPENPIC_VEC_SPURIOUS+open_pic_irq_offset); + openpic_set_spurious(OPENPIC_VEC_SPURIOUS); } while(openpic_readfield(&OpenPIC->Global.Spurious_Vector, OPENPIC_VECTOR_MASK) - != (OPENPIC_VEC_SPURIOUS + open_pic_irq_offset)); + != OPENPIC_VEC_SPURIOUS); openpic_disable_8259_pass_through(); diff -puN include/asm-ppc/open_pic.h~ppc32-85xx-spurious-interrupt-bug include/asm-ppc/open_pic.h --- 25/include/asm-ppc/open_pic.h~ppc32-85xx-spurious-interrupt-bug 2004-09-20 10:35:55.289950776 -0700 +++ 25-akpm/include/asm-ppc/open_pic.h 2004-09-20 10:35:55.294950016 -0700 @@ -23,7 +23,7 @@ #define OPENPIC_VEC_TIMER 110 /* and up */ #define OPENPIC_VEC_IPI 118 /* and up */ -#define OPENPIC_VEC_SPURIOUS 239 +#define OPENPIC_VEC_SPURIOUS 255 /* OpenPIC IRQ controller structure */ extern struct hw_interrupt_type open_pic; _