From: Michael Mueller <mimu@linux.ibm.com>
To: KVM Mailing List <kvm@vger.kernel.org>
Cc: Linux-S390 Mailing List <linux-s390@vger.kernel.org>,
linux-kernel@vger.kernel.org,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
David Hildenbrand <david@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Halil Pasic <pasic@linux.ibm.com>,
Pierre Morel <pmorel@linux.ibm.com>,
Michael Mueller <mimu@linux.ibm.com>
Subject: [PATCH v7 12/15] KVM: s390: kvm_s390_gisa_clear() now clears the IPM only
Date: Thu, 31 Jan 2019 09:52:43 +0100 [thread overview]
Message-ID: <20190131085247.13826-13-mimu@linux.ibm.com> (raw)
In-Reply-To: <20190131085247.13826-1-mimu@linux.ibm.com>
Function kvm_s390_gisa_clear() now clears the Interruption
Pending Mask of the GISA asap. If the GISA is in the alert
list at this time it stays in the list but is removed by
process_gib_alert_list().
Signed-off-by: Michael Mueller <mimu@linux.ibm.com>
---
arch/s390/kvm/interrupt.c | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
index f37dfb01c63c..341664b94491 100644
--- a/arch/s390/kvm/interrupt.c
+++ b/arch/s390/kvm/interrupt.c
@@ -249,6 +249,25 @@ static inline int gisa_set_iam(struct kvm_s390_gisa *gisa, u8 iam)
return 0;
}
+/**
+ * gisa_clear_ipm - clear the GISA interruption pending mask
+ *
+ * @gisa: gisa to operate on
+ *
+ * Clear the IPM atomically with the next alert address and the IAM
+ * of the GISA unconditionally. All three fields are located in the
+ * first long word of the GISA.
+ */
+static inline void gisa_clear_ipm(struct kvm_s390_gisa *gisa)
+{
+ u64 word, _word;
+
+ do {
+ word = READ_ONCE(gisa->u64.word[0]);
+ _word = word & ~(0xffUL << 24);
+ } while (cmpxchg(&gisa->u64.word[0], word, _word) != word);
+}
+
static inline void gisa_set_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc)
{
set_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gisa);
@@ -2926,8 +2945,7 @@ void kvm_s390_gisa_clear(struct kvm *kvm)
if (!gi->origin)
return;
- memset(gi->origin, 0, sizeof(struct kvm_s390_gisa));
- gi->origin->next_alert = (u32)(u64)gi->origin;
+ gisa_clear_ipm(gi->origin);
VM_EVENT(kvm, 3, "gisa 0x%pK cleared", gi->origin);
}
@@ -2940,7 +2958,8 @@ void kvm_s390_gisa_init(struct kvm *kvm)
gi->origin = &kvm->arch.sie_page2->gisa;
gi->alert.mask = 0;
spin_lock_init(&gi->alert.ref_lock);
- kvm_s390_gisa_clear(kvm);
+ memset(gi->origin, 0, sizeof(struct kvm_s390_gisa));
+ gi->origin->next_alert = (u32)(u64)gi->origin;
VM_EVENT(kvm, 3, "gisa 0x%pK initialized", gi->origin);
}
--
2.13.4
next prev parent reply other threads:[~2019-01-31 8:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-31 8:52 [PATCH v7 00/15] KVM: s390: make use of the GIB Michael Mueller
2019-01-31 8:52 ` [PATCH v7 01/15] KVM: s390: drop obsolete else path Michael Mueller
2019-01-31 8:52 ` [PATCH v7 02/15] KVM: s390: make bitmap declaration consistent Michael Mueller
2019-01-31 8:52 ` [PATCH v7 03/15] KVM: s390: move bitmap idle_mask into arch struct top level Michael Mueller
2019-01-31 12:19 ` Halil Pasic
2019-01-31 8:52 ` [PATCH v7 04/15] KVM: s390: coding style kvm_s390_gisa_init/clear() Michael Mueller
2019-01-31 8:52 ` [PATCH v7 05/15] KVM: s390: use pending_irqs_no_gisa() where appropriate Michael Mueller
2019-01-31 8:52 ` [PATCH v7 06/15] KVM: s390: remove kvm_s390_ from gisa static inline functions Michael Mueller
2019-01-31 8:52 ` [PATCH v7 07/15] KVM: s390: introduce struct kvm_s390_gisa_interrupt Michael Mueller
2019-01-31 8:52 ` [PATCH v7 08/15] s390/cio: add function chsc_sgib() Michael Mueller
2019-01-31 8:52 ` [PATCH v7 09/15] KVM: s390: add the GIB and its related life-cyle functions Michael Mueller
2019-01-31 8:52 ` [PATCH v7 10/15] KVM: s390: add kvm reference to struct sie_page2 Michael Mueller
2019-01-31 8:52 ` [PATCH v7 11/15] KVM: s390: add functions to (un)register GISC with GISA Michael Mueller
2019-01-31 17:41 ` Cornelia Huck
2019-01-31 8:52 ` Michael Mueller [this message]
2019-01-31 14:39 ` [PATCH v7 12/15] KVM: s390: kvm_s390_gisa_clear() now clears the IPM only Halil Pasic
2019-02-05 10:05 ` Pierre Morel
2019-01-31 8:52 ` [PATCH v7 13/15] KVM: s390: add gib_alert_irq_handler() Michael Mueller
2019-02-05 11:38 ` Pierre Morel
2019-02-05 12:52 ` Michael Mueller
2019-01-31 8:52 ` [PATCH v7 14/15] KVM: s390: start using the GIB Michael Mueller
2019-01-31 8:52 ` [PATCH v7 15/15] KVM: s390: fix possible null pointer dereference in pending_irqs() Michael Mueller
2019-01-31 17:47 ` Cornelia Huck
2019-02-05 8:57 ` Christian Borntraeger
2019-02-01 9:36 ` Pierre Morel
2019-01-31 8:52 ` [PATCH v7 15/15] KVM: s390: test for non NULL gisa origin " Michael Mueller
2019-01-31 8:59 ` Michael Mueller
2019-02-06 17:09 ` [PATCH v7 00/15] KVM: s390: make use of the GIB Christian Borntraeger
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=20190131085247.13826-13-mimu@linux.ibm.com \
--to=mimu@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pasic@linux.ibm.com \
--cc=pmorel@linux.ibm.com \
--cc=schwidefsky@de.ibm.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).