mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-03-04 18:51:03 +00:00
powerpc/xive: Fix trying to "push" an already active pool VP
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. Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE interrupt controller") Cc: stable@vger.kernel.org # v4.12+ Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
9dfbf78e41
commit
b32e56e5a8
@ -389,6 +389,10 @@ static void xive_native_setup_cpu(unsigned int cpu, struct xive_cpu *xc)
|
|||||||
if (xive_pool_vps == XIVE_INVALID_VP)
|
if (xive_pool_vps == XIVE_INVALID_VP)
|
||||||
return;
|
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 */
|
/* Enable the pool VP */
|
||||||
vp = xive_pool_vps + cpu;
|
vp = xive_pool_vps + cpu;
|
||||||
pr_debug("CPU %d setting up pool VP 0x%x\n", cpu, vp);
|
pr_debug("CPU %d setting up pool VP 0x%x\n", cpu, vp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user