Subject: Re: [PATCH] powerpc: EOI and clear IPI fix in xics_teardown_cpu()

From: Haren Myneni <[email-masked]>
Date: Sat, 08 Jul 2006 19:17:58 -0700

Benjamin Herrenschmidt wrote:

>On Sat, 2006-07-08 at 18:28 -0700, Haren Myneni wrote:
>  
>
>>If OK, please sent this patch to upstream.
>>
>>Thanks
>>Haren
>>
>>When invoked kdump boot, plpar_eoi() call is getting failed and calling 
>>panic().
>>Kernel panic - not syncing: bad return code EOI - rc = -4, value=ff000000
>>
>>The issue is with the desc->chip->eoi(XICS_IPI) in xics_teardown_cpu(). 
>>Instead of passing the virq to desc->chip->eoi(), XICS_IPI is used. 
>>Also, clear IPI in xics_teardown_cpu() got removed recently (in 
>>2.6.17-git25).  Noticed in some crash dump cases (Ex: initiate kdump 
>>boot using soft-reset and xmon is enabled), IPI is not cleared for some 
>>CPU(s) before starting the kdump boot. Hence, causing the kdump boot 
>>failure.
>>    
>>
>
>It's already fixed in my latest patch that fixes some issues with the
>new irq rework. Hopefully, paul will send the patch upstream tomorrow
>after we had a chance to test it a bit more.
>
>Cheers,
>Ben
>
>  
>
Ok, Are you talking about the patch posted 
http://ozlabs.org/pipermail/linuxppc-dev/2006-July/024350.html? Sorry, I 
did not notice it before I posted. Yes, it is fixed passing proper ipi 
value to desc->chip->eoi(). But, we also to need to clear IPI  in 
xics_teardown_cpu(). 
 
Thanks
Haren

--- 2618-rc1/arch/powerpc/platforms/pseries/xics.c.orig	2006-07-08 13:14:29.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