From d5cc303f7c183f2633694cf49b2149f11fef6ae4 Mon Sep 17 00:00:00 2001 From: Haren Myneni Date: Wed, 5 Apr 2006 21:10:18 -0600 Subject: [PATCH] --- yaml --- r: 28663 b: refs/heads/master c: 81bbbe92949b069c101e13d3acbd4bc7d088cb79 h: refs/heads/master i: 28661: f3365e2cb4d1dfa0e227eb645a493b6ba0b32d36 28659: 7af9f09b16cc1304e822838fea75a715ce4658df 28655: 5bb5c45749fceb6102842c152c61b5fb0070b958 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/platforms/pseries/xics.c | 23 ++++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index e78bac11fe82..96296f54a533 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6c1a9081080c6c4658acf2a06d851feb2855933 +refs/heads/master: 81bbbe92949b069c101e13d3acbd4bc7d088cb79 diff --git a/trunk/arch/powerpc/platforms/pseries/xics.c b/trunk/arch/powerpc/platforms/pseries/xics.c index 2d60ea30fed6..6c17df5814b4 100644 --- a/trunk/arch/powerpc/platforms/pseries/xics.c +++ b/trunk/arch/powerpc/platforms/pseries/xics.c @@ -641,23 +641,26 @@ void xics_teardown_cpu(int secondary) ops->cppr_info(cpu, 0x00); iosync(); + /* Clear IPI */ + ops->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 + * should we be flagging idle loop instead? + * or creating some task to be scheduled? + */ + ops->xirr_info_set(cpu, XICS_IPI); + /* * Some machines need to have at least one cpu in the GIQ, * so leave the master cpu in the group. */ - if (secondary) { - /* - * we need to EOI the IPI if we got here from kexec down IPI - * - * probably need to check all the other interrupts too - * should we be flagging idle loop instead? - * or creating some task to be scheduled? - */ - ops->xirr_info_set(cpu, XICS_IPI); + if (secondary) rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE, (1UL << interrupt_server_size) - 1 - default_distrib_server, 0); - } } #ifdef CONFIG_HOTPLUG_CPU