linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.ibm.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Michael Mueller <mimu@linux.ibm.com>,
	Pierre Morel <pmorel@linux.ibm.com>,
	KVM Mailing List <kvm@vger.kernel.org>,
	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>
Subject: Re: [PATCH v5 10/15] KVM: s390: add functions to (un)register GISC with GISA
Date: Tue, 8 Jan 2019 15:23:57 +0100	[thread overview]
Message-ID: <20190108152357.39fea477@oc2783563651> (raw)
In-Reply-To: <20190108144135.3fe5c23b.cohuck@redhat.com>

On Tue, 8 Jan 2019 14:41:35 +0100
Cornelia Huck <cohuck@redhat.com> wrote:

> On Tue, 8 Jan 2019 14:36:13 +0100
> Halil Pasic <pasic@linux.ibm.com> wrote:
> 
> > On Tue, 8 Jan 2019 11:34:44 +0100
> > Cornelia Huck <cohuck@redhat.com> wrote:
> > 
> > > > >>      
> > > > >>> +	spin_unlock(&kvm->arch.iam_ref_lock);
> > > > >>> +
> > > > >>> +	return gib->nisc;
> > > > >>> +}
> > > > >>> +EXPORT_SYMBOL_GPL(kvm_s390_gisc_register);
> > > > >>> +
> > > > >>> +int kvm_s390_gisc_unregister(struct kvm *kvm, u32 gisc)
> > > > >>> +{
> > > > >>> +	int rc = 0;
> > > > >>> +
> > > > >>> +	if (!kvm->arch.gib_in_use)
> > > > >>> +		return -ENODEV;
> > > > >>> +	if (gisc > MAX_ISC)
> > > > >>> +		return -ERANGE;
> > > > >>> +
> > > > >>> +	spin_lock(&kvm->arch.iam_ref_lock);
> > > > >>> +	if (kvm->arch.iam_ref_count[gisc] == 0) {
> > > > >>> +		rc = -EINVAL;
> > > > >>> +		goto out;
> > > > >>> +	}
> > > > >>> +	kvm->arch.iam_ref_count[gisc]--;
> > > > >>> +	if (kvm->arch.iam_ref_count[gisc] == 0) {
> > > > >>> +		kvm->arch.iam &= ~(0x80 >> gisc);
> > > > >>> +		set_iam(kvm->arch.gisa, kvm->arch.iam);      
> > > > > 
> > > > > Any chance of this function failing here? If yes, would there be any
> > > > > implications?      
> > > > 
> > > > It is the same here.    
> > > 
> > > I'm not sure that I follow: This is the reverse operation
> > > (unregistering the gisc). Can we rely on get_ipm() to do any fixup
> > > later? Is that a problem for the caller?  
> > 
> > IMHO gib alerts are all about not loosing initiative. I.e. avoiding
> > substantially delayed delivery of interrupts due to vCPUs in wait
> > state.
> > 
> > Thus we must avoid letting go before setting up stuff (gisa.iam under
> > consideration of gisa ipm, gisa.next_alert, and gib.alert_list_origin)
> > so that we can react on the next interrupt (if necessary).
> > 
> > On the other hand, getting more gisa alerts than necessary is not
> > fatal -- better avoided if not too much hassle of course.
> 
> Yes, unless the caller does not expect any more alerts after
> unregistering (I guess that's what you're saying?)

Just to make sure, the caller, which I guess would probably be some
sort of a driver, does not process the alerts. It is kvm that does.

But you are right, the properties of unregister need do be considered in
the cleanup code (e.g. resets). Sure, we must avoid the
process_gib_alert_list() (which is common, i.e. ain't tied to any
VM) poking dead GISAs. Frankly, I've my hands full with the normal
operation scenario, and I did not pay much attention to the cleanup yet. 

> 
> > 
> > Bottom line is, while it may be critical that the IAM changes implied
> > by register take place immediately, unregister is a different story.
> 
> It does feel a bit weird, though. But maybe I just have trouble
> grasping the design :/
> 

You are on the only one. I have extreme difficulties following some of
the discussion here -- despite of the fact that I have quite some
confidence in my understanding of the GISA/GIB architecture.

Regards,
Halil


  reply	other threads:[~2019-01-08 14:24 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-19 19:17 [PATCH v5 00/15] KVM: s390: make use of the GIB Michael Mueller
2018-12-19 19:17 ` [PATCH v5 01/15] KVM: s390: unregister debug feature on failing arch init Michael Mueller
2018-12-19 20:10   ` Cornelia Huck
2018-12-20  7:49     ` Michael Mueller
2018-12-20  7:55       ` Christian Borntraeger
2018-12-19 19:17 ` [PATCH v5 02/15] KVM: s390: coding style issue kvm_s390_gisa_init/clear() Michael Mueller
2018-12-19 20:13   ` Cornelia Huck
2019-01-02 16:50   ` Pierre Morel
2019-01-07 16:16     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 03/15] KVM: s390: factor out nullify_gisa() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 04/15] KVM: s390: use pending_irqs_no_gisa() where appropriate Michael Mueller
2018-12-19 20:16   ` Cornelia Huck
2019-01-02 16:52   ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 05/15] KVM: s390: unify pending_irqs() and pending_irqs_no_gisa() Michael Mueller
2018-12-20 10:09   ` Michael Mueller
2018-12-20 11:06   ` Cornelia Huck
2018-12-20 11:49     ` Michael Mueller
2018-12-20 12:15       ` Halil Pasic
2018-12-20 12:21       ` Cornelia Huck
2018-12-20 12:33         ` Michael Mueller
2018-12-20 15:43           ` pierre morel
2018-12-20 16:40             ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 06/15] KVM: s390: remove prefix kvm_s390_gisa_ from static inline functions Michael Mueller
2018-12-20 12:24   ` Cornelia Huck
2018-12-20 14:37     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 07/15] s390/cio: add function chsc_sgib() Michael Mueller
2018-12-19 19:17 ` [PATCH v5 08/15] KVM: s390: add the GIB and its related life-cyle functions Michael Mueller
2018-12-20 12:28   ` Cornelia Huck
2019-01-03  9:49   ` Pierre Morel
2019-01-07 16:25     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 09/15] KVM: s390: add kvm reference to struct sie_page2 Michael Mueller
2018-12-19 19:17 ` [PATCH v5 10/15] KVM: s390: add functions to (un)register GISC with GISA Michael Mueller
2018-12-20 14:32   ` Michael Mueller
2019-01-02 17:29   ` Pierre Morel
2019-01-02 18:26     ` Pierre Morel
2019-01-04 13:19     ` Cornelia Huck
2019-01-07 17:38       ` Michael Mueller
2019-01-08 10:34         ` Cornelia Huck
2019-01-08 13:07           ` Michael Mueller
2019-01-08 13:35             ` Cornelia Huck
2019-01-08 13:36           ` Halil Pasic
2019-01-08 13:41             ` Cornelia Huck
2019-01-08 14:23               ` Halil Pasic [this message]
2018-12-19 19:17 ` [PATCH v5 11/15] KVM: s390: restore IAM in get_ipm() when IPM is clean Michael Mueller
2019-01-03 15:06   ` Pierre Morel
2019-01-07 18:17     ` Michael Mueller
2019-01-06 23:32   ` Halil Pasic
2019-01-08  8:06     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 12/15] KVM: s390: do not restore IAM immediately before SIE entry Michael Mueller
2019-01-03 15:00   ` Pierre Morel
2019-01-07 17:53     ` Michael Mueller
2018-12-19 19:17 ` [PATCH v5 13/15] KVM: s390: add function process_gib_alert_list() Michael Mueller
2019-01-03 14:43   ` Pierre Morel
2019-01-07 19:18     ` Michael Mueller
2019-01-08 14:27       ` Halil Pasic
2019-01-09 11:39       ` Pierre Morel
2019-01-07 19:19     ` Michael Mueller
2019-01-08  6:37       ` Heiko Carstens
2019-01-08 12:59   ` Halil Pasic
2019-01-08 15:21     ` Michael Mueller
2019-01-08 18:34       ` Halil Pasic
2019-01-09 12:14       ` Pierre Morel
2019-01-09 13:10         ` Halil Pasic
2019-01-09 14:49           ` Pierre Morel
2019-01-09 16:18             ` Halil Pasic
2018-12-19 19:17 ` [PATCH v5 14/15] KVM: s390: add and wire function gib_alert_irq_handler() Michael Mueller
2019-01-03 15:16   ` Pierre Morel
2019-01-08 10:06     ` Michael Mueller
2019-01-09 12:35       ` Pierre Morel
2018-12-19 19:17 ` [PATCH v5 15/15] KVM: s390: start using the GIB Michael Mueller
2019-01-02 17:45   ` Pierre Morel
2019-01-08  9:03     ` Michael Mueller

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=20190108152357.39fea477@oc2783563651 \
    --to=pasic@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=mimu@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).