Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1745285imm; Tue, 22 May 2018 08:40:05 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpz6xCdUU+YrACvnuV1b1RHb9/DcfmGXhvZQKgKDUNaIW1GyZ5s4PxYQrqXa3kPqZ09dCR5 X-Received: by 2002:a62:4cca:: with SMTP id e71-v6mr24406669pfj.171.1527003605902; Tue, 22 May 2018 08:40:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527003605; cv=none; d=google.com; s=arc-20160816; b=FSkJbTFDEqR8NQhXGJCE2vDALMk1uMoEBbXKZs5OU/bUuu3DndBx9KNmzf1ql+f/OS ISVHIdvE3nQL/o77fPsp1lI4GNn837UvEw/FJeHo8zr7qpM2akiSc1XCOr1OJ7fzikWN XOUuhV8v7huIJyRLafu6zkT14/n28ga5z2VZHhY594BC6VV0TDrgzNAeZT85tMlPV6mL oR6bJhy4xinPaW4V2v1v6cNM1UAbTkNHBNS4R5uVrb8NKWWBS5dkL3Zjt3WqhpNUVCBw xQ6o+KVoi659jODnudbnOOh8qMSNzYF+Yt9QZRsDXIXUilBqEmrWjDwxuevuV6xIA7al MeEw== 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=TDm1mndYd4Sm9Pdpbpe6FGU9rXDyzablZQBoh/jnq3o=; b=KF63H4fDIK3e/ub8DfxNBpejhe7ad7YNv0na8yywqsbo5dXLlSoc1FX4WJ/tu1iX+N Vzm8tyZ/pCRCMoscmkqId4o6jkQDjeZAsfGi2Y/KnfSnvLZst4OSU4j8A5mgL/M9yaew S6I9/RpUxNgIHWGf1o5/s8+zpABkbcCRHEY86L/vA0OksygzU9O/cChtRAbE9sWZsMoo F8wVR3qIi9X1lrljOzKak8BlAo+dbfcMMZAcUfEPSm84VZ2uw9qc3jss0mM7F0GZ+vWD zTYiDP4BjmkFuj8iukjH1zHTbthM8J+zK2BE7F8nTgttO+oLKWwb6FRX9Q8OU+3vvk9M d8NA== 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 36-v6si17651217plb.140.2018.05.22.08.39.51; Tue, 22 May 2018 08:40:05 -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 S1751514AbeEVPii (ORCPT + 99 others); Tue, 22 May 2018 11:38:38 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:41958 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751240AbeEVPif (ORCPT ); Tue, 22 May 2018 11:38:35 -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 AA56640201B1; Tue, 22 May 2018 15:38:34 +0000 (UTC) Received: from gondolin (dhcp-192-222.str.redhat.com [10.33.192.222]) by smtp.corp.redhat.com (Postfix) with ESMTP id A9F811C667; Tue, 22 May 2018 15:38:33 +0000 (UTC) Date: Tue, 22 May 2018 17:38:31 +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: <20180522173831.08f3b481.cohuck@redhat.com> In-Reply-To: <3c5a0677-4ed2-9bde-e6d8-d02ab69e0c2c@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> <20180425104138.1337aff5.cohuck@redhat.com> <24f638e4-2f7e-00e1-1efb-ff3fe524bca0@linux.vnet.ibm.com> <20180430173028.0dca976c.cohuck@redhat.com> <3c5a0677-4ed2-9bde-e6d8-d02ab69e0c2c@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.6]); Tue, 22 May 2018 15:38:34 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Tue, 22 May 2018 15:38:34 +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 [still backlog processing...] On Thu, 3 May 2018 14:06:51 +0200 Pierre Morel wrote: > On 30/04/2018 17:30, Cornelia Huck wrote: > > On Wed, 25 Apr 2018 15:52:19 +0200 > > Pierre Morel wrote: > > > >> On 25/04/2018 10:41, Cornelia Huck wrote: > >>> On Thu, 19 Apr 2018 16:48:07 +0200 > >>> Pierre Morel 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.