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 10/18] s390x/flic: implement qemu_s390_clear_io_flic()
Date: Mon, 29 Jan 2018 13:56:15 +0100	[thread overview]
Message-ID: <20180129125623.21729-11-david@redhat.com> (raw)
In-Reply-To: <20180129125623.21729-1-david@redhat.com>

Now that we have access to the io interrupts, we can implement
clear_io_irq() for TCG.

Signed-off-by: David Hildenbrand <david@redhat.com>
---
 hw/intc/s390_flic.c | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c
index 928bdc3037..cb216de9ba 100644
--- a/hw/intc/s390_flic.c
+++ b/hw/intc/s390_flic.c
@@ -79,8 +79,35 @@ static void qemu_s390_release_adapter_routes(S390FLICState *fs,
 static int qemu_s390_clear_io_flic(S390FLICState *fs, uint16_t subchannel_id,
                            uint16_t subchannel_nr)
 {
-    /* Fixme TCG */
-    return -ENOSYS;
+    QEMUS390FLICState *flic  = QEMU_S390_FLIC(fs);
+    QEMUS390FlicIO *cur, *next;
+    uint8_t isc;
+
+    g_assert(qemu_mutex_iothread_locked());
+    if (!(flic->pending & FLIC_PENDING_IO)) {
+        return 0;
+    }
+
+    /* check all iscs */
+    for (isc = 0; isc < 8; isc++) {
+        if (QLIST_EMPTY(&flic->io[isc])) {
+            continue;
+        }
+
+        /* search and delete any matching one */
+        QLIST_FOREACH_SAFE(cur, &flic->io[isc], next, next) {
+            if (cur->id == subchannel_id && cur->nr == subchannel_nr) {
+                QLIST_REMOVE(cur, next);
+                g_free(cur);
+            }
+        }
+
+        /* update our indicator bit */
+        if (QLIST_EMPTY(&flic->io[isc])) {
+            flic->pending &= ~ISC_TO_PENDING_IO(isc);
+        }
+    }
+    return 0;
 }
 
 static int qemu_s390_modify_ais_mode(S390FLICState *fs, uint8_t isc,
-- 
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 ` [Qemu-devel] [PATCH v3 07/18] s390x/tcg: tolerate wrong wakeups due to floating interrupts David Hildenbrand
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 ` David Hildenbrand [this message]
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-11-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).