From patchwork Wed Oct 4 13:49:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre Morel X-Patchwork-Id: 9984753 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 ADEC460237 for ; Wed, 4 Oct 2017 13:53:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A313B285B5 for ; Wed, 4 Oct 2017 13:53:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 97EB828AC1; Wed, 4 Oct 2017 13:53:13 +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 35880285B5 for ; Wed, 4 Oct 2017 13:53:13 +0000 (UTC) Received: from localhost ([::1]:35314 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzk6q-00082n-2i for patchwork-qemu-devel@patchwork.kernel.org; Wed, 04 Oct 2017 09:53:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55477) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzk3k-00069M-PA for qemu-devel@nongnu.org; Wed, 04 Oct 2017 09:50:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dzk3g-0003pz-RS for qemu-devel@nongnu.org; Wed, 04 Oct 2017 09:50:00 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:38166) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dzk3g-0003p1-IT for qemu-devel@nongnu.org; Wed, 04 Oct 2017 09:49:56 -0400 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v94Dnb8e085094 for ; Wed, 4 Oct 2017 09:49:51 -0400 Received: from e06smtp13.uk.ibm.com (e06smtp13.uk.ibm.com [195.75.94.109]) by mx0a-001b2d01.pphosted.com with ESMTP id 2dcx4ut8cw-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 04 Oct 2017 09:49:51 -0400 Received: from localhost by e06smtp13.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 4 Oct 2017 14:49:49 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp13.uk.ibm.com (192.168.101.143) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 4 Oct 2017 14:49:47 +0100 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v94DnlDU16974012; Wed, 4 Oct 2017 13:49:47 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 154BE4C040; Wed, 4 Oct 2017 14:45:53 +0100 (BST) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C33C24C044; Wed, 4 Oct 2017 14:45:52 +0100 (BST) Received: from morel-ThinkPad-W530.boeblingen.de.ibm.com (unknown [9.145.179.43]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 4 Oct 2017 14:45:52 +0100 (BST) From: Pierre Morel To: qemu-devel@nongnu.org Date: Wed, 4 Oct 2017 15:49:39 +0200 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507124979-8880-1-git-send-email-pmorel@linux.vnet.ibm.com> References: <1507124979-8880-1-git-send-email-pmorel@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17100413-0012-0000-0000-0000057E63CB X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17100413-0013-0000-0000-000018F7D2A7 Message-Id: <1507124979-8880-6-git-send-email-pmorel@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-04_06:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1710040194 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PATCH v1 5/5] s390x/intc: AIS is now always migratable 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: borntraeger@de.ibm.com, pasic@linux.vnet.ibm.com, cohuck@redhat.com, zyimin@linux.vnet.ibm.com, 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 Adapter Interrupt Suppression can now be emulated if the host kernel does not support the FLIC AIS attributes in KVM. It follows it can always be migrated. In the case AIS is supported by the kernel at one side of the migration 1) SRC and DST AIS in KVM All PCI devices can be created on SRC and DST All PCI devices can migrate 2) SRC and DST AIS NOT in KVM Only emulated PCI devices can be used on SRC and DST Only emulated PCI devices can migrate 3) SRC AIS in KVM DST has NOT AIS in KVM Only emulated PCI devices can migrate Only emulated PCI devices can be created on SRC and DST VFIO PCI devices can be used only on SRC 4) SRC has NOT AIS in KVM DST AIS in KVM Only emulated PCI devices can migrate Only emulated PCI devices can be created on SRC and DST VFIO PCI devices can be used only on DST Signed-off-by: Pierre Morel --- hw/intc/s390_flic_kvm.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c index fd1aa22..6f44b1d 100644 --- a/hw/intc/s390_flic_kvm.c +++ b/hw/intc/s390_flic_kvm.c @@ -457,6 +457,12 @@ static void kvm_flic_ais_pre_save(void *opaque) .attr = sizeof(ais), }; + if (!flic->parent_obj.ais_supported) { + tmp->simm = flic->simm; + tmp->nimm = flic->nimm; + return; + } + if (ioctl(flic->fd, KVM_GET_DEVICE_ATTR, &attr)) { error_report("Failed to retrieve kvm flic ais states"); return; @@ -479,14 +485,10 @@ static int kvm_flic_ais_post_load(void *opaque, int version_id) .addr = (uint64_t)&ais, }; - /* This can happen when the user mis-configures its guests in an - * incompatible fashion or without a CPU model. For example using - * qemu with -cpu host (which is not migration safe) and do a - * migration from a host that has AIS to a host that has no AIS. - * In that case the target system will reject the migration here. - */ - if (!ais_needed(flic)) { - return -ENOSYS; + if (!flic->parent_obj.ais_supported) { + flic->simm = tmp->simm; + flic->nimm = tmp->nimm; + return 0; } return ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr) ? -errno : 0;