APPLIED: [PATCH] [bionic] powerpc/xive: Fix trying to "push" an already active pool VP

Kleber Souza kleber.souza at canonical.com
Wed Apr 18 08:04:14 UTC 2018


On 04/12/18 17:17, Breno Leitao wrote:
> From: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> 
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1763386
> 
> 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>
> Link: https://patchwork.ozlabs.org/patch/897035/
> Signed-off-by: Breno Leitao <breno.leitao at gmail.com>
> 
> diff --git a/arch/powerpc/sysdev/xive/native.c b/arch/powerpc/sysdev/xive/native.c
> index ebc244b08d67..0f89ee557b04 100644
> --- a/arch/powerpc/sysdev/xive/native.c
> +++ b/arch/powerpc/sysdev/xive/native.c
> @@ -388,6 +388,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);
> 

This patch has already been applied to bionic/master-next branch:
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/bionic/commit/?h=master-next&id=78618bd6ea5c687560a4c7315762020bc6d7c7ce


Thanks,
Kleber




More information about the kernel-team mailing list