All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Pierre Morel <pmorel@linux.vnet.ibm.com>
Cc: pasic@linux.vnet.ibm.com, bjsdjshi@linux.vnet.ibm.com,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org
Subject: Re: [PATCH 04/10] vfio: ccw: replace IO_REQ event with SSCH_REQ event
Date: Tue, 22 May 2018 17:38:31 +0200	[thread overview]
Message-ID: <20180522173831.08f3b481.cohuck@redhat.com> (raw)
In-Reply-To: <3c5a0677-4ed2-9bde-e6d8-d02ab69e0c2c@linux.vnet.ibm.com>

[still backlog processing...]

On Thu, 3 May 2018 14:06:51 +0200
Pierre Morel <pmorel@linux.vnet.ibm.com> wrote:

> On 30/04/2018 17:30, Cornelia Huck wrote:
> > On Wed, 25 Apr 2018 15:52:19 +0200
> > Pierre Morel <pmorel@linux.vnet.ibm.com> wrote:
> >  
> >> On 25/04/2018 10:41, Cornelia Huck wrote:  
> >>> On Thu, 19 Apr 2018 16:48:07 +0200
> >>> Pierre Morel<pmorel@linux.vnet.ibm.com>  wrote:  
> >>>> diff --git a/drivers/s390/cio/vfio_ccw_private.h b/drivers/s390/cio/vfio_ccw_private.h
> >>>> index 3284e64..93aab87 100644
> >>>> --- a/drivers/s390/cio/vfio_ccw_private.h
> >>>> +++ b/drivers/s390/cio/vfio_ccw_private.h
> >>>> @@ -76,7 +76,7 @@ enum vfio_ccw_state {
> >>>>     */
> >>>>    enum vfio_ccw_event {
> >>>>    	VFIO_CCW_EVENT_NOT_OPER,
> >>>> -	VFIO_CCW_EVENT_IO_REQ,
> >>>> +	VFIO_CCW_EVENT_SSCH_REQ,
> >>>>    	VFIO_CCW_EVENT_INTERRUPT,
> >>>>    	VFIO_CCW_EVENT_SCH_EVENT,
> >>>>    	/* last element! */  
> >>> I don't think we should separate the ssch handling. The major
> >>> difference to halt/clear is that it needs channel program translation.
> >>> Everything else (issuing the instruction and processing the interrupt)
> >>> are basically the same. If we just throw everything at the hardware
> >>> and let the host's channel subsystem figure it out, we already should
> >>> be fine with regard to most of the races.  
> >> We must test at a moment or another the kind of request we do,
> >> cancel, halt and clear only need the subchannel id in register 1 and as
> >> you said are much more direct to implement.
> >>
> >> If we do not separate them here, we need a switch in the "do_io_request"
> >> function.
> >> Is it what you mean?  
> > Yes. Most of the handling should be the same for any function.  
> 
> I really don't know, the 4 functions are quite different.
> 
> - SSCH uses an ORB, and has a quite long kernel execution time for VFIO
> - there is a race between SSCH and the others instructions
> - XSCH makes subchannel no longer start pending, also reset the busy 
> indications
> - CSCH cancels both SSCH and HSCH instruction, and perform path management
> - HSCH has different busy (entry) conditions

Roughly speaking, we have two categories: An asynchronous function is
performed (SSCH, HSCH, CSCH) or not (XSCH). So I would split out XSCH
in any case.

SSCH, HSCH, CSCH all perform path management. I see them as kind of
escalating (i.e. CSCH 'beats' HSCH which 'beats' SSCH). I think they
are all similar enough, though, as we can call through to the real
hardware and have it sorted out there.

Looking through the channel I/O instructions:
- RSCH should be handled with SSCH (as a special case).
- MSCH should also be handled in the long run, STSCH as well.
- SCHM is interesting, as it's not per-subchannel. We have some basic
  handling of the instruction in QEMU, but it only emulates some ssch
  counters and completely lacks support for the other fields.
- IIRC, there's also a CHSC command dealing with channel monitoring. We
  currently fence off any CHSC that is not needed for Linux to run, but
  there are some that might be useful for the guest (path handling
  etc.) Hard to come to a conclusion here without access to the
  documentation.
- I don't think we need to care about TSCH (other than keeping the
  schib up to date, which we also need to do for STSCH).
- Likewise, TPI should be handled via emulation.

Coming back to the original issue, I think we can easily handle SSCH
(and RSCH), HSCH and CSCH together (with the actual hardware doing the
heavy lifting anyway). For other instructions, we need separate
states/processing.

  reply	other threads:[~2018-05-22 15:38 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-19 14:48 [PATCH 00/10] vfio: ccw: Refactoring the VFIO CCW state machine Pierre Morel
2018-04-19 14:48 ` [PATCH 01/10] vfio: ccw: Moving state change out of IRQ context Pierre Morel
     [not found]   ` <20180424065442.GV12194@bjsdjshi@linux.vnet.ibm.com>
2018-04-24  8:40     ` Pierre Morel
2018-04-24  9:59       ` Cornelia Huck
2018-04-24 11:49         ` Pierre Morel
2018-04-24 11:55           ` Cornelia Huck
2018-04-24 13:07             ` Pierre Morel
2018-04-24 16:42         ` Halil Pasic
2018-04-25  6:57           ` Cornelia Huck
2018-04-25 11:06             ` Halil Pasic
2018-04-30 13:56               ` Cornelia Huck
2018-04-19 14:48 ` [PATCH 02/10] vfio: ccw: Transform FSM functions to return state Pierre Morel
     [not found]   ` <20180424072550.GW12194@bjsdjshi@linux.vnet.ibm.com>
2018-04-24  8:22     ` Pierre Morel
2018-04-30 13:58       ` Cornelia Huck
2018-04-19 14:48 ` [PATCH 03/10] vfio: ccw: new SCH_EVENT event Pierre Morel
2018-04-25  8:25   ` Cornelia Huck
2018-04-25 13:54     ` Pierre Morel
     [not found]   ` <20180426065954.GP5428@bjsdjshi@linux.vnet.ibm.com>
2018-04-30 15:28     ` Cornelia Huck
2018-05-04  8:25       ` Pierre Morel
2018-04-19 14:48 ` [PATCH 04/10] vfio: ccw: replace IO_REQ event with SSCH_REQ event Pierre Morel
2018-04-25  8:41   ` Cornelia Huck
     [not found]     ` <24f638e4-2f7e-00e1-1efb-ff3fe524bca0@linux.vnet.ibm.com>
2018-04-30 15:30       ` Cornelia Huck
2018-05-03 12:06         ` Pierre Morel
2018-05-22 15:38           ` Cornelia Huck [this message]
2018-05-23  8:19             ` Pierre Morel
     [not found]   ` <20180426073053.GZ12194@bjsdjshi@linux.vnet.ibm.com>
     [not found]     ` <20180426074806.GB12194@bjsdjshi@linux.vnet.ibm.com>
2018-04-30 15:33       ` Cornelia Huck
     [not found]         ` <20180502074622.GV5428@bjsdjshi@linux.vnet.ibm.com>
2018-05-02  8:22           ` Cornelia Huck
2018-05-03 14:26           ` Pierre Morel
     [not found]             ` <20180504011916.GA26081@bjsdjshi@linux.ibm.com>
2018-05-04 11:02               ` Pierre Morel
2018-05-22 15:41                 ` Cornelia Huck
2018-05-23  7:50                   ` Pierre Morel
2018-05-23  8:10                     ` Cornelia Huck
2018-04-19 14:48 ` [PATCH 05/10] vfio: ccw: Suppress unused event parameter Pierre Morel
     [not found]   ` <20180426073618.GA12194@bjsdjshi@linux.vnet.ibm.com>
2018-05-03 10:34     ` Pierre Morel
2018-04-19 14:48 ` [PATCH 06/10] vfio: ccw: Make FSM functions atomic Pierre Morel
2018-04-19 14:48 ` [PATCH 07/10] vfio: ccw: Introduce the INIT event Pierre Morel
2018-04-30 15:39   ` Cornelia Huck
2018-05-03 10:31     ` Pierre Morel
2018-04-19 14:48 ` [PATCH 08/10] vfio: ccw: Handling reset and shutdown with states Pierre Morel
2018-04-30 15:43   ` Cornelia Huck
2018-04-19 14:48 ` [PATCH 09/10] vfio: ccw: Suppressing the BOXED state Pierre Morel
2018-04-25  8:44   ` Cornelia Huck
2018-04-25 13:55     ` Pierre Morel
2018-04-30 15:47       ` Cornelia Huck
2018-05-03  9:02         ` Pierre Morel
2018-04-19 14:48 ` [PATCH 10/10] vfio: ccw: Let user wait when busy on IO Pierre Morel
2018-04-25  8:48   ` Cornelia Huck
2018-04-25 14:00     ` Pierre Morel

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=20180522173831.08f3b481.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pmorel@linux.vnet.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 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.