qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: qemu-s390x@nongnu.org, qemu-devel@nongnu.org
Cc: Christian Borntraeger <borntraeger@de.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Richard Henderson <rth@twiddle.net>,
	Alexander Graf <agraf@suse.de>, Thomas Huth <thuth@redhat.com>,
	David Hildenbrand <david@redhat.com>
Subject: [Qemu-devel] [PATCH v3 07/18] s390x/tcg: tolerate wrong wakeups due to floating interrupts
Date: Mon, 29 Jan 2018 13:56:12 +0100	[thread overview]
Message-ID: <20180129125623.21729-8-david@redhat.com> (raw)
In-Reply-To: <20180129125623.21729-1-david@redhat.com>

This is a preparation for floating interrupt support and only applies to
MTTCG, single threaded TCG works just fine. If a floating interrupt wakes
up a VCPU and the CPU thinks it can run (clearing cs->halted), at
the point where the interrupt would be delivered, already another VCPU
might have picked up the interrupt, resulting in a wakeup without an
interrupt (executing wrong code).

It is wrong to let the VCPU continue to execute (the WAIT PSW). Instead,
we have to put the VCPU back to sleep.

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 target/s390x/excp_helper.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c
index 0cbc4051d1..23447af942 100644
--- a/target/s390x/excp_helper.c
+++ b/target/s390x/excp_helper.c
@@ -503,6 +503,11 @@ bool s390_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
             s390_cpu_do_interrupt(cs);
             return true;
         }
+        if (env->psw.mask & PSW_MASK_WAIT) {
+            /* Woken up because of a floating interrupt but it has already
+             * been delivered. Go back to sleep. */
+            cpu_interrupt(CPU(cpu), CPU_INTERRUPT_HALT);
+        }
     }
     return false;
 }
-- 
2.14.3

  parent reply	other threads:[~2018-01-29 12:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-29 12:56 [Qemu-devel] [PATCH v3 00/18] s390x: flic rework, tcg flic support and STSI David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 01/18] s390x/tcg: deliver multiple interrupts in a row David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 02/18] s390x/flic: simplify flic initialization David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 03/18] s390x/tcg: simplify lookup of flic David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 04/18] s390x/tcg: simplify machine check handling David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 05/18] s390x/flic: factor out injection of floating interrupts David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 06/18] s390x/flic: no need to call s390_io_interrupt() from flic David Hildenbrand
2018-01-29 12:56 ` David Hildenbrand [this message]
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 08/18] s390x/flic: make floating interrupts on TCG actually floating David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 09/18] s390x/tcg: implement TEST PENDING INTERRUPTION David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 10/18] s390x/flic: implement qemu_s390_clear_io_flic() David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 11/18] s390x/flic: optimize CPU wakeup for TCG David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 12/18] s390x: fix size + content of STSI blocks David Hildenbrand
2018-02-01 12:40   ` Cornelia Huck
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 13/18] s390x/tcg: STSI overhaul David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 14/18] s390x/tcg: remove SMP warning David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 15/18] configure: s390x supports mttcg now David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 16/18] s390x/tcg: cache the qemu flic in a central function David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 17/18] s390x/kvm: cache the kvm " David Hildenbrand
2018-01-29 12:56 ` [Qemu-devel] [PATCH v3 18/18] s390x/flic: cache the common flic class " David Hildenbrand
2018-02-01 13:28 ` [Qemu-devel] [PATCH v3 00/18] s390x: flic rework, tcg flic support and STSI Cornelia Huck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180129125623.21729-8-david@redhat.com \
    --to=david@redhat.com \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).