All of lore.kernel.org
 help / color / mirror / Atom feed
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.  ;-)
> 

  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: link
Be 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.