--- 2618-rc1/arch/powerpc/platforms/pseries/xics.c.orig 2006-07-08 11:47:58.000000000 -0700 +++ 2618-rc1/arch/powerpc/platforms/pseries/xics.c 2006-07-08 11:47:07.000000000 -0700 @@ -783,6 +783,14 @@ void xics_teardown_cpu(int secondary) xics_set_cpu_priority(cpu, 0); /* + * Clear IPI + */ + if (firmware_has_feature(FW_FEATURE_LPAR)) + lpar_qirr_info(cpu, 0xff); + else + direct_qirr_info(cpu, 0xff); + + /* * we need to EOI the IPI if we got here from kexec down IPI * * probably need to check all the other interrupts too @@ -795,7 +803,7 @@ void xics_teardown_cpu(int secondary) return; desc = get_irq_desc(ipi); if (desc->chip && desc->chip->eoi) - desc->chip->eoi(XICS_IPI); + desc->chip->eoi(ipi); /* * Some machines need to have at least one cpu in the GIQ,