aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@au1.ibm.com>2014-02-04 16:09:23 +1100
committerCrístian Viana <vianac@linux.vnet.ibm.com>2014-02-04 21:33:37 -0200
commit8733f0d760e5c50929312778d9375d91d6e61371 (patch)
tree7f6de96a0ae955eb6d4a4a2d5aa47666304f57c8
parent6f7a6dcaeea1ff9957a24ffc8efc4396079421f9 (diff)
downloadpowerkvm-8733f0d760e5c50929312778d9375d91d6e61371.tar.gz
powerpc/powernv: Clear IPI flag when flushing interrupts
icp_native_flush_interrupt() function is supposed to clear a pending interrupt, like local_irq_enable(); local_irq_disable() would, but without calling generic code. Unfortunately it missed clearing the "IPI pending" flag in the PACA (local_paca->kvm_hstate.host_ipi). The effect of this flag being set is that secondary CPU threads won't go into the KVM guest, leading to messages like: kvmppc_wait_for_nap timeout 0 1 when a KVM HV guest is run. This fixes it by adding a call to kvmppc_set_host_ipi to clear the flag. This fixes BZ 103513. Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--arch/powerpc/sysdev/xics/icp-native.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/xics/icp-native.c b/arch/powerpc/sysdev/xics/icp-native.c
index 8a6d9e008b34f..48b0667e3f355 100644
--- a/arch/powerpc/sysdev/xics/icp-native.c
+++ b/arch/powerpc/sysdev/xics/icp-native.c
@@ -161,7 +161,9 @@ void icp_native_flush_interrupt(void)
return;
if (vec == XICS_IPI) {
/* Clear pending IPI */
- icp_native_set_qirr(smp_processor_id(), 0xff);
+ int cpu = smp_processor_id();
+ kvmppc_set_host_ipi(cpu, 0);
+ icp_native_set_qirr(cpu, 0xff);
} else {
pr_err("XICS: hw interrupt 0x%x to offline cpu, disabling\n",
vec);