[PATCH 1/3] powerpc/xive: Fix trying to "push" an already active pool VP
Benjamin Herrenschmidt
benh at kernel.crashing.org
Wed Apr 11 15:20:31 AEST 2018
On Wed, 2018-04-11 at 15:17 +1000, Benjamin Herrenschmidt wrote:
> When setting up a CPU, we "push" (activate) a pool VP for it.
>
> However it's an error to do so if it already has an active
> pool VP.
>
> This happens when doing soft CPU hotplug on powernv since we
> don't tear down the CPU on unplug. The HW flags the error which
> gets captured by the diagnostics.
>
> Fix this by making sure to "pull" out any already active pool
> first.
>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
CC: stable at vger.kernel.org...
> ---
> arch/powerpc/sysdev/xive/native.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/powerpc/sysdev/xive/native.c b/arch/powerpc/sysdev/xive/native.c
> index d22aeb0b69e1..b48454be5b98 100644
> --- a/arch/powerpc/sysdev/xive/native.c
> +++ b/arch/powerpc/sysdev/xive/native.c
> @@ -389,6 +389,10 @@ static void xive_native_setup_cpu(unsigned int cpu, struct xive_cpu *xc)
> if (xive_pool_vps == XIVE_INVALID_VP)
> return;
>
> + /* Check if pool VP already active, if it is, pull it */
> + if (in_be32(xive_tima + TM_QW2_HV_POOL + TM_WORD2) & TM_QW2W2_VP)
> + in_be64(xive_tima + TM_SPC_PULL_POOL_CTX);
> +
> /* Enable the pool VP */
> vp = xive_pool_vps + cpu;
> pr_debug("CPU %d setting up pool VP 0x%x\n", cpu, vp);
More information about the Linuxppc-dev
mailing list