Received: by 10.192.165.148 with SMTP id m20csp504169imm; Fri, 4 May 2018 01:26:36 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrMg/FIeoLRM+Z8d00fpzR9VY0CxsDS0s3E3h2xtBtuTToX7wELXohHeMrSrqCAUuJ1yZC4 X-Received: by 2002:a17:902:7c94:: with SMTP id y20-v6mr27219268pll.56.1525422396452; Fri, 04 May 2018 01:26:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525422396; cv=none; d=google.com; s=arc-20160816; b=0+uvb6NBmC3eQimFDUz1fi3KAgGvqtx19slFb9MzA0kdZTBqLNt1CRiIqyeY0IcclQ PPZQtwmkUZ5aduLjZMN9GxGKtCpUIxWkCL/xry9eY9pt0ljR3cals6uJhisMa/gmwerQ f7gm0Sjsj7ORjo/lQ1Kh3SdH5oYBInVRf7Z10XfyV9YHvaZppTkYJnKDEZOYgtVSzb/b Coy5uxHZ5dR3IAHO3he+U0WjWA20yBJjQlGXDbGrE4q2MF/TS6nAP4BGXZ4PqzuE2g1V xINgHadXz1seXY84xsx0VsNkDYl6QHnXuhnvRN8EvJxfQMJJ6aCvJ52Evr4DGwtKCx1Q 3c8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :from:references:cc:to:subject:arc-authentication-results; bh=7z4qu+fZ+30pWsjyhrw91INGSO+k1f+c5/ntbDcIALg=; b=Pn/vn4l3jE4OYpYVd6ieQBj+FY5L0UGYw9p8YIg8sit1GfJG+oMSzYikeaI/5BvnaS PKF673h0AdhSAmOIpEVt5JJoYD/R01MIibm1qzBoESoLhaW1u+eklDhVycMlGjBepZrw bN6JM4SGMDEyy71FH1iHO2f9s243k7yN4Lv/m3BJrPwZGCV+vJIvmzUBDQZurfg0Fmm/ qQOEbY8TOGmG2D3/iMYIe9rVuL41reFAIle/xvyG27G5hItOEFPcod3VxBdgP5DaOLQF KSypYFkhG0KtFotnWbHz6QaLTctjaGDVY/gSvwMW1f6Mj2l5Z63okzPngFdLfoNgCKzt DA1g== 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=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p15-v6si12511225pgq.478.2018.05.04.01.26.22; Fri, 04 May 2018 01:26:36 -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=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751946AbeEDIZ7 (ORCPT + 99 others); Fri, 4 May 2018 04:25:59 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:35228 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751598AbeEDIZx (ORCPT ); Fri, 4 May 2018 04:25:53 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w448NCbl144388 for ; Fri, 4 May 2018 04:25:53 -0400 Received: from e06smtp12.uk.ibm.com (e06smtp12.uk.ibm.com [195.75.94.108]) by mx0a-001b2d01.pphosted.com with ESMTP id 2hrjkrbpde-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 04 May 2018 04:25:53 -0400 Received: from localhost by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 4 May 2018 09:25:50 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (9.149.109.195) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 4 May 2018 09:25:47 +0100 Received: from d06av24.portsmouth.uk.ibm.com (d06av24.portsmouth.uk.ibm.com [9.149.105.60]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w448PlOV65601556; Fri, 4 May 2018 08:25:47 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 46D1D42042; Fri, 4 May 2018 09:16:56 +0100 (BST) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0DAFD4204B; Fri, 4 May 2018 09:16:56 +0100 (BST) Received: from [9.152.224.33] (unknown [9.152.224.33]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 4 May 2018 09:16:55 +0100 (BST) Subject: Re: [PATCH 03/10] vfio: ccw: new SCH_EVENT event To: Cornelia Huck , Dong Jia Shi Cc: pasic@linux.vnet.ibm.com, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org References: <1524149293-12658-1-git-send-email-pmorel@linux.vnet.ibm.com> <1524149293-12658-4-git-send-email-pmorel@linux.vnet.ibm.com> <20180426065954.GP5428@bjsdjshi@linux.vnet.ibm.com> <20180430172851.2cb3d550.cohuck@redhat.com> From: Pierre Morel Date: Fri, 4 May 2018 10:25:46 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180430172851.2cb3d550.cohuck@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-TM-AS-GCONF: 00 x-cbid: 18050408-0008-0000-0000-000004F2E30F X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18050408-0009-0000-0000-00001E870ED6 Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-04_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1805040078 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 30/04/2018 17:28, Cornelia Huck wrote: > On Thu, 26 Apr 2018 14:59:54 +0800 > Dong Jia Shi wrote: > >> * Pierre Morel [2018-04-19 16:48:06 +0200]: >> >>> The Sub channel event callback is threaded using workqueues. >>> The work uses the FSM introducing the VFIO_CCW_EVENT_SCH_EVENT >>> event. >>> The update of the SCHIB is now done inside the FSM function. >>> >>> Signed-off-by: Pierre Morel >>> --- >>> drivers/s390/cio/vfio_ccw_drv.c | 33 +++++++++++++-------------------- >>> drivers/s390/cio/vfio_ccw_fsm.c | 23 +++++++++++++++++++++++ >>> drivers/s390/cio/vfio_ccw_private.h | 3 +++ >>> 3 files changed, 39 insertions(+), 20 deletions(-) >>> >>> @@ -171,28 +181,11 @@ static void vfio_ccw_sch_shutdown(struct subchannel *sch) >>> static int vfio_ccw_sch_event(struct subchannel *sch, int process) >>> { >>> struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); >>> - unsigned long flags; >>> >>> - spin_lock_irqsave(sch->lock, flags); >>> if (!device_is_registered(&sch->dev)) >>> - goto out_unlock; >>> - >>> - if (work_pending(&sch->todo_work)) >>> - goto out_unlock; >> Just realized that this has a bug in the orignal implementation. For >> error out this should return -EAGAIN. We'd need a separated fix on >> this. > Indeed. Will you send a patch, or should I hack something up? > >>> - >>> - if (cio_update_schib(sch)) { >>> - vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_NOT_OPER); >>> - goto out_unlock; >>> - } >>> - >>> - private = dev_get_drvdata(&sch->dev); >>> - if (private->state == VFIO_CCW_STATE_NOT_OPER) { >>> - private->state = private->mdev ? VFIO_CCW_STATE_IDLE : >>> - VFIO_CCW_STATE_STANDBY; >>> - } >> This hunk was toatally removed, and this is fine because? The first part is moved to fsm_sch_event() The second part disapear per design as state changes are done inside the FSM. >> >>> - >>> -out_unlock: >>> - spin_unlock_irqrestore(sch->lock, flags); >>> + return -1; >> -1 is not a valid code. > -ENODEV looks more fitting, if we decide to go with this rework. :) yes, forgot the -1 from the first tests. > >>> + WARN_ON(work_pending(&private->event_work)); >>> + queue_work(vfio_ccw_work_q, &private->event_work); >>> >>> return 0; >>> } > I'm wondering why this should always be done via a workqueue. It seems > the other subchannel types try to do as much as possible immediately? Doing things inside the top half is not very friendly with the system. The goal of the patch is to build a clean atomic state machine. Allowing the use of mutexes insures atomicity. I notice that I forgot to point this out in the cover letter although it is one of the design key. I will update the cover letter. > (And returning -EAGAIN already triggers the css code to schedule > another call later.) Yes, if(work_pending()) return -EAGAIN Thanks for the review Pierre > -- Pierre Morel Linux/KVM/QEMU in Böblingen - Germany