From: Cornelia Huck <cohuck@redhat.com> To: Eric Farman <farman@linux.ibm.com> Cc: linux-s390@vger.kernel.org, Alex Williamson <alex.williamson@redhat.com>, Pierre Morel <pmorel@linux.ibm.com>, kvm@vger.kernel.org, Farhan Ali <alifm@linux.ibm.com>, qemu-devel@nongnu.org, Halil Pasic <pasic@linux.ibm.com>, qemu-s390x@nongnu.org Subject: Re: [PATCH v2 2/5] vfio-ccw: concurrent I/O handling Date: Tue, 29 Jan 2019 19:53:03 +0100 [thread overview] Message-ID: <20190129195303.72d5fbc4.cohuck@redhat.com> (raw) In-Reply-To: <691e91ea-df02-1455-93ed-7e8369fceec2@linux.ibm.com> On Tue, 29 Jan 2019 09:14:40 -0500 Eric Farman <farman@linux.ibm.com> wrote: > On 01/29/2019 05:20 AM, Cornelia Huck wrote: > > On Mon, 28 Jan 2019 16:48:10 -0500 > > Eric Farman <farman@linux.ibm.com> wrote: > > > >> On 01/28/2019 02:15 PM, Halil Pasic wrote: > >>> On Mon, 28 Jan 2019 18:09:48 +0100 > >>> Cornelia Huck <cohuck@redhat.com> wrote: > > > >> I guess if > >>> the ssch() returns with non cc == 0 the CP_PENDING ---IRQ---> IDLE > >>> transition > >>> won't take place. And I guess the IRQ is a final one. > >> > >> Yes this is the one point I hadn't seen explicitly stated. We shouldn't > >> remain in state=BUSY if the ssch got cc!=0, and probably return to IDLE > >> when processing the failure. In Connie's response (Mon, 28 Jan 2019 > >> 18:24:24 +0100) to my note, she expressed some agreement to that. > > > > Yes, I think that's what should happen. > > > > > >>>> state for I/O) > >>>> (normal ssch) > >>>> > >>>> BUSY --- IO_REQ ---> return -EAGAIN, stay in BUSY > >>>> (user space is supposed to retry, as we'll eventually progress from > >>>> BUSY) > >>>> > >>>> CP_PENDING --- IO_REQ ---> return -EBUSY, stay in CP_PENDING > >>>> (user space is supposed to map this to the appropriate cc for the guest) > >>> > >>> From this it seems you don't intend to issue the second requested ssch() > >>> any more (and don't want to do any translation). Is that right? (If it > >>> is, that what I was asking for for a while, but then it's a pity for the > >>> retries.) > >>> > >>>> > >>>> IDLE --- ASYNC_REQ ---> IDLE > >>>> (user space is welcome to do anything else right away) > >>> > >>> Your idea is to not issue a requested hsch() if we think we are IDLE > >>> it seems. Do I understand this right? We would end up with a different > >>> semantic for hsch()/and csch() (compared to PoP) in the guest with this > >>> (AFAICT). > >>> > >>>> > >>>> BUSY --- ASYNC_REQ ---> return -EAGAIN, stay in BUSY > >>>> (user space is supposed to retry, as above) > >>>> > >>>> CP_PENDING --- ASYNC_REQ ---> return success, stay in CP_PENDING > >>>> (the interrupt will get us out of CP_PENDING eventually) > >>> > >>> Issue (c|h)sch() is an action that is done on this internal > >>> transition (within CP_PENDING). > >> > >> These three do read like CSCH/HSCH are subject to the same rules as > >> SSCH, when in fact they would be (among other reasons) issued to clean > >> up a lost interrupt from a previous SSCH. So maybe return -EAGAIN on > >> state=BUSY (don't race ourselves with the start), but issue to hardware > >> if CP_PENDING. > > > > I think there are some devices which require a certain hsch/csch > > sequence during device bringup, so it's not just cleaning up after a > > ssch. > > Ah, yes. > > Therefore, we should always try to do the requested hsch/csch, > > unless things like "we're in the process of translating a cp, and can't > > deal with another request right now" prevent it. > > Agreed. I'm in support of all of this. Cool. In the meantime, I've coded the changes, and I think the result looks reasonable. I'll give it some testing and then send it out; it's probably easier to discuss it with some code in front of us. [The QEMU part should not need any changes.] > > > > >> > >> If we get an async request when state=IDLE, then maybe just issue it for > >> fun, as if it were an SSCH? > > > > For fun, but mainly because the guest wants it :) > > > > Well, that too. ;-) >
WARNING: multiple messages have this Message-ID (diff)
From: Cornelia Huck <cohuck@redhat.com> To: Eric Farman <farman@linux.ibm.com> Cc: Halil Pasic <pasic@linux.ibm.com>, Farhan Ali <alifm@linux.ibm.com>, Pierre Morel <pmorel@linux.ibm.com>, linux-s390@vger.kernel.org, kvm@vger.kernel.org, qemu-devel@nongnu.org, qemu-s390x@nongnu.org, Alex Williamson <alex.williamson@redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 2/5] vfio-ccw: concurrent I/O handling Date: Tue, 29 Jan 2019 19:53:03 +0100 [thread overview] Message-ID: <20190129195303.72d5fbc4.cohuck@redhat.com> (raw) In-Reply-To: <691e91ea-df02-1455-93ed-7e8369fceec2@linux.ibm.com> On Tue, 29 Jan 2019 09:14:40 -0500 Eric Farman <farman@linux.ibm.com> wrote: > On 01/29/2019 05:20 AM, Cornelia Huck wrote: > > On Mon, 28 Jan 2019 16:48:10 -0500 > > Eric Farman <farman@linux.ibm.com> wrote: > > > >> On 01/28/2019 02:15 PM, Halil Pasic wrote: > >>> On Mon, 28 Jan 2019 18:09:48 +0100 > >>> Cornelia Huck <cohuck@redhat.com> wrote: > > > >> I guess if > >>> the ssch() returns with non cc == 0 the CP_PENDING ---IRQ---> IDLE > >>> transition > >>> won't take place. And I guess the IRQ is a final one. > >> > >> Yes this is the one point I hadn't seen explicitly stated. We shouldn't > >> remain in state=BUSY if the ssch got cc!=0, and probably return to IDLE > >> when processing the failure. In Connie's response (Mon, 28 Jan 2019 > >> 18:24:24 +0100) to my note, she expressed some agreement to that. > > > > Yes, I think that's what should happen. > > > > > >>>> state for I/O) > >>>> (normal ssch) > >>>> > >>>> BUSY --- IO_REQ ---> return -EAGAIN, stay in BUSY > >>>> (user space is supposed to retry, as we'll eventually progress from > >>>> BUSY) > >>>> > >>>> CP_PENDING --- IO_REQ ---> return -EBUSY, stay in CP_PENDING > >>>> (user space is supposed to map this to the appropriate cc for the guest) > >>> > >>> From this it seems you don't intend to issue the second requested ssch() > >>> any more (and don't want to do any translation). Is that right? (If it > >>> is, that what I was asking for for a while, but then it's a pity for the > >>> retries.) > >>> > >>>> > >>>> IDLE --- ASYNC_REQ ---> IDLE > >>>> (user space is welcome to do anything else right away) > >>> > >>> Your idea is to not issue a requested hsch() if we think we are IDLE > >>> it seems. Do I understand this right? We would end up with a different > >>> semantic for hsch()/and csch() (compared to PoP) in the guest with this > >>> (AFAICT). > >>> > >>>> > >>>> BUSY --- ASYNC_REQ ---> return -EAGAIN, stay in BUSY > >>>> (user space is supposed to retry, as above) > >>>> > >>>> CP_PENDING --- ASYNC_REQ ---> return success, stay in CP_PENDING > >>>> (the interrupt will get us out of CP_PENDING eventually) > >>> > >>> Issue (c|h)sch() is an action that is done on this internal > >>> transition (within CP_PENDING). > >> > >> These three do read like CSCH/HSCH are subject to the same rules as > >> SSCH, when in fact they would be (among other reasons) issued to clean > >> up a lost interrupt from a previous SSCH. So maybe return -EAGAIN on > >> state=BUSY (don't race ourselves with the start), but issue to hardware > >> if CP_PENDING. > > > > I think there are some devices which require a certain hsch/csch > > sequence during device bringup, so it's not just cleaning up after a > > ssch. > > Ah, yes. > > Therefore, we should always try to do the requested hsch/csch, > > unless things like "we're in the process of translating a cp, and can't > > deal with another request right now" prevent it. > > Agreed. I'm in support of all of this. Cool. In the meantime, I've coded the changes, and I think the result looks reasonable. I'll give it some testing and then send it out; it's probably easier to discuss it with some code in front of us. [The QEMU part should not need any changes.] > > > > >> > >> If we get an async request when state=IDLE, then maybe just issue it for > >> fun, as if it were an SSCH? > > > > For fun, but mainly because the guest wants it :) > > > > Well, that too. ;-) >
next prev parent reply other threads:[~2019-01-29 18:53 UTC|newest] Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-21 11:03 [PATCH v2 0/5] vfio-ccw: support hsch/csch (kernel part) Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-21 11:03 ` [PATCH v2 1/5] vfio-ccw: make it safe to access channel programs Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-22 14:56 ` Halil Pasic 2019-01-22 14:56 ` [Qemu-devel] " Halil Pasic 2019-01-22 15:19 ` Cornelia Huck 2019-01-22 15:19 ` [Qemu-devel] " Cornelia Huck 2019-01-21 11:03 ` [PATCH v2 2/5] vfio-ccw: concurrent I/O handling Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-21 20:20 ` Halil Pasic 2019-01-21 20:20 ` [Qemu-devel] " Halil Pasic 2019-01-22 10:29 ` Cornelia Huck 2019-01-22 10:29 ` [Qemu-devel] " Cornelia Huck 2019-01-22 11:17 ` Halil Pasic 2019-01-22 11:17 ` [Qemu-devel] " Halil Pasic 2019-01-22 11:53 ` Cornelia Huck 2019-01-22 11:53 ` [Qemu-devel] " Cornelia Huck 2019-01-22 12:46 ` Halil Pasic 2019-01-22 12:46 ` [Qemu-devel] " Halil Pasic 2019-01-22 17:26 ` Cornelia Huck 2019-01-22 17:26 ` [Qemu-devel] " Cornelia Huck 2019-01-22 19:03 ` Halil Pasic 2019-01-22 19:03 ` [Qemu-devel] " Halil Pasic 2019-01-23 10:34 ` Cornelia Huck 2019-01-23 10:34 ` [Qemu-devel] " Cornelia Huck 2019-01-23 13:06 ` Halil Pasic 2019-01-23 13:06 ` [Qemu-devel] " Halil Pasic 2019-01-23 13:34 ` Cornelia Huck 2019-01-23 13:34 ` [Qemu-devel] " Cornelia Huck 2019-01-24 19:16 ` Eric Farman 2019-01-24 19:16 ` [Qemu-devel] " Eric Farman 2019-01-25 10:13 ` Cornelia Huck 2019-01-25 10:13 ` [Qemu-devel] " Cornelia Huck 2019-01-22 18:33 ` Halil Pasic 2019-01-22 18:33 ` [Qemu-devel] " Halil Pasic 2019-01-23 10:21 ` Cornelia Huck 2019-01-23 10:21 ` [Qemu-devel] " Cornelia Huck 2019-01-23 13:30 ` Halil Pasic 2019-01-23 13:30 ` [Qemu-devel] " Halil Pasic 2019-01-24 10:05 ` Cornelia Huck 2019-01-24 10:05 ` [Qemu-devel] " Cornelia Huck 2019-01-24 10:08 ` Pierre Morel 2019-01-24 10:08 ` [Qemu-devel] " Pierre Morel 2019-01-24 10:19 ` Cornelia Huck 2019-01-24 10:19 ` [Qemu-devel] " Cornelia Huck 2019-01-24 11:18 ` Pierre Morel 2019-01-24 11:18 ` [Qemu-devel] " Pierre Morel 2019-01-24 11:45 ` Halil Pasic 2019-01-24 11:45 ` [Qemu-devel] " Halil Pasic 2019-01-24 19:14 ` Eric Farman 2019-01-24 19:14 ` [Qemu-devel] " Eric Farman 2019-01-25 2:25 ` Eric Farman 2019-01-25 2:25 ` [Qemu-devel] " Eric Farman 2019-01-25 2:37 ` Eric Farman 2019-01-25 2:37 ` [Qemu-devel] " Eric Farman 2019-01-25 10:24 ` Cornelia Huck 2019-01-25 10:24 ` [Qemu-devel] " Cornelia Huck 2019-01-25 12:58 ` Cornelia Huck 2019-01-25 12:58 ` [Qemu-devel] " Cornelia Huck 2019-01-25 14:01 ` Halil Pasic 2019-01-25 14:01 ` [Qemu-devel] " Halil Pasic 2019-01-25 14:21 ` Cornelia Huck 2019-01-25 14:21 ` [Qemu-devel] " Cornelia Huck 2019-01-25 16:04 ` Halil Pasic 2019-01-25 16:04 ` [Qemu-devel] " Halil Pasic 2019-01-28 17:13 ` Cornelia Huck 2019-01-28 17:13 ` [Qemu-devel] " Cornelia Huck 2019-01-28 19:30 ` Halil Pasic 2019-01-28 19:30 ` [Qemu-devel] " Halil Pasic 2019-01-29 9:58 ` Cornelia Huck 2019-01-29 9:58 ` [Qemu-devel] " Cornelia Huck 2019-01-29 19:39 ` Halil Pasic 2019-01-29 19:39 ` [Qemu-devel] " Halil Pasic 2019-01-30 13:29 ` Cornelia Huck 2019-01-30 13:29 ` [Qemu-devel] " Cornelia Huck 2019-01-30 14:32 ` Farhan Ali 2019-01-30 14:32 ` [Qemu-devel] " Farhan Ali 2019-01-28 17:09 ` Cornelia Huck 2019-01-28 17:09 ` [Qemu-devel] " Cornelia Huck 2019-01-28 19:15 ` Halil Pasic 2019-01-28 19:15 ` [Qemu-devel] " Halil Pasic 2019-01-28 21:48 ` Eric Farman 2019-01-28 21:48 ` [Qemu-devel] " Eric Farman 2019-01-29 10:20 ` Cornelia Huck 2019-01-29 10:20 ` [Qemu-devel] " Cornelia Huck 2019-01-29 14:14 ` Eric Farman 2019-01-29 14:14 ` [Qemu-devel] " Eric Farman 2019-01-29 18:53 ` Cornelia Huck [this message] 2019-01-29 18:53 ` Cornelia Huck 2019-01-29 10:10 ` Cornelia Huck 2019-01-29 10:10 ` [Qemu-devel] " Cornelia Huck 2019-01-25 15:57 ` Eric Farman 2019-01-25 15:57 ` [Qemu-devel] " Eric Farman 2019-01-28 17:24 ` Cornelia Huck 2019-01-28 17:24 ` [Qemu-devel] " Cornelia Huck 2019-01-28 21:50 ` Eric Farman 2019-01-28 21:50 ` [Qemu-devel] " Eric Farman 2019-01-25 20:22 ` Eric Farman 2019-01-25 20:22 ` [Qemu-devel] " Eric Farman 2019-01-28 17:31 ` Cornelia Huck 2019-01-28 17:31 ` [Qemu-devel] " Cornelia Huck 2019-01-25 13:09 ` Halil Pasic 2019-01-25 13:09 ` [Qemu-devel] " Halil Pasic 2019-01-25 12:58 ` Halil Pasic 2019-01-25 12:58 ` [Qemu-devel] " Halil Pasic 2019-01-25 20:21 ` Eric Farman 2019-01-25 20:21 ` [Qemu-devel] " Eric Farman 2019-01-21 11:03 ` [PATCH v2 3/5] vfio-ccw: add capabilities chain Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-23 15:57 ` [qemu-s390x] " Halil Pasic 2019-01-23 15:57 ` [Qemu-devel] " Halil Pasic 2019-01-25 16:19 ` Eric Farman 2019-01-25 16:19 ` [Qemu-devel] " Eric Farman 2019-01-25 21:00 ` Eric Farman 2019-01-25 21:00 ` [Qemu-devel] " Eric Farman 2019-01-28 17:34 ` Cornelia Huck 2019-01-28 17:34 ` [Qemu-devel] " Cornelia Huck 2019-01-21 11:03 ` [PATCH v2 4/5] s390/cio: export hsch to modules Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-22 15:21 ` [qemu-s390x] " Halil Pasic 2019-01-22 15:21 ` [Qemu-devel] " Halil Pasic 2019-01-21 11:03 ` [PATCH v2 5/5] vfio-ccw: add handling for async channel instructions Cornelia Huck 2019-01-21 11:03 ` [Qemu-devel] " Cornelia Huck 2019-01-23 15:51 ` Halil Pasic 2019-01-23 15:51 ` [Qemu-devel] " Halil Pasic 2019-01-24 10:06 ` Cornelia Huck 2019-01-24 10:06 ` [Qemu-devel] " Cornelia Huck 2019-01-24 10:37 ` Halil Pasic 2019-01-24 10:37 ` [Qemu-devel] " Halil Pasic 2019-01-25 21:00 ` Eric Farman 2019-01-25 21:00 ` [Qemu-devel] " Eric Farman 2019-01-28 17:40 ` Cornelia Huck 2019-01-28 17:40 ` [Qemu-devel] " 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=20190129195303.72d5fbc4.cohuck@redhat.com \ --to=cohuck@redhat.com \ --cc=alex.williamson@redhat.com \ --cc=alifm@linux.ibm.com \ --cc=farman@linux.ibm.com \ --cc=kvm@vger.kernel.org \ --cc=linux-s390@vger.kernel.org \ --cc=pasic@linux.ibm.com \ --cc=pmorel@linux.ibm.com \ --cc=qemu-devel@nongnu.org \ --cc=qemu-s390x@nongnu.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.