From nobody Sun Feb 8 07:08:06 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1687881270; cv=none; d=zohomail.com; s=zohoarc; b=Pwgk9UVYAToxXJfOQcVamii92fMiZd8NWrH7YTScRQlpTICozNVH3Wcyn0VC406Uk2r/YMsr9Mmdc882ZHw2XmdL8nSRHpVT0VbFa/lucRy8vEzYv1bub5eatAL9/IYWkhPNx9xzG6VTrQ+MmT8SRUtt3onnLI+JcAXq/STpvyI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687881270; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OVEPcA/sIZMiwDbwv+v6c6bABNL4E51JguSdYNRW4R0=; b=Tauke109igpi6AyNU658l5Pjv2jRR8hs99vX2RmjK82nLfvlQXwzkApbum47bTC47vsbsHTxhjrxd+2mujbr6YTqKQxgCyUT4Hy0Zc6yKRo96uTXyMr+lLY9oDfCE610jAUp9MfXJcOW9azK8HXXT/Q1i9b9VSsHeCcF8fAM3W0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=reject dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1687881270659883.7268058765645; Tue, 27 Jun 2023 08:54:30 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-160-axCPA3uIOFKyHrBzJY5Ojw-1; Tue, 27 Jun 2023 11:54:23 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E905A18E0AE0; Tue, 27 Jun 2023 15:54:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CAA164087C70; Tue, 27 Jun 2023 15:54:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8EBE11956B9D; Tue, 27 Jun 2023 15:51:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C5BD3194E10E for ; Tue, 27 Jun 2023 15:51:46 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id B4C5EF5CD9; Tue, 27 Jun 2023 15:51:46 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AC589F5CC5 for ; Tue, 27 Jun 2023 15:51:46 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-inbound-delivery-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7FE8392E4C8 for ; Tue, 27 Jun 2023 15:51:46 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-298-UatoR43XN2Sf1WELKcOkSA-1; Tue, 27 Jun 2023 11:51:42 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 35RFlXip020660; Tue, 27 Jun 2023 15:51:40 GMT Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3rg2qf82n9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Jun 2023 15:51:39 +0000 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 35RDP3pc028623; Tue, 27 Jun 2023 15:51:34 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma06ams.nl.ibm.com (PPS) with ESMTPS id 3rdqre1x59-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Jun 2023 15:51:34 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 35RFpVHv18416218 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Jun 2023 15:51:31 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8AB3B20043; Tue, 27 Jun 2023 15:51:31 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 457A92005A; Tue, 27 Jun 2023 15:51:31 +0000 (GMT) Received: from fiuczyvm.. (unknown [9.152.222.239]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 27 Jun 2023 15:51:31 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687881269; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=OVEPcA/sIZMiwDbwv+v6c6bABNL4E51JguSdYNRW4R0=; b=JoUGEAFYJNeLPxofN5WxJZ2QGnXjnq8a5b7vc/4SdoPm1aEy64CZJqSUf1kkMq+YPqMZBE 64mERGz6QoiVhqSHunWl8FksRAgwPyrTNWHXJ64QgcZIUkciuLzAMinr02JpUY1s7N6Hph 4bvawcJPQqChRjrcgTrf+J9Gz/WYxjI= X-MC-Unique: axCPA3uIOFKyHrBzJY5Ojw-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: UatoR43XN2Sf1WELKcOkSA-1 From: Boris Fiuczynski To: libvir-list@redhat.com, thuth@redhat.com, jjongsma@redhat.com Subject: [libvirt PATCH v2 3/4] qemu: allow use of async teardown in domain Date: Tue, 27 Jun 2023 17:51:28 +0200 Message-Id: <20230627155129.4949-4-fiuczy@linux.ibm.com> In-Reply-To: <20230627155129.4949-1-fiuczy@linux.ibm.com> References: <20230627155129.4949-1-fiuczy@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: v-qv4krkShofySLk-4Uma1TevK9210yb X-Proofpoint-GUID: v-qv4krkShofySLk-4Uma1TevK9210yb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-06-27_10,2023-06-27_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 mlxscore=0 priorityscore=1501 adultscore=0 mlxlogscore=999 bulkscore=0 clxscore=1015 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2306270143 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mprivozn@redhat.com, jdenemar@redhat.com, imbrenda@linux.ibm.com Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: linux.ibm.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1687881270976100003 Content-Type: text/plain; charset="utf-8"; x-default="true" Asynchronous teardown can be specified if the QEMU binary supports it by adding in the domain XML ... ... By default this new feature is disabled. Signed-off-by: Boris Fiuczynski --- docs/formatdomain.rst | 6 +++ src/conf/domain_conf.c | 22 ++++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 9 ++++ src/qemu/qemu_command.c | 20 +++++++++ src/qemu/qemu_validate.c | 9 ++++ .../async-teardown.x86_64-latest.args | 37 ++++++++++++++++ tests/qemuxml2argvdata/async-teardown.xml | 31 +++++++++++++ ...0-async-teardown-disabled.s390x-6.0.0.args | 35 +++++++++++++++ ...-async-teardown-disabled.s390x-latest.args | 36 +++++++++++++++ .../s390-async-teardown-disabled.xml | 24 ++++++++++ ...async-teardown-no-attrib.s390x-latest.args | 36 +++++++++++++++ .../s390-async-teardown-no-attrib.xml | 24 ++++++++++ .../s390-async-teardown.s390x-6.0.0.err | 1 + .../s390-async-teardown.s390x-latest.args | 36 +++++++++++++++ .../qemuxml2argvdata/s390-async-teardown.xml | 24 ++++++++++ tests/qemuxml2argvtest.c | 7 +++ .../async-teardown.x86_64-latest.xml | 44 +++++++++++++++++++ ...90-async-teardown-disabled.s390x-6.0.0.xml | 36 +++++++++++++++ ...0-async-teardown-disabled.s390x-latest.xml | 36 +++++++++++++++ ...-async-teardown-no-attrib.s390x-latest.xml | 36 +++++++++++++++ .../s390-async-teardown.s390x-latest.xml | 36 +++++++++++++++ tests/qemuxml2xmltest.c | 6 +++ 23 files changed, 552 insertions(+) create mode 100644 tests/qemuxml2argvdata/async-teardown.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/async-teardown.xml create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.s39= 0x-6.0.0.args create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.s39= 0x-latest.args create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-disabled.xml create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s3= 90x-latest.args create mode 100644 tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.= err create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.s390x-latest= .args create mode 100644 tests/qemuxml2argvdata/s390-async-teardown.xml create mode 100644 tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.x= ml create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s= 390x-6.0.0.xml create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-disabled.s= 390x-latest.xml create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown-no-attrib.= s390x-latest.xml create mode 100644 tests/qemuxml2xmloutdata/s390-async-teardown.s390x-late= st.xml diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index c3526439bf..762a2376dc 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -2000,6 +2000,7 @@ Hypervisors may allow certain CPU / machine features = to be toggled on/off. 128 + ... =20 @@ -2230,6 +2231,11 @@ are: tb-cache The size of translation block cache size an integer (= a multiple of MiB) :since:`8.0.0` =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =20 +``async-teardown`` + Depending on the ``enabled`` attribute (values ``yes``, ``no``) enable = or + disable QEMU asynchronous teardown to improve memory reclaiming on a gu= est. + :since:`Since 9.5.0` (QEMU only) + Time keeping ------------ =20 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0edb1bda9d..d9fce37241 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -181,6 +181,7 @@ VIR_ENUM_IMPL(virDomainFeature, "sbbc", "ibs", "tcg", + "async-teardown", ); =20 VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, @@ -16685,6 +16686,20 @@ virDomainFeaturesDefParse(virDomainDef *def, return -1; break; =20 + case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN: { + virTristateBool enabled; + + if (virXMLPropTristateBool(nodes[i], "enabled", + VIR_XML_PROP_NONE, &enabled) < 0) + return -1; + + if (enabled =3D=3D VIR_TRISTATE_BOOL_ABSENT) + enabled =3D VIR_TRISTATE_BOOL_YES; + + def->features[val] =3D enabled; + break; + } + case VIR_DOMAIN_FEATURE_LAST: break; } @@ -20624,6 +20639,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef = *src, =20 case VIR_DOMAIN_FEATURE_MSRS: case VIR_DOMAIN_FEATURE_TCG: + case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN: case VIR_DOMAIN_FEATURE_LAST: break; } @@ -27332,6 +27348,12 @@ virDomainDefFormatFeatures(virBuffer *buf, virDomainFeatureTCGFormat(&childBuf, def); break; =20 + case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN: + if (def->features[i] !=3D VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(&childBuf, "\n", + virTristateBoolTypeToString(def->feature= s[i])); + break; + case VIR_DOMAIN_FEATURE_LAST: break; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 629e32c39f..14221e9359 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2169,6 +2169,7 @@ typedef enum { VIR_DOMAIN_FEATURE_SBBC, VIR_DOMAIN_FEATURE_IBS, VIR_DOMAIN_FEATURE_TCG, + VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN, =20 VIR_DOMAIN_FEATURE_LAST } virDomainFeature; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index c1725bb511..d11d6a3dab 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6653,6 +6653,15 @@ + + + + + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a19902988c..74fdac2720 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10166,6 +10166,23 @@ qemuBuildCryptoCommandLine(virCommand *cmd, } =20 =20 +static int +qemuBuildAsyncTeardownCommandLine(virCommand *cmd, + const virDomainDef *def, + virQEMUCaps *qemuCaps) +{ + g_autofree char *async =3D NULL; + + if (def->features[VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN] !=3D VIR_TRISTATE= _BOOL_ABSENT && + virQEMUCapsGet(qemuCaps, QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN)) { + async =3D g_strdup_printf("async-teardown=3D%s", + virTristateSwitchTypeToString(def->feature= s[VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN])); + virCommandAddArgList(cmd, "-run-with", async, NULL); + } + return 0; +} + + typedef enum { QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE =3D 0, QEMU_COMMAND_DEPRECATION_BEHAVIOR_OMIT, @@ -10521,6 +10538,9 @@ qemuBuildCommandLine(virDomainObj *vm, if (qemuBuildCryptoCommandLine(cmd, def, qemuCaps) < 0) return NULL; =20 + if (qemuBuildAsyncTeardownCommandLine(cmd, def, qemuCaps) < 0) + return NULL; + if (cfg->logTimestamp) virCommandAddArgList(cmd, "-msg", "timestamp=3Don", NULL); =20 diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 04d0c9df73..01ad2bfc68 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -219,6 +219,15 @@ qemuValidateDomainDefFeatures(const virDomainDef *def, } break; =20 + case VIR_DOMAIN_FEATURE_ASYNC_TEARDOWN: + if (def->features[i] =3D=3D VIR_TRISTATE_BOOL_YES && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_RUN_WITH_ASYNC_TEARDOW= N)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("asynchronous teardown is not available wi= th this QEMU binary")); + return -1; + } + break; + case VIR_DOMAIN_FEATURE_SMM: case VIR_DOMAIN_FEATURE_KVM: case VIR_DOMAIN_FEATURE_XEN: diff --git a/tests/qemuxml2argvdata/async-teardown.x86_64-latest.args b/tes= ts/qemuxml2argvdata/async-teardown.x86_64-latest.args new file mode 100644 index 0000000000..900d04b5fb --- /dev/null +++ b/tests/qemuxml2argvdata/async-teardown.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Doff \ +-accel tcg \ +-cpu qemu64 \ +-m 214 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","no= de-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw= ","file":"libvirt-1-storage"}' \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-form= at","id":"ide0-0-0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-run-with async-teardown=3Don \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/async-teardown.xml b/tests/qemuxml2argv= data/async-teardown.xml new file mode 100644 index 0000000000..70c1eccc55 --- /dev/null +++ b/tests/qemuxml2argvdata/async-teardown.xml @@ -0,0 +1,31 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + /usr/bin/qemu-system-x86_64 + + + +
+ + + + + + + + diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.= 0.args b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.ar= gs new file mode 100644 index 0000000000..c4f669e1f2 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-6.0.0.args @@ -0,0 +1,35 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-s390x \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine s390-ccw-virtio-6.0,usb=3Doff,dump-guest-core=3Doff,memory-backen= d=3Ds390.ram \ +-accel tcg \ +-cpu qemu \ +-m 256 \ +-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456= }' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device virtio-serial-ccw,id=3Dvirtio-serial0,devno=3Dfe.0.0000 \ +-chardev pty,id=3Dcharconsole0 \ +-device virtconsole,chardev=3Dcharconsole0,id=3Dconsole0 \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device virtio-balloon-ccw,id=3Dballoon0,devno=3Dfe.0.0001 \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-late= st.args b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.= args new file mode 100644 index 0000000000..60cb4bb3f1 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.s390x-latest.args @@ -0,0 +1,36 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-s390x \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine s390-ccw-virtio,usb=3Doff,dump-guest-core=3Doff,memory-backend=3D= s390.ram \ +-accel tcg \ +-cpu qemu \ +-m 256 \ +-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456= }' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0= .0000"}' \ +-chardev pty,id=3Dcharconsole0 \ +-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}= ' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001= "}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-run-with async-teardown=3Doff \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/s390-async-teardown-disabled.xml b/test= s/qemuxml2argvdata/s390-async-teardown-disabled.xml new file mode 100644 index 0000000000..3939be0006 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown-disabled.xml @@ -0,0 +1,24 @@ + + QEMUGuest1 + 9aa4b45c-b9dd-45ef-91fe-862b27b4231f + 262144 + 262144 + + hvm + + + destroy + restart + destroy + + + + + /usr/bin/qemu-system-s390x + + + + + + + diff --git a/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-lat= est.args b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-lates= t.args new file mode 100644 index 0000000000..23d8e30f71 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.s390x-latest.args @@ -0,0 +1,36 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-s390x \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine s390-ccw-virtio,usb=3Doff,dump-guest-core=3Doff,memory-backend=3D= s390.ram \ +-accel tcg \ +-cpu qemu \ +-m 256 \ +-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456= }' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0= .0000"}' \ +-chardev pty,id=3Dcharconsole0 \ +-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}= ' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001= "}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-run-with async-teardown=3Don \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml b/tes= ts/qemuxml2argvdata/s390-async-teardown-no-attrib.xml new file mode 100644 index 0000000000..e069cd41ed --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown-no-attrib.xml @@ -0,0 +1,24 @@ + + QEMUGuest1 + 9aa4b45c-b9dd-45ef-91fe-862b27b4231f + 262144 + 262144 + + hvm + + + destroy + restart + destroy + + + + + /usr/bin/qemu-system-s390x + + + + + + + diff --git a/tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err b/t= ests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err new file mode 100644 index 0000000000..aa9a4739cb --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown.s390x-6.0.0.err @@ -0,0 +1 @@ +unsupported configuration: asynchronous teardown is not available with thi= s QEMU binary diff --git a/tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args b= /tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args new file mode 100644 index 0000000000..23d8e30f71 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown.s390x-latest.args @@ -0,0 +1,36 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-s390x \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine s390-ccw-virtio,usb=3Doff,dump-guest-core=3Doff,memory-backend=3D= s390.ram \ +-accel tcg \ +-cpu qemu \ +-m 256 \ +-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":268435456= }' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 9aa4b45c-b9dd-45ef-91fe-862b27b4231f \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"virtio-serial-ccw","id":"virtio-serial0","devno":"fe.0= .0000"}' \ +-chardev pty,id=3Dcharconsole0 \ +-device '{"driver":"virtconsole","chardev":"charconsole0","id":"console0"}= ' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0001= "}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-run-with async-teardown=3Don \ +-msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/s390-async-teardown.xml b/tests/qemuxml= 2argvdata/s390-async-teardown.xml new file mode 100644 index 0000000000..3291b1ada3 --- /dev/null +++ b/tests/qemuxml2argvdata/s390-async-teardown.xml @@ -0,0 +1,24 @@ + + QEMUGuest1 + 9aa4b45c-b9dd-45ef-91fe-862b27b4231f + 262144 + 262144 + + hvm + + + destroy + restart + destroy + + + + + /usr/bin/qemu-system-s390x + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index d914d8cbea..077003f88c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2699,6 +2699,13 @@ mymain(void) =20 DO_TEST_CAPS_LATEST("crypto-builtin"); =20 + DO_TEST_CAPS_LATEST("async-teardown"); + DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown", "s390x"); + DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-no-attrib", "s390x"); + DO_TEST_CAPS_ARCH_VER_PARSE_ERROR("s390-async-teardown", "s390x", "6.0= .0"); + DO_TEST_CAPS_ARCH_LATEST("s390-async-teardown-disabled", "s390x"); + DO_TEST_CAPS_ARCH_VER("s390-async-teardown-disabled", "s390x", "6.0.0"= ); + qemuTestDriverFree(&driver); virFileWrapperClearPrefixes(); =20 diff --git a/tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml b/te= sts/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml new file mode 100644 index 0000000000..e98308a9b1 --- /dev/null +++ b/tests/qemuxml2xmloutdata/async-teardown.x86_64-latest.xml @@ -0,0 +1,44 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + + +
+ + + + +