linux-kernel.vger.kernel.org archive mirror
 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: Wed, 25 Apr 2018 10:41:38 +0200	[thread overview]
Message-ID: <20180425104138.1337aff5.cohuck@redhat.com> (raw)
In-Reply-To: <1524149293-12658-5-git-send-email-pmorel@linux.vnet.ibm.com>

On Thu, 19 Apr 2018 16:48:07 +0200
Pierre Morel <pmorel@linux.vnet.ibm.com> wrote:

> This patch simplifies the IO request handling to handle the only
> implemented request: SSCH.

I *really* need to post my halt/clear patches soon, I think.

> Other request are invalid and get a return value of -EINVAL.

This is an user api change: We got -EOPNOTSUPP in the region's return
code before.

> 
> This patch change the event name to VFIO_CCW_EVENT_SSCH_REQ to reflect
> what is done and prepare for future implementation of other requests.
> 
> Signed-off-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
> ---
>  drivers/s390/cio/vfio_ccw_fsm.c     | 63 +++++++++++++------------------------
>  drivers/s390/cio/vfio_ccw_ops.c     |  9 ++++--
>  drivers/s390/cio/vfio_ccw_private.h |  2 +-
>  3 files changed, 29 insertions(+), 45 deletions(-)

> diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c
> index 41eeb57..4da7b61 100644
> --- a/drivers/s390/cio/vfio_ccw_ops.c
> +++ b/drivers/s390/cio/vfio_ccw_ops.c
> @@ -188,19 +188,22 @@ static ssize_t vfio_ccw_mdev_write(struct mdev_device *mdev,
>  {
>  	struct vfio_ccw_private *private;
>  	struct ccw_io_region *region;
> +	union scsw *scsw;
>  
>  	if (*ppos + count > sizeof(*region))
>  		return -EINVAL;
>  
>  	private = dev_get_drvdata(mdev_parent_dev(mdev));
> -	if (private->state != VFIO_CCW_STATE_IDLE)
> -		return -EACCES;
>  
>  	region = &private->io_region;
>  	if (copy_from_user((void *)region + *ppos, buf, count))
>  		return -EFAULT;
>  
> -	vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_IO_REQ);
> +	scsw = (union scsw *) &region->scsw_area;
> +	if ((scsw->cmd.fctl & SCSW_FCTL_START_FUNC) != SCSW_FCTL_START_FUNC)

You should not allow the halt/clear functions to be specified, if you
go that route. The precedence order needs to be clear -> halt -> start.

> +		return -EINVAL;

As said, that's a user api change. Previously, user space could detect
whether halt/clear are supported or not by simply specifying the
halt/clear function and checking for -EOPNOTSUPP in the region's return
code. Now they get -EINVAL (which I think is not a good return code,
even if we did not have the api breakage).

> +
> +	vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_SSCH_REQ);
>  	if (region->ret_code != 0) {
>  		private->state = VFIO_CCW_STATE_IDLE;
>  		return region->ret_code;
> 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.

  reply	other threads:[~2018-04-25  8:41 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 [this message]
     [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
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=20180425104138.1337aff5.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 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).