From patchwork Mon Oct 30 13:48:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Borntraeger X-Patchwork-Id: 10032669 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0EA3660291 for ; Mon, 30 Oct 2017 13:49:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 040FC207A7 for ; Mon, 30 Oct 2017 13:49:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EAEA125D99; Mon, 30 Oct 2017 13:49:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 646AF207A7 for ; Mon, 30 Oct 2017 13:49:21 +0000 (UTC) Received: from localhost ([::1]:40786 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9ARM-0004M1-GT for patchwork-qemu-devel@patchwork.kernel.org; Mon, 30 Oct 2017 09:49:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e9AQg-0004Lu-Dl for qemu-devel@nongnu.org; Mon, 30 Oct 2017 09:48:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e9AQc-0004eS-El for qemu-devel@nongnu.org; Mon, 30 Oct 2017 09:48:38 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:58144) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e9AQc-0004dx-60 for qemu-devel@nongnu.org; Mon, 30 Oct 2017 09:48:34 -0400 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v9UDlm1Z135936 for ; Mon, 30 Oct 2017 09:48:29 -0400 Received: from e06smtp14.uk.ibm.com (e06smtp14.uk.ibm.com [195.75.94.110]) by mx0a-001b2d01.pphosted.com with ESMTP id 2dx4qq2s9e-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Mon, 30 Oct 2017 09:48:29 -0400 Received: from localhost by e06smtp14.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 30 Oct 2017 13:48:26 -0000 Received: from b06cxnps3075.portsmouth.uk.ibm.com (9.149.109.195) by e06smtp14.uk.ibm.com (192.168.101.144) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 30 Oct 2017 13:48:24 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v9UDmOr231981664; Mon, 30 Oct 2017 13:48:24 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1A61E4C044; Mon, 30 Oct 2017 13:43:56 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CCFE64C04A; Mon, 30 Oct 2017 13:43:55 +0000 (GMT) Received: from oc7330422307.ibm.com (unknown [9.152.224.193]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 30 Oct 2017 13:43:55 +0000 (GMT) To: Pierre Morel , Cornelia Huck References: <1507124979-8880-1-git-send-email-pmorel@linux.vnet.ibm.com> <20171030134233.6aaa81a1.cohuck@redhat.com> <54504556-d508-e86f-388b-b07fa7576978@de.ibm.com> <90f3e3b9-be67-cda8-4ff8-20dac42090c7@linux.vnet.ibm.com> From: Christian Borntraeger Date: Mon, 30 Oct 2017 14:48:23 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <90f3e3b9-be67-cda8-4ff8-20dac42090c7@linux.vnet.ibm.com> Content-Language: en-US X-TM-AS-GCONF: 00 x-cbid: 17103013-0016-0000-0000-000004FB7476 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17103013-0017-0000-0000-00002836F82D Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-30_04:, , 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-1707230000 definitions=main-1710300188 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: Re: [Qemu-devel] [PATCH v1 0/5][RFC] Refactoring of AIS support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, pasic@linux.vnet.ibm.com, zyimin@linux.vnet.ibm.com, qemu-devel@nongnu.org, agraf@suse.de Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP On 10/30/2017 02:44 PM, Pierre Morel wrote: > On 30/10/2017 13:44, Christian Borntraeger wrote: >> >> >> On 10/30/2017 01:42 PM, Cornelia Huck wrote: >>> On Mon, 30 Oct 2017 09:28:09 +0100 >>> Christian Borntraeger wrote: >>> >>>> Now I thought about that for a while and I start to think that we cannot implement ais >>>> in QEMU and cover all cases. >>>> One aspect was certainly passthrough (like you handled in patch 4). >>>> Another aspect is that some interrupts might be injected from the kernel - even for >>>> emulated devices. e.g. virtio-pci together with vhost-net, will inject interrupts via >>>> the set_irq callback. I think disabling irqfd for these cases is not a good idea. >>> >>> Is there still a fallback for irqfd emulation? >> >> it might disable dataplane or other things. (it once did). So I think we should not >> go down this path. >> >>> >>>> >>>> So what about adding a new KVM capability (for 4.14), fixup the other things in >>>> QEMU and then bind it to the new capability? >>> >>> For 4.15, surely? >>> >>> Probably the only way we can make this work correctly... >>> > > I may have not understand. > > Why do we need a new capability, we already have the KVM_CAP_S390_AIS capability? To mark a kernel that supports AIS+migration without having to instantiate a flic device. > The PCI device has a netdev property pointing to a netdev, if this netdev sets the vhost property, can't we test this to know if we can realize this device or not? > > Using virtio-pci instead of virtio-ccw is not the first choice for S390. The use case I see for S390 using virtio-pci is as a fallback in case for the migration of a PCI device the target host does not support AIS or do not have VFIO device and one do not want to modify the guest. This was just one example. Having the interrupt controller in the kernel, implementing AIS in qemu is very prone to break something that we have forgotten about. FWIW, I am testing a guest patch that enables zPCI without AIS. Its as simple as diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index 7b30af5..9b24836 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c @@ -953,7 +953,7 @@ static int __init pci_base_init(void) if (!s390_pci_probe) return 0; - if (!test_facility(69) || !test_facility(71) || !test_facility(72)) + if (!test_facility(69) || !test_facility(71)) return 0; rc = zpci_debug_init(); diff --git a/arch/s390/pci/pci_insn.c b/arch/s390/pci/pci_insn.c index ea34086..61f8c82 100644 --- a/arch/s390/pci/pci_insn.c +++ b/arch/s390/pci/pci_insn.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -93,6 +94,8 @@ int zpci_refresh_trans(u64 fn, u64 addr, u64 range) /* Set Interruption Controls */ void zpci_set_irq_ctrl(u16 ctl, char *unused, u8 isc) { + if (!test_facility(72)) + return; asm volatile ( " .insn rsy,0xeb00000000d1,%[ctl],%[isc],%[u]\n" : : [ctl] "d" (ctl), [isc] "d" (isc << 27), [u] "Q" (*unused));