All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] KVM: PPC: Book3S: fix XIVE migration of pending interrupts
@ 2017-12-12 12:02 ` Cédric Le Goater
  0 siblings, 0 replies; 22+ messages in thread
From: Cédric Le Goater @ 2017-12-12 12:02 UTC (permalink / raw)
  To: kvm-ppc, Paul Mackerras, Benjamin Herrenschmidt
  Cc: linuxppc-dev, Michael Ellerman, Cédric Le Goater

When restoring a pending interrupt, we are setting the Q bit to force
a retrigger in xive_finish_unmask(). But we also need to force an EOI
in this case to reach the same initial state : P=1, Q=0.

This can be done by not setting 'old_p' for pending interrupts which
will inform xive_finish_unmask() that an EOI needs to be sent.

Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---

 Tested with a guest running iozone.

 arch/powerpc/kvm/book3s_xive.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_xive.c b/arch/powerpc/kvm/book3s_xive.c
index bf457843e032..b5e6d227a034 100644
--- a/arch/powerpc/kvm/book3s_xive.c
+++ b/arch/powerpc/kvm/book3s_xive.c
@@ -1558,7 +1558,7 @@ static int xive_set_source(struct kvmppc_xive *xive, long irq, u64 addr)
 
 	/*
 	 * Restore P and Q. If the interrupt was pending, we
-	 * force both P and Q, which will trigger a resend.
+	 * force Q and !P, which will trigger a resend.
 	 *
 	 * That means that a guest that had both an interrupt
 	 * pending (queued) and Q set will restore with only
@@ -1566,7 +1566,7 @@ static int xive_set_source(struct kvmppc_xive *xive, long irq, u64 addr)
 	 * is perfectly fine as coalescing interrupts that haven't
 	 * been presented yet is always allowed.
 	 */
-	if (val & KVM_XICS_PRESENTED || val & KVM_XICS_PENDING)
+	if (val & KVM_XICS_PRESENTED && !(val & KVM_XICS_PENDING))
 		state->old_p = true;
 	if (val & KVM_XICS_QUEUED || val & KVM_XICS_PENDING)
 		state->old_q = true;
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2017-12-22 18:12 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-12 12:02 [PATCH] KVM: PPC: Book3S: fix XIVE migration of pending interrupts Cédric Le Goater
2017-12-12 12:02 ` Cédric Le Goater
2017-12-12 13:15 ` Laurent Vivier
2017-12-12 13:15   ` Laurent Vivier
2017-12-20  8:24 ` Laurent Vivier
2017-12-20  8:24   ` Laurent Vivier
2017-12-22  4:34   ` Michael Ellerman
2017-12-22  4:34     ` Michael Ellerman
2017-12-22  7:54     ` Paul Mackerras
2017-12-22  7:54       ` Paul Mackerras
2017-12-22  7:57       ` Laurent Vivier
2017-12-22  7:57         ` Laurent Vivier
2017-12-22 11:22         ` Michael Ellerman
2017-12-22 11:22           ` Michael Ellerman
2017-12-22 11:22       ` Michael Ellerman
2017-12-22 11:22         ` Michael Ellerman
2017-12-22 11:58         ` Greg Kurz
2017-12-22 11:58           ` Greg Kurz
2017-12-22 12:18           ` Greg Kurz
2017-12-22 12:18             ` Greg Kurz
2017-12-22 11:24 ` Michael Ellerman
2017-12-22 11:24   ` Michael Ellerman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.