[PATCH] powerpc/pseries: correctly track irq state in default idle

Michael Ellerman patch-notifications at ellerman.id.au
Thu Sep 19 20:25:56 AEST 2019


On Tue, 2019-09-10 at 22:52:44 UTC, Nathan Lynch wrote:
> prep_irq_for_idle() is intended to be called before entering
> H_CEDE (and it is used by the pseries cpuidle driver). However the
> default pseries idle routine does not call it, leading to mismanaged
> lazy irq state when the cpuidle driver isn't in use. Manifestations of
> this include:
> 
> * Dropped IPIs in the time immediately after a cpu comes
>   online (before it has installed the cpuidle handler), making the
>   online operation block indefinitely waiting for the new cpu to
>   respond.
> 
> * Hitting this WARN_ON in arch_local_irq_restore():
> 	/*
> 	 * We should already be hard disabled here. We had bugs
> 	 * where that wasn't the case so let's dbl check it and
> 	 * warn if we are wrong. Only do that when IRQ tracing
> 	 * is enabled as mfmsr() can be costly.
> 	 */
> 	if (WARN_ON_ONCE(mfmsr() & MSR_EE))
> 		__hard_irq_disable();
> 
> Call prep_irq_for_idle() from pseries_lpar_idle() and honor its
> result.
> 
> Fixes: 363edbe2614a ("powerpc: Default arch idle could cede processor on pseries")
> Signed-off-by: Nathan Lynch <nathanl at linux.ibm.com>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/92c94dfb69e350471473fd3075c74bc68150879e

cheers


More information about the Linuxppc-dev mailing list