Received: by 10.192.165.148 with SMTP id m20csp430595imm; Wed, 25 Apr 2018 01:44:34 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/NVcOSd00L/a56F3A2Fr2RNtUvE9rLDWe4B2C+qs5B5PD//KdbMjnWZWumHoG2hCbigltO X-Received: by 2002:a17:902:7291:: with SMTP id d17-v6mr28438962pll.218.1524645874867; Wed, 25 Apr 2018 01:44:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524645874; cv=none; d=google.com; s=arc-20160816; b=QLmsNRAlUJDn5Q2jJ2iGxmMqhf9nrAAyY0wZbhS1q38YpeH+Ca+sesGamYaibLLJEZ EXBAmxAu8y3gnOoujD/3oce/PQ9WIuIeZgWo5jHME0e0+o/2V7HawlDmY86N8a4PCI4v 4PQ/Gst7lwxhfWGoYIP8WKUs3V1cRHcDWcEhNnAw3KjbssVG+aXbfWskr+Zgy6Jc4gEX 8YYFVL1F0KJsmSC609L23omaWyzDTJ9jUgdKVM9Yl4HkQiJTSenwRiZkzktJrX8bTC5b N4mY3o4C+lfwCIHIvLxQICSouTu6c8uSWo9WrY90AR1XEgE4lGtTR95EkQZpVvPmgyQY AOKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date:arc-authentication-results; bh=G+8zoGjWITLT0KJJHXAWwYmG48Rkgo3C8W54dEg/WvM=; b=Yb0OlhRBXOEHkaE7fFKbKAUXJa0iRudRh51QHyFPsnLUSDfPoos6eMh1e5+4peEm1M YETh3vBIHYER98KVjWSg9KuRbG5JFa7dea5OkLAxmJEZToktWwcOP6JZH+Zv17Z2MpdF snQIvasGQq6ywprQZntjC9i87fHry9e4cHuc4EMqlcauBbUPwosa2R2ZgxXhM+mxnFS/ sS8gugI3pPDQT2HdyA+AEslu2LezKIN3nIyEllPv7aZ1Uy6vYesrCjLyE8wmwhpUq3Eq yo71hRxaSNGOK24uMOTdOrHJ3Riapka/ZGdcCuh4/U0hFd+Im2u/PilPgtsi0A3nERYu 9oIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q5si13552160pgc.620.2018.04.25.01.44.18; Wed, 25 Apr 2018 01:44:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751324AbeDYIlr (ORCPT + 99 others); Wed, 25 Apr 2018 04:41:47 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:47340 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751271AbeDYIll (ORCPT ); Wed, 25 Apr 2018 04:41:41 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 36F7E81A88C3; Wed, 25 Apr 2018 08:41:41 +0000 (UTC) Received: from gondolin (dhcp-192-222.str.redhat.com [10.33.192.222]) by smtp.corp.redhat.com (Postfix) with ESMTP id 39CED15562; Wed, 25 Apr 2018 08:41:40 +0000 (UTC) Date: Wed, 25 Apr 2018 10:41:38 +0200 From: Cornelia Huck To: Pierre Morel 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 Message-ID: <20180425104138.1337aff5.cohuck@redhat.com> In-Reply-To: <1524149293-12658-5-git-send-email-pmorel@linux.vnet.ibm.com> References: <1524149293-12658-1-git-send-email-pmorel@linux.vnet.ibm.com> <1524149293-12658-5-git-send-email-pmorel@linux.vnet.ibm.com> Organization: Red Hat GmbH MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Wed, 25 Apr 2018 08:41:41 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Wed, 25 Apr 2018 08:41:41 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'cohuck@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 19 Apr 2018 16:48:07 +0200 Pierre Morel 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 > --- > 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 *) ®ion->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.