summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2017-10-04 11:15:04 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2017-10-04 22:01:15 +1100
commit74f1282114acc7d67e25745efe200f020f823c8a (patch)
treebb0c15e51baeb7e5bf9144f8e2c72443ae839de6 /arch/powerpc/sysdev
parent070e004912fed099263408bf2ff1bbc6926abe2e (diff)
downloadlinux-74f1282114acc7d67e25745efe200f020f823c8a.tar.gz
linux-74f1282114acc7d67e25745efe200f020f823c8a.tar.bz2
linux-74f1282114acc7d67e25745efe200f020f823c8a.zip
powerpc/xive: Fix IPI reset
When resetting an IPI, hw_ipi should also be set to zero. Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller") Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r--arch/powerpc/sysdev/xive/spapr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/sysdev/xive/spapr.c b/arch/powerpc/sysdev/xive/spapr.c
index f24a70bc6855..d9c4c9366049 100644
--- a/arch/powerpc/sysdev/xive/spapr.c
+++ b/arch/powerpc/sysdev/xive/spapr.c
@@ -431,7 +431,11 @@ static int xive_spapr_get_ipi(unsigned int cpu, struct xive_cpu *xc)
static void xive_spapr_put_ipi(unsigned int cpu, struct xive_cpu *xc)
{
+ if (!xc->hw_ipi)
+ return;
+
xive_irq_bitmap_free(xc->hw_ipi);
+ xc->hw_ipi = 0;
}
#endif /* CONFIG_SMP */