[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