From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282893786733.7168429072154;
Thu, 23 Mar 2017 08:28:13 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id 346EB42BD4;
Thu, 23 Mar 2017 15:28:11 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id F2DC277EEC;
Thu, 23 Mar 2017 15:28:10 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id A6ECF18523C4;
Thu, 23 Mar 2017 15:28:10 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQRcl020946 for ;
Thu, 23 Mar 2017 11:26:27 -0400
Received: by smtp.corp.redhat.com (Postfix)
id A9C0E19168; Thu, 23 Mar 2017 15:26:27 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 0A5EE1915A
for ; Thu, 23 Mar 2017 15:26:26 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 346EB42BD4
Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 346EB42BD4
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:13 +0100
Message-Id:
<0e5bde80b4a82bf2dd55a74d873a95d724998313.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 1/9] conf: add to
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]);
Thu, 23 Mar 2017 15:28:13 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Add a new element with a mode attribute.
Possible values are off, split or on.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
docs/formatdomain.html.in | 10 +++++++
docs/schemas/domaincommon.rng | 16 ++++++++++
src/conf/domain_conf.c | 35 ++++++++++++++++++=
+++-
src/conf/domain_conf.h | 13 ++++++++
.../qemuxml2argv-intel-iommu-irqchip.xml | 29 ++++++++++++++++++
.../qemuxml2xmlout-intel-iommu-irqchip.xml | 29 ++++++++++++++++++
tests/qemuxml2xmltest.c | 2 ++
7 files changed, 133 insertions(+), 1 deletion(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip=
.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irq=
chip.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 4a3123e..32a5f18 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -1627,6 +1627,7 @@
</kvm>
<pvspinlock state=3D'on'/>
<gic version=3D'2'/>
+ <irqchip mode=3D'split'/>
=20
</features>
...
@@ -1788,6 +1789,15 @@
for hypervisor to decide.
Since 2.1.0
+ irqchip
+ Tune the in-kernel irqchip. Possible values for the
+ mode
attribute are:
+ on
, split
and off
.
+ split
is useful for using interrupt remapping
+ with the IOMMU device .
+ The default is left for hypervisor to decide.
+ Since 3.3.0 (QEMU only)
+
=20
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index fbedc9b..8ba3902 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -4489,6 +4489,9 @@
+
+ [
+ ]
@@ -4664,6 +4667,19 @@
=20
+
+
+
+
+ off
+ split
+ on
+
+
+
+
+
+
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 6bbc6a2..ffc6a68 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -139,7 +139,8 @@ VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST,
"pmu",
"vmport",
"gic",
- "smm")
+ "smm",
+ "irqchip")
=20
VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, VIR_DOMAIN_CAPABILITIES_POLICY_=
LAST,
"default",
@@ -855,6 +856,13 @@ VIR_ENUM_IMPL(virDomainLoader,
"rom",
"pflash")
=20
+VIR_ENUM_IMPL(virDomainIRQChip,
+ VIR_DOMAIN_IRQCHIP_LAST,
+ "",
+ "off",
+ "split",
+ "on")
+
/* Internal mapping: subset of block job types that can be present in
* XML (remaining types are not two-phase). */
VIR_ENUM_DECL(virDomainBlockJob)
@@ -17278,6 +17286,24 @@ virDomainDefParseXML(xmlDocPtr xml,
ctxt->node =3D node;
break;
=20
+ case VIR_DOMAIN_FEATURE_IRQCHIP:
+ node =3D ctxt->node;
+ ctxt->node =3D nodes[i];
+ tmp =3D virXPathString("string(./@mode)", ctxt);
+ if (tmp) {
+ int value =3D virDomainIRQChipTypeFromString(tmp);
+ if (value < 0) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Unknown irqchip mode: %s"),
+ tmp);
+ goto error;
+ }
+ def->irqchip =3D value;
+ def->features[val] =3D VIR_TRISTATE_SWITCH_ON;
+ }
+ ctxt->node =3D node;
+ break;
+
/* coverity[dead_error_begin] */
case VIR_DOMAIN_FEATURE_LAST:
break;
@@ -24337,6 +24363,13 @@ virDomainDefFormatInternal(virDomainDefPtr def,
}
break;
=20
+ case VIR_DOMAIN_FEATURE_IRQCHIP:
+ if (def->irqchip) {
+ virBufferAsprintf(buf, "\n",
+ virDomainIRQChipTypeToString(def->ir=
qchip));
+ }
+ break;
+
/* coverity[dead_error_begin] */
case VIR_DOMAIN_FEATURE_LAST:
break;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 8e6d874..762e64e 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1662,6 +1662,7 @@ typedef enum {
VIR_DOMAIN_FEATURE_VMPORT,
VIR_DOMAIN_FEATURE_GIC,
VIR_DOMAIN_FEATURE_SMM,
+ VIR_DOMAIN_FEATURE_IRQCHIP,
=20
VIR_DOMAIN_FEATURE_LAST
} virDomainFeature;
@@ -1801,6 +1802,17 @@ struct _virDomainLoaderDef {
=20
void virDomainLoaderDefFree(virDomainLoaderDefPtr loader);
=20
+typedef enum {
+ VIR_DOMAIN_IRQCHIP_DEFAULT =3D 0,
+ VIR_DOMAIN_IRQCHIP_OFF,
+ VIR_DOMAIN_IRQCHIP_SPLIT,
+ VIR_DOMAIN_IRQCHIP_ON,
+
+ VIR_DOMAIN_IRQCHIP_LAST
+} virDomainIRQChip;
+
+VIR_ENUM_DECL(virDomainIRQChip);
+
/* Operating system configuration data & machine / arch */
typedef struct _virDomainOSDef virDomainOSDef;
typedef virDomainOSDef *virDomainOSDefPtr;
@@ -2250,6 +2262,7 @@ struct _virDomainDef {
unsigned int hyperv_spinlocks;
virGICVersion gic_version;
char *hyperv_vendor_id;
+ virDomainIRQChip irqchip;
=20
/* These options are of type virTristateSwitch: ON =3D keep, OFF =3D d=
rop */
int caps_features[VIR_DOMAIN_CAPS_FEATURE_LAST];
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml b/=
tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
new file mode 100644
index 0000000..98e4bba
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
@@ -0,0 +1,29 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xm=
l b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
new file mode 100644
index 0000000..98e4bba
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
@@ -0,0 +1,29 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 266b9c0..8afd830 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -1124,6 +1124,8 @@ mymain(void)
DO_TEST("intel-iommu-machine",
QEMU_CAPS_MACHINE_OPT,
QEMU_CAPS_MACHINE_IOMMU);
+ DO_TEST("intel-iommu-irqchip",
+ QEMU_CAPS_DEVICE_INTEL_IOMMU);
=20
DO_TEST("cpu-check-none", NONE);
DO_TEST("cpu-check-partial", NONE);
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282799886861.4093703962008;
Thu, 23 Mar 2017 08:26:39 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com
[10.5.11.13])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id CCCB580469;
Thu, 23 Mar 2017 15:26:38 +0000 (UTC)
Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 84C837F3A3;
Thu, 23 Mar 2017 15:26:38 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 465135EC62;
Thu, 23 Mar 2017 15:26:35 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQS5X020955 for ;
Thu, 23 Mar 2017 11:26:28 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 7CC8819167; Thu, 23 Mar 2017 15:26:28 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 04EA61915A
for ; Thu, 23 Mar 2017 15:26:27 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CCCB580469
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CCCB580469
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:14 +0100
Message-Id:
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 2/9] qemu: format kernel_irqchip on the command
line
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]);
Thu, 23 Mar 2017 15:26:39 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Add kernel_irqchip=3Doff/split/on to the QEMU command line
and a capability that looks for it in query-command-line-options
output.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 2 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 11 +++++++++++
tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 +
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
.../qemuxml2argv-intel-iommu-irqchip.args | 19 +++++++++++++++=
++++
tests/qemuxml2argvtest.c | 4 ++++
21 files changed, 53 insertions(+)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip=
.args
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index a1c7624..d14b81a 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -375,6 +375,7 @@ virDomainIOThreadIDAdd;
virDomainIOThreadIDDefFree;
virDomainIOThreadIDDel;
virDomainIOThreadIDFind;
+virDomainIRQChipTypeToString;
virDomainKeyWrapCipherNameTypeFromString;
virDomainKeyWrapCipherNameTypeToString;
virDomainLeaseDefFree;
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 60ed31e..05d0a91 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -363,6 +363,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
"pcie-root-port",
=20
"query-cpu-definitions", /* 250 */
+ "kernel-irqchip",
);
=20
=20
@@ -2986,6 +2987,7 @@ static struct virQEMUCapsCommandLineProps virQEMUCaps=
CommandLine[] =3D {
{ "drive", "throttling.bps-total-max-length", QEMU_CAPS_DRIVE_IOTUNE_M=
AX_LENGTH },
{ "drive", "throttling.group", QEMU_CAPS_DRIVE_IOTUNE_GROUP },
{ "spice", "rendernode", QEMU_CAPS_SPICE_RENDERNODE },
+ { "machine", "kernel_irqchip", QEMU_CAPS_MACHINE_KERNEL_IRQCHIP },
};
=20
static int
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 55777f9..b9efab8 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -399,6 +399,7 @@ typedef enum {
=20
/* 250 */
QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */
+ QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */
=20
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 2045c2e..58af585 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7316,6 +7316,17 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
}
}
=20
+ if (def->irqchip) {
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_KERNEL_IRQCHIP=
)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("kernel-irqchip option is not supported b=
y this "
+ "QEMU binary"));
+ goto cleanup;
+ }
+ virBufferAsprintf(&buf, ",kernel_irqchip=3D%s",
+ virDomainIRQChipTypeToString(def->irqchip));
+ }
+
virCommandAddArgBuffer(cmd, &buf);
}
=20
diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.5.3.x86_64.xml
index a68c13b..14f34b2 100644
--- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml
@@ -140,6 +140,7 @@
+
1005003
0
diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.6.0.x86_64.xml
index 365b3a6..8fc23d6 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml
@@ -145,6 +145,7 @@
+
1006000
0
diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.7.0.x86_64.xml
index 689fbf8..47c8956 100644
--- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml
@@ -147,6 +147,7 @@
+
1007000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.1.1.x86_64.xml
index 211c0bf..6bdb5a6 100644
--- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml
@@ -162,6 +162,7 @@
+
2001001
0
diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.4.0.x86_64.xml
index a348bc3..6e861da 100644
--- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml
@@ -183,6 +183,7 @@
+
2004000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.5.0.x86_64.xml
index f198715..634a76c 100644
--- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml
@@ -189,6 +189,7 @@
+
2005000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/test=
s/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml
index f45560b..4b8ddcd 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml
@@ -165,6 +165,7 @@
+
2006000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/test=
s/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml
index 721c97b..c708b70 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml
@@ -165,6 +165,7 @@
+
2006000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml b/tests/qemu=
capabilitiesdata/caps_2.6.0.ppc64le.xml
index f1c5105..aec03d6 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml
@@ -160,6 +160,7 @@
+
2006000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.6.0.x86_64.xml
index 74b8e9a..a67ca61 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml
@@ -198,6 +198,7 @@
+
2006000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemuca=
pabilitiesdata/caps_2.7.0.s390x.xml
index 4c45b38..25d98cc 100644
--- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml
@@ -128,6 +128,7 @@
+
2007000
0
diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.7.0.x86_64.xml
index d6b589c..0bc3dcd 100644
--- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml
@@ -200,6 +200,7 @@
+
2007000
0
(v2.7.0)
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemuca=
pabilitiesdata/caps_2.8.0.s390x.xml
index 215159c..7018575 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml
@@ -130,6 +130,7 @@
+
2007093
0
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.8.0.x86_64.xml
index a4a97a7..fd0c927 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
@@ -201,6 +201,7 @@
+
2008000
0
(v2.8.0)
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.9.0.x86_64.xml
index f1adb4d..9dcb84e 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
@@ -205,6 +205,7 @@
+
2008090
0
(v2.9.0-rc0-142-g940a8ce)
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args b=
/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
new file mode 100644
index 0000000..ebf9c3e
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
@@ -0,0 +1,19 @@
+LC_ALL=3DC \
+PATH=3D/bin \
+HOME=3D/home/test \
+USER=3Dtest \
+LOGNAME=3Dtest \
+QEMU_AUDIO_DRV=3Dnone \
+/usr/bin/qemu \
+-name QEMUGuest1 \
+-S \
+-machine q35,accel=3Dtcg,kernel_irqchip=3Dsplit \
+-m 214 \
+-smp 1,sockets=3D1,cores=3D1,threads=3D1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot c \
+-device intel-iommu
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 64e14af..11f6130 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -2475,6 +2475,10 @@ mymain(void)
DO_TEST("intel-iommu-machine",
QEMU_CAPS_MACHINE_OPT,
QEMU_CAPS_MACHINE_IOMMU);
+ DO_TEST("intel-iommu-irqchip",
+ QEMU_CAPS_MACHINE_OPT,
+ QEMU_CAPS_MACHINE_KERNEL_IRQCHIP,
+ QEMU_CAPS_DEVICE_INTEL_IOMMU);
=20
DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
=20
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282819223463.84966797896925;
Thu, 23 Mar 2017 08:26:59 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com
[10.5.11.15])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id B4626635C1;
Thu, 23 Mar 2017 15:26:57 +0000 (UTC)
Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 859DF17174;
Thu, 23 Mar 2017 15:26:57 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 33A6A5EC65;
Thu, 23 Mar 2017 15:26:57 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQTMP020962 for ;
Thu, 23 Mar 2017 11:26:29 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 4E86819167; Thu, 23 Mar 2017 15:26:29 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id CA56D1915A
for ; Thu, 23 Mar 2017 15:26:28 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B4626635C1
Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B4626635C1
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:15 +0100
Message-Id:
<85df2ed5c980c9e217df6ba539102ff8d5ba62be.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 3/9] Split out virDomainIOMMUDefFormat
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]);
Thu, 23 Mar 2017 15:26:58 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Make adding subelements easier.
---
src/conf/domain_conf.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index ffc6a68..1245fdd 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -23842,6 +23842,15 @@ virDomainDefIothreadShouldFormat(virDomainDefPtr d=
ef)
}
=20
=20
+static void
+virDomainIOMMUDefFormat(virBufferPtr buf,
+ virDomainIOMMUDefPtr iommu)
+{
+ virBufferAsprintf(buf, "\n",
+ virDomainIOMMUModelTypeToString(iommu->model));
+}
+
+
/* This internal version appends to an existing buffer
* (possibly with auto-indent), rather than flattening
* to string.
@@ -24595,10 +24604,8 @@ virDomainDefFormatInternal(virDomainDefPtr def,
goto error;
}
=20
- if (def->iommu) {
- virBufferAsprintf(buf, "\n",
- virDomainIOMMUModelTypeToString(def->iommu->mode=
l));
- }
+ if (def->iommu)
+ virDomainIOMMUDefFormat(buf, def->iommu);
=20
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "\n");
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 149028282251740.162223716644576;
Thu, 23 Mar 2017 08:27:02 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com
[10.5.11.14])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id 4F110C03BD66;
Thu, 23 Mar 2017 15:27:01 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 126A218514;
Thu, 23 Mar 2017 15:27:01 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id AC6B518523C3;
Thu, 23 Mar 2017 15:27:00 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQUJm020970 for ;
Thu, 23 Mar 2017 11:26:30 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 4C5E819167; Thu, 23 Mar 2017 15:26:30 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id C812A1915A
for ; Thu, 23 Mar 2017 15:26:29 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4F110C03BD66
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 4F110C03BD66
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:16 +0100
Message-Id:
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 4/9] conf: add to
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]);
Thu, 23 Mar 2017 15:27:02 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Add a new attribute to control interrupt remapping.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
docs/formatdomain.html.in | 22 ++++++++++++-
docs/schemas/domaincommon.rng | 9 +++++
src/conf/domain_conf.c | 38 ++++++++++++++++++=
+---
src/conf/domain_conf.h | 1 +
.../qemuxml2argv-intel-iommu-irqchip.xml | 4 ++-
.../qemuxml2xmlout-intel-iommu-irqchip.xml | 4 ++-
6 files changed, 71 insertions(+), 7 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 32a5f18..6b196d4 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -7285,7 +7285,9 @@ qemu-kvm -net nic,model=3D? /dev/null
...
<devices>
- <iommu model=3D'intel'/>
+ <iommu model=3D'intel'>
+ <driver intremap=3D'on'/>
+ </iommu>
</devices>
...
@@ -7296,6 +7298,24 @@ qemu-kvm -net nic,model=3D? /dev/null
Currently only the intel
model is supported.
+ driver
+
+
+ The driver
subelement can be used to configure
+ additional options:
+
+
+ intremap
+
+
+ The intremap
attribute with possible values
+ on
and off
can be used to
+ turn on interrupt remapping. Since 3.3=
.0
+ (QEMU only)
+
+
+
+
=20
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 8ba3902..68f3680 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3889,6 +3889,15 @@
intel
+
+
+
+
+ [
+ ]
+
+
+
=20
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 1245fdd..da0c9f0 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -13909,12 +13909,16 @@ virDomainMemoryDefParseXML(xmlNodePtr memdevNode,
=20
=20
static virDomainIOMMUDefPtr
-virDomainIOMMUDefParseXML(xmlNodePtr node)
+virDomainIOMMUDefParseXML(xmlNodePtr node,
+ xmlXPathContextPtr ctxt)
{
virDomainIOMMUDefPtr iommu =3D NULL, ret =3D NULL;
+ xmlNodePtr save =3D ctxt->node;
char *tmp =3D NULL;
int val;
=20
+ ctxt->node =3D node;
+
if (VIR_ALLOC(iommu) < 0)
goto cleanup;
=20
@@ -13931,10 +13935,20 @@ virDomainIOMMUDefParseXML(xmlNodePtr node)
=20
iommu->model =3D val;
=20
+ VIR_FREE(tmp);
+ if ((tmp =3D virXPathString("string(./driver/@intremap)", ctxt))) {
+ if ((val =3D virTristateSwitchTypeFromString(tmp)) < 0) {
+ virReportError(VIR_ERR_XML_ERROR, _("unknown intremap value: %=
s"), tmp);
+ goto cleanup;
+ }
+ iommu->intremap =3D val;
+ }
+
ret =3D iommu;
iommu =3D NULL;
=20
cleanup:
+ ctxt->node =3D save;
VIR_FREE(iommu);
VIR_FREE(tmp);
return ret;
@@ -14087,7 +14101,7 @@ virDomainDeviceDefParse(const char *xmlStr,
goto error;
break;
case VIR_DOMAIN_DEVICE_IOMMU:
- if (!(dev->data.iommu =3D virDomainIOMMUDefParseXML(node)))
+ if (!(dev->data.iommu =3D virDomainIOMMUDefParseXML(node, ctxt)))
goto error;
break;
case VIR_DOMAIN_DEVICE_NONE:
@@ -18202,7 +18216,7 @@ virDomainDefParseXML(xmlDocPtr xml,
}
=20
if (n > 0) {
- if (!(def->iommu =3D virDomainIOMMUDefParseXML(nodes[0])))
+ if (!(def->iommu =3D virDomainIOMMUDefParseXML(nodes[0], ctxt)))
goto error;
}
VIR_FREE(nodes);
@@ -23846,8 +23860,24 @@ static void
virDomainIOMMUDefFormat(virBufferPtr buf,
virDomainIOMMUDefPtr iommu)
{
- virBufferAsprintf(buf, "\n",
+ virBuffer childBuf =3D VIR_BUFFER_INITIALIZER;
+
+ virBufferAdjustIndent(&childBuf, virBufferGetIndent(buf, false) + 2);
+
+ if (iommu->intremap) {
+ virBufferAsprintf(&childBuf, "\n",
+ virTristateSwitchTypeToString(iommu->intremap));
+ }
+
+ virBufferAsprintf(buf, "model));
+ if (virBufferUse(&childBuf)) {
+ virBufferAddLit(buf, ">\n");
+ virBufferAddBuffer(buf, &childBuf);
+ virBufferAddLit(buf, " \n");
+ } else {
+ virBufferAddLit(buf, "/>\n");
+ }
}
=20
=20
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 762e64e..ad8ae2d 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2203,6 +2203,7 @@ typedef enum {
=20
struct _virDomainIOMMUDef {
virDomainIOMMUModel model;
+ virTristateSwitch intremap;
};
/*
* Guest VM main configuration
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml b/=
tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
index 98e4bba..3cef53d 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.xml
@@ -24,6 +24,8 @@
-
+
+
+
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xm=
l b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
index 98e4bba..3cef53d 100644
--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-irqchip.xml
@@ -24,6 +24,8 @@
-
+
+
+
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282993423891.4887677904429;
Thu, 23 Mar 2017 08:29:53 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id A282CC05166F;
Thu, 23 Mar 2017 15:29:52 +0000 (UTC)
Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 716FB77EE7;
Thu, 23 Mar 2017 15:29:52 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1D2185EC64;
Thu, 23 Mar 2017 15:29:52 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQVEj020980 for ;
Thu, 23 Mar 2017 11:26:31 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 345C919167; Thu, 23 Mar 2017 15:26:31 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id AF4141915A
for ; Thu, 23 Mar 2017 15:26:30 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A282CC05166F
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A282CC05166F
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:17 +0100
Message-Id:
<6dfa411538bf2f7e73b667ad060b971dbce4d775.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 5/9] qemu: allow conditional device property
probing
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]);
Thu, 23 Mar 2017 15:29:53 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Do not probe for devices that QEMU does not know
when probing for device options.
---
src/qemu/qemu_capabilities.c | 99 ++++++++++++++++++++++++++++++----------=
----
1 file changed, 68 insertions(+), 31 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 05d0a91..278badf 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1742,71 +1742,103 @@ struct virQEMUCapsObjectTypeProps {
const char *type;
struct virQEMUCapsStringFlags *props;
size_t nprops;
+ int capsCondition;
};
=20
static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] =3D {
{ "virtio-blk-pci", virQEMUCapsObjectPropsVirtioBlk,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk),
+ -1 },
{ "virtio-net-pci", virQEMUCapsObjectPropsVirtioNet,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet),
+ -1 },
{ "virtio-scsi-pci", virQEMUCapsObjectPropsVirtioSCSI,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI),
+ -1 },
{ "virtio-blk-ccw", virQEMUCapsObjectPropsVirtioBlk,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk),
+ -1 },
{ "virtio-net-ccw", virQEMUCapsObjectPropsVirtioNet,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet),
+ -1 },
{ "virtio-scsi-ccw", virQEMUCapsObjectPropsVirtioSCSI,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioSCSI),
+ -1 },
{ "virtio-blk-s390", virQEMUCapsObjectPropsVirtioBlk,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBlk),
+ -1 },
{ "virtio-net-s390", virQEMUCapsObjectPropsVirtioNet,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioNet),
+ -1 },
{ "pci-assign", virQEMUCapsObjectPropsPCIAssign,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign),
+ -1 },
{ "kvm-pci-assign", virQEMUCapsObjectPropsPCIAssign,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsPCIAssign),
+ -1 },
{ "vfio-pci", virQEMUCapsObjectPropsVfioPCI,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVfioPCI) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVfioPCI),
+ -1 },
{ "scsi-disk", virQEMUCapsObjectPropsSCSIDisk,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIDisk) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIDisk),
+ -1 },
{ "ide-drive", virQEMUCapsObjectPropsIDEDrive,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsIDEDrive) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsIDEDrive),
+ -1 },
{ "PIIX4_PM", virQEMUCapsObjectPropsPiix4PM,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsPiix4PM) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsPiix4PM),
+ -1 },
{ "usb-redir", virQEMUCapsObjectPropsUSBRedir,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBRedir) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBRedir),
+ -1 },
{ "usb-host", virQEMUCapsObjectPropsUSBHost,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBHost) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBHost),
+ -1 },
{ "scsi-generic", virQEMUCapsObjectPropsSCSIGeneric,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIGeneric) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsSCSIGeneric),
+ -1 },
{ "i440FX-pcihost", virQEMUCapsObjectPropsI440FXPCIHost,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsI440FXPCIHost) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsI440FXPCIHost),
+ -1 },
{ "q35-pcihost", virQEMUCapsObjectPropsQ35PCIHost,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsQ35PCIHost) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsQ35PCIHost),
+ -1 },
{ "usb-storage", virQEMUCapsObjectPropsUSBStorage,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBStorage) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBStorage),
+ -1 },
{ "kvm-pit", virQEMUCapsObjectPropsKVMPit,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsKVMPit) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsKVMPit),
+ -1 },
{ "VGA", virQEMUCapsObjectPropsVGA,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVGA) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVGA),
+ -1 },
{ "vmware-svga", virQEMUCapsObjectPropsVmwareSvga,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVmwareSvga) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVmwareSvga),
+ -1 },
{ "qxl", virQEMUCapsObjectPropsQxl,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxl) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxl),
+ -1 },
{ "virtio-gpu-pci", virQEMUCapsObjectPropsVirtioGpu,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu),
+ -1 },
{ "virtio-gpu-device", virQEMUCapsObjectPropsVirtioGpu,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu),
+ -1 },
{ "ICH9-LPC", virQEMUCapsObjectPropsICH9,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsICH9) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsICH9),
+ -1 },
{ "virtio-balloon-pci", virQEMUCapsObjectPropsVirtioBalloon,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon),
+ -1 },
{ "virtio-balloon-ccw", virQEMUCapsObjectPropsVirtioBalloon,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon),
+ -1 },
{ "virtio-balloon-device", virQEMUCapsObjectPropsVirtioBalloon,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon),
+ -1 },
{ "nec-usb-xhci", virQEMUCapsObjectPropsUSBNECXHCI,
- ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBNECXHCI) },
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBNECXHCI),
+ -1 },
};
=20
struct virQEMUCapsPropTypeObjects {
@@ -2719,6 +2751,11 @@ virQEMUCapsProbeQMPObjects(virQEMUCapsPtr qemuCaps,
=20
for (i =3D 0; i < ARRAY_CARDINALITY(virQEMUCapsObjectProps); i++) {
const char *type =3D virQEMUCapsObjectProps[i].type;
+ int cap =3D virQEMUCapsObjectProps[i].capsCondition;
+
+ if (cap >=3D 0 && !virQEMUCapsGet(qemuCaps, cap))
+ continue;
+
if ((nvalues =3D qemuMonitorGetObjectProps(mon,
type,
&values)) < 0)
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282897188912.528707546257;
Thu, 23 Mar 2017 08:28:17 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id B0FFFC05AA66;
Thu, 23 Mar 2017 15:28:16 +0000 (UTC)
Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 808E477EEE;
Thu, 23 Mar 2017 15:28:16 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 316035EC63;
Thu, 23 Mar 2017 15:28:15 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQWTW020987 for ;
Thu, 23 Mar 2017 11:26:32 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 10E9B1915A; Thu, 23 Mar 2017 15:26:32 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 8B55E1916E
for ; Thu, 23 Mar 2017 15:26:31 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B0FFFC05AA66
Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B0FFFC05AA66
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:18 +0100
Message-Id:
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 6/9] qemu: refactor qemuBuildIOMMUCommandLine
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]);
Thu, 23 Mar 2017 15:28:17 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Introduce a separate buffer for options and use a helper
variable for def->iommu.
---
src/qemu/qemu_command.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 58af585..c1c7f1a 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6625,33 +6625,42 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd,
const virDomainDef *def,
virQEMUCapsPtr qemuCaps)
{
- if (!def->iommu)
+ virBuffer opts =3D VIR_BUFFER_INITIALIZER;
+ const virDomainIOMMUDef *iommu =3D def->iommu;
+ int ret =3D -1;
+
+ if (!iommu)
return 0;
=20
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_IOMMU))
return 0; /* Already handled via -machine */
=20
- switch (def->iommu->model) {
+ switch (iommu->model) {
case VIR_DOMAIN_IOMMU_MODEL_INTEL:
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_INTEL_IOMMU)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("IOMMU device: '%s' is not supported with "
"this QEMU binary"),
- virDomainIOMMUModelTypeToString(def->iommu->mod=
el));
+ virDomainIOMMUModelTypeToString(iommu->model));
return -1;
}
if (!qemuDomainMachineIsQ35(def)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("IOMMU device: '%s' is only supported with "
"Q35 machines"),
- virDomainIOMMUModelTypeToString(def->iommu->mod=
el));
+ virDomainIOMMUModelTypeToString(iommu->model));
return -1;
}
- virCommandAddArgList(cmd, "-device", "intel-iommu", NULL);
+ virBufferAddLit(&opts, "intel-iommu");
case VIR_DOMAIN_IOMMU_MODEL_LAST:
break;
}
- return 0;
+ virCommandAddArg(cmd, "-device");
+ virCommandAddArgBuffer(cmd, &opts);
+
+ ret =3D 0;
+ virBufferFreeAndReset(&opts);
+ return ret;
}
=20
=20
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282901372192.56672581087548;
Thu, 23 Mar 2017 08:28:21 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com
[10.5.11.16])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id 8A2E06DDBB;
Thu, 23 Mar 2017 15:28:20 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 529EA7C8BE;
Thu, 23 Mar 2017 15:28:20 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 00B9118523C3;
Thu, 23 Mar 2017 15:28:19 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQXCd020992 for ;
Thu, 23 Mar 2017 11:26:33 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 3F96E1916C; Thu, 23 Mar 2017 15:26:33 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 5D3A41915A
for ; Thu, 23 Mar 2017 15:26:32 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8A2E06DDBB
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8A2E06DDBB
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:19 +0100
Message-Id:
<07a558af76393b312f11654d83812e51cd951c16.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 7/9] qemu: format intremap= on intel-iommu command
line
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]);
Thu, 23 Mar 2017 15:28:21 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Add the intremap=3D option to QEMU command line, corresponding
to the attribute of the iommu device.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
src/qemu/qemu_capabilities.c | 8 ++++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 11 +++++
.../qemucapabilitiesdata/caps_2.4.0.x86_64.replies | 22 +++++++---
.../qemucapabilitiesdata/caps_2.5.0.x86_64.replies | 24 +++++++----
.../qemucapabilitiesdata/caps_2.6.0.x86_64.replies | 24 +++++++----
.../qemucapabilitiesdata/caps_2.7.0.x86_64.replies | 28 +++++++++----
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.8.0.x86_64.replies | 37 ++++++++++++----
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.9.0.x86_64.replies | 49 ++++++++++++++++++=
----
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
.../qemuxml2argv-intel-iommu-irqchip.args | 2 +-
tests/qemuxml2argvtest.c | 1 +
14 files changed, 166 insertions(+), 44 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 278badf..e9cc754 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -364,6 +364,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
=20
"query-cpu-definitions", /* 250 */
"kernel-irqchip",
+ "intel-iommu-intremap",
);
=20
=20
@@ -1732,6 +1733,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsObje=
ctPropsUSBNECXHCI[] =3D {
{ "p3", QEMU_CAPS_NEC_USB_XHCI_PORTS },
};
=20
+static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsIntelIOMMU[] =
=3D {
+ { "intremap", QEMU_CAPS_INTEL_IOMMU_INTREMAP },
+};
+
/* see documentation for virQEMUCapsQMPSchemaGetByPath for the query forma=
t */
static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] =3D {
{ "blockdev-add/arg-type/options/+gluster/debug-level", QEMU_CAPS_GLUS=
TER_DEBUG_LEVEL},
@@ -1839,6 +1844,9 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsO=
bjectProps[] =3D {
{ "nec-usb-xhci", virQEMUCapsObjectPropsUSBNECXHCI,
ARRAY_CARDINALITY(virQEMUCapsObjectPropsUSBNECXHCI),
-1 },
+ { "intel-iommu", virQEMUCapsObjectPropsIntelIOMMU,
+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsIntelIOMMU),
+ QEMU_CAPS_DEVICE_INTEL_IOMMU},
};
=20
struct virQEMUCapsPropTypeObjects {
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index b9efab8..16db17f 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -400,6 +400,7 @@ typedef enum {
/* 250 */
QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */
QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */
+ QEMU_CAPS_INTEL_IOMMU_INTREMAP, /* intel-iommu.intremap */
=20
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index c1c7f1a..ddd889d 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6652,6 +6652,16 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd,
return -1;
}
virBufferAddLit(&opts, "intel-iommu");
+ if (iommu->intremap) {
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_INTREMAP))=
{
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("iommu: interrupt remapping is not suppor=
ted "
+ "with this QEMU binary"));
+ goto cleanup;
+ }
+ virBufferAsprintf(&opts, ",intremap=3D%s",
+ virTristateSwitchTypeToString(iommu->intrema=
p));
+ }
case VIR_DOMAIN_IOMMU_MODEL_LAST:
break;
}
@@ -6659,6 +6669,7 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd,
virCommandAddArgBuffer(cmd, &opts);
=20
ret =3D 0;
+ cleanup:
virBufferFreeAndReset(&opts);
return ret;
}
diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.4.0.x86_64.replies
index 6822181..9f256c4 100644
--- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.replies
@@ -3123,6 +3123,16 @@
{
"return": [
{
+ "name": "version",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"name": "pc-i440fx-2.4",
"is-default": true,
"cpu-max": 255,
@@ -3246,7 +3256,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -3336,21 +3346,21 @@
"name": "qemu64"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -4358,7 +4368,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -4388,7 +4398,7 @@
"capability": "events"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.5.0.x86_64.replies
index 2eeed7d..876bc2f 100644
--- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.replies
@@ -3286,6 +3286,16 @@
{
"return": [
{
+ "name": "version",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"name": "pc-i440fx-2.4",
"cpu-max": 255
},
@@ -3417,7 +3427,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -3507,21 +3517,21 @@
"name": "qemu64"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -4566,7 +4576,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -4600,7 +4610,7 @@
"capability": "x-postcopy-ram"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
@@ -12145,7 +12155,7 @@
"meta-type": "array"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.6.0.x86_64.replies
index 0c285cd..d6d0b57 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.replies
@@ -3368,6 +3368,16 @@
{
"return": [
{
+ "name": "version",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"name": "pc-0.12",
"cpu-max": 255
},
@@ -3475,7 +3485,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -3565,21 +3575,21 @@
"name": "qemu64"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -4673,7 +4683,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -4707,7 +4717,7 @@
"capability": "postcopy-ram"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
@@ -12712,7 +12722,7 @@
"meta-type": "array"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.7.0.x86_64.replies
index 4a87237..671a958 100644
--- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.replies
@@ -3559,6 +3559,20 @@
{
"return": [
{
+ "name": "version",
+ "type": "uint32"
+ },
+ {
+ "name": "intremap",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"hotpluggable-cpus": true,
"name": "pc-0.12",
"cpu-max": 255
@@ -3702,7 +3716,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -3795,21 +3809,21 @@
"name": "qemu64"
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -4907,7 +4921,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -4941,7 +4955,7 @@
"capability": "postcopy-ram"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
@@ -13297,7 +13311,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.7.0.x86_64.xml
index 0bc3dcd..5399afe 100644
--- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml
@@ -201,6 +201,7 @@
+
2007000
0
(v2.7.0)
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.8.0.x86_64.replies
index b3ad912..3087d76 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.replies
@@ -3692,6 +3692,29 @@
{
"return": [
{
+ "name": "eim",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "x-buggy-eim",
+ "type": "bool"
+ },
+ {
+ "name": "intremap",
+ "type": "bool"
+ },
+ {
+ "name": "version",
+ "type": "uint32"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"hotpluggable-cpus": true,
"name": "pc-0.12",
"cpu-max": 255
@@ -3855,7 +3878,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -4061,21 +4084,21 @@
"static": false
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -5198,7 +5221,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -5236,7 +5259,7 @@
"capability": "x-colo"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
@@ -14006,7 +14029,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.8.0.x86_64.xml
index fd0c927..07dbc08 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
@@ -202,6 +202,7 @@
+
2008000
0
(v2.8.0)
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.replies b/tests/q=
emucapabilitiesdata/caps_2.9.0.x86_64.replies
index b6fd750..7a25ba8 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.replies
@@ -4003,6 +4003,37 @@
{
"return": [
{
+ "name": "eim",
+ "description": "on/off/auto",
+ "type": "OnOffAuto"
+ },
+ {
+ "name": "caching-mode",
+ "type": "bool"
+ },
+ {
+ "name": "x-buggy-eim",
+ "type": "bool"
+ },
+ {
+ "name": "intremap",
+ "type": "bool"
+ },
+ {
+ "name": "version",
+ "type": "uint32"
+ },
+ {
+ "name": "device-iotlb",
+ "type": "bool"
+ }
+ ],
+ "id": "libvirt-41"
+}
+
+{
+ "return": [
+ {
"hotpluggable-cpus": true,
"name": "pc-0.12",
"cpu-max": 255
@@ -4176,7 +4207,7 @@
"cpu-max": 255
}
],
- "id": "libvirt-41"
+ "id": "libvirt-42"
}
=20
{
@@ -4458,21 +4489,21 @@
"migration-safe": true
}
],
- "id": "libvirt-42"
+ "id": "libvirt-43"
}
=20
{
"return": [
"tpm-tis"
],
- "id": "libvirt-43"
+ "id": "libvirt-44"
}
=20
{
"return": [
"passthrough"
],
- "id": "libvirt-44"
+ "id": "libvirt-45"
}
=20
{
@@ -5721,7 +5752,7 @@
"option": "drive"
}
],
- "id": "libvirt-45"
+ "id": "libvirt-46"
}
=20
{
@@ -5763,7 +5794,7 @@
"capability": "release-ram"
}
],
- "id": "libvirt-46"
+ "id": "libvirt-47"
}
=20
{
@@ -14888,7 +14919,7 @@
"meta-type": "object"
}
],
- "id": "libvirt-47"
+ "id": "libvirt-48"
}
=20
{
@@ -15067,7 +15098,7 @@
}
}
},
- "id": "libvirt-48"
+ "id": "libvirt-49"
}
=20
{
@@ -15308,7 +15339,7 @@
}
}
},
- "id": "libvirt-49"
+ "id": "libvirt-50"
}
=20
{
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.9.0.x86_64.xml
index 9dcb84e..0798b7d 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
@@ -206,6 +206,7 @@
+
2008090
0
(v2.9.0-rc0-142-g940a8ce)
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args b=
/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
index ebf9c3e..d704ee4 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-irqchip.args
@@ -16,4 +16,4 @@ QEMU_AUDIO_DRV=3Dnone \
-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
-no-acpi \
-boot c \
--device intel-iommu
+-device intel-iommu,intremap=3Don
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 11f6130..2051af9 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -2478,6 +2478,7 @@ mymain(void)
DO_TEST("intel-iommu-irqchip",
QEMU_CAPS_MACHINE_OPT,
QEMU_CAPS_MACHINE_KERNEL_IRQCHIP,
+ QEMU_CAPS_INTEL_IOMMU_INTREMAP,
QEMU_CAPS_DEVICE_INTEL_IOMMU);
=20
DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282904849809.6323209915729;
Thu, 23 Mar 2017 08:28:24 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com
[10.5.11.15])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id 345EA4E357;
Thu, 23 Mar 2017 15:28:24 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 0661E7E859;
Thu, 23 Mar 2017 15:28:24 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id AAEA718523CB;
Thu, 23 Mar 2017 15:28:23 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQYb1021000 for ;
Thu, 23 Mar 2017 11:26:34 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 046B11915A; Thu, 23 Mar 2017 15:26:34 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 7FD921916A
for ; Thu, 23 Mar 2017 15:26:33 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 345EA4E357
Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 345EA4E357
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:20 +0100
Message-Id:
<5a8f1a959ecb63654c09e6ee5089ae18168cbdb2.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 8/9] conf: add caching attribute to iommu device
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]);
Thu, 23 Mar 2017 15:28:24 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Add a new attribute to control the caching mode.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
docs/formatdomain.html.in | 9 +++++++
docs/schemas/domaincommon.rng | 5 ++++
src/conf/domain_conf.c | 23 +++++++++++++++---
src/conf/domain_conf.h | 1 +
.../qemuxml2argv-intel-iommu-caching.xml | 28 ++++++++++++++++++=
++++
.../qemuxml2xmlout-intel-iommu-caching.xml | 28 ++++++++++++++++++=
++++
tests/qemuxml2xmltest.c | 2 ++
7 files changed, 93 insertions(+), 3 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching=
.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-cac=
hing.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 6b196d4..f3c44ae 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -7314,6 +7314,15 @@ qemu-kvm -net nic,model=3D? /dev/null
(QEMU only)
+ caching
+
+
+ The caching
attribute with possible values
+ on
and off
can be used to
+ turn on the caching mode. Since 3.3.0<=
/span>
+ (QEMU only)
+
+
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 68f3680..49adf69 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3896,6 +3896,11 @@
[
+ ]
+
+ [
+ ]
+
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index da0c9f0..6bcf84e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -13944,6 +13944,15 @@ virDomainIOMMUDefParseXML(xmlNodePtr node,
iommu->intremap =3D val;
}
=20
+ VIR_FREE(tmp);
+ if ((tmp =3D virXPathString("string(./driver/@caching)", ctxt))) {
+ if ((val =3D virTristateSwitchTypeFromString(tmp)) < 0) {
+ virReportError(VIR_ERR_XML_ERROR, _("unknown caching value: %s=
"), tmp);
+ goto cleanup;
+ }
+ iommu->caching =3D val;
+ }
+
ret =3D iommu;
iommu =3D NULL;
=20
@@ -23864,9 +23873,17 @@ virDomainIOMMUDefFormat(virBufferPtr buf,
=20
virBufferAdjustIndent(&childBuf, virBufferGetIndent(buf, false) + 2);
=20
- if (iommu->intremap) {
- virBufferAsprintf(&childBuf, "\n",
- virTristateSwitchTypeToString(iommu->intremap));
+ if (iommu->intremap || iommu->caching) {
+ virBufferAddLit(&childBuf, "intremap) {
+ virBufferAsprintf(&childBuf, " intremap=3D'%s'",
+ virTristateSwitchTypeToString(iommu->intrema=
p));
+ }
+ if (iommu->caching) {
+ virBufferAsprintf(&childBuf, " caching=3D'%s'",
+ virTristateSwitchTypeToString(iommu->caching=
));
+ }
+ virBufferAddLit(&childBuf, "/>\n");
}
=20
virBufferAsprintf(buf, "
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-caching.xm=
l b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-caching.xml
new file mode 100644
index 0000000..b3ce6b4
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-intel-iommu-caching.xml
@@ -0,0 +1,28 @@
+
+ QEMUGuest1
+ c7a5fdbd-edaf-9455-926a-d65c16db1809
+ 219100
+ 219100
+ 1
+
+ hvm
+
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/bin/qemu
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 8afd830..20add1b 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -1126,6 +1126,8 @@ mymain(void)
QEMU_CAPS_MACHINE_IOMMU);
DO_TEST("intel-iommu-irqchip",
QEMU_CAPS_DEVICE_INTEL_IOMMU);
+ DO_TEST("intel-iommu-caching",
+ QEMU_CAPS_DEVICE_INTEL_IOMMU);
=20
DO_TEST("cpu-check-none", NONE);
DO_TEST("cpu-check-partial", NONE);
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
From nobody Thu May 2 06:13:58 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zoho.com;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
Return-Path:
Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by
mx.zohomail.com
with SMTPS id 1490282826316601.7262319102168;
Thu, 23 Mar 2017 08:27:06 -0700 (PDT)
Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com
[10.5.11.15])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id ABD0380B22;
Thu, 23 Mar 2017 15:27:05 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 5725B7DFFD;
Thu, 23 Mar 2017 15:27:05 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 048C918523C8;
Thu, 23 Mar 2017 15:27:05 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id v2NFQY4C021007 for ;
Thu, 23 Mar 2017 11:26:34 -0400
Received: by smtp.corp.redhat.com (Postfix)
id CC62D19167; Thu, 23 Mar 2017 15:26:34 +0000 (UTC)
Received: from dnr.brq.redhat.com (dhcp129-199.brq.redhat.com [10.34.129.199])
by smtp.corp.redhat.com (Postfix) with ESMTP id 515B61915A
for ; Thu, 23 Mar 2017 15:26:34 +0000 (UTC)
DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com ABD0380B22
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
dmarc=none (p=none dis=none) header.from=redhat.com
Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com;
spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com
DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com ABD0380B22
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
To: libvir-list@redhat.com
Date: Thu, 23 Mar 2017 16:26:21 +0100
Message-Id:
<3529099e6965a6f95ce6ddd0294b73bc228ce324.1490282724.git.jtomko@redhat.com>
In-Reply-To:
References:
In-Reply-To:
References:
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH 9/9] qemu: format caching-mode on iommu command
line
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]);
Thu, 23 Mar 2017 15:27:06 +0000 (UTC)
X-ZohoMail: RSF_0 Z_629925259 SPT_0
Content-Type: text/plain; charset="utf-8"
Format the caching-mode option for the intel-iommu device,
based on its attribute value.
https://bugzilla.redhat.com/show_bug.cgi?id=3D1427005
---
src/qemu/qemu_capabilities.c | 2 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 10 ++++++++++
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
.../qemuxml2argv-intel-iommu-caching.args | 19 +++++++++++++++=
++++
tests/qemuxml2argvtest.c | 5 +++++
6 files changed, 38 insertions(+)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching=
.args
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index e9cc754..6a884d1 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -365,6 +365,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
"query-cpu-definitions", /* 250 */
"kernel-irqchip",
"intel-iommu-intremap",
+ "intel-iommu-caching",
);
=20
=20
@@ -1735,6 +1736,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjec=
tPropsUSBNECXHCI[] =3D {
=20
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsIntelIOMMU[] =
=3D {
{ "intremap", QEMU_CAPS_INTEL_IOMMU_INTREMAP },
+ { "caching-mode", QEMU_CAPS_INTEL_IOMMU_CACHING },
};
=20
/* see documentation for virQEMUCapsQMPSchemaGetByPath for the query forma=
t */
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 16db17f..8ab2ee0 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -401,6 +401,7 @@ typedef enum {
QEMU_CAPS_QUERY_CPU_DEFINITIONS, /* qmp query-cpu-definitions */
QEMU_CAPS_MACHINE_KERNEL_IRQCHIP, /* -machine kernel_irqchip */
QEMU_CAPS_INTEL_IOMMU_INTREMAP, /* intel-iommu.intremap */
+ QEMU_CAPS_INTEL_IOMMU_CACHING, /* intel-iommu.caching-mode */
=20
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index ddd889d..57d4408 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6662,6 +6662,16 @@ qemuBuildIOMMUCommandLine(virCommandPtr cmd,
virBufferAsprintf(&opts, ",intremap=3D%s",
virTristateSwitchTypeToString(iommu->intrema=
p));
}
+ if (iommu->caching) {
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_INTEL_IOMMU_CACHING)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("iommu: caching mode is not supported "
+ "with this QEMU binary"));
+ goto cleanup;
+ }
+ virBufferAsprintf(&opts, ",caching-mode=3D%s",
+ virTristateSwitchTypeToString(iommu->caching=
));
+ }
case VIR_DOMAIN_IOMMU_MODEL_LAST:
break;
}
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.9.0.x86_64.xml
index 0798b7d..533bbcc 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
@@ -207,6 +207,7 @@
+
2008090
0
(v2.9.0-rc0-142-g940a8ce)
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching.args b=
/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching.args
new file mode 100644
index 0000000..59cb8a1
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-intel-iommu-caching.args
@@ -0,0 +1,19 @@
+LC_ALL=3DC \
+PATH=3D/bin \
+HOME=3D/home/test \
+USER=3Dtest \
+LOGNAME=3Dtest \
+QEMU_AUDIO_DRV=3Dnone \
+/usr/bin/qemu \
+-name QEMUGuest1 \
+-S \
+-machine q35,accel=3Dtcg \
+-m 214 \
+-smp 1,sockets=3D1,cores=3D1,threads=3D1 \
+-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
+-nographic \
+-nodefaults \
+-monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \
+-no-acpi \
+-boot c \
+-device intel-iommu,intremap=3Don,caching-mode=3Don
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 2051af9..44eed34 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -2480,6 +2480,11 @@ mymain(void)
QEMU_CAPS_MACHINE_KERNEL_IRQCHIP,
QEMU_CAPS_INTEL_IOMMU_INTREMAP,
QEMU_CAPS_DEVICE_INTEL_IOMMU);
+ DO_TEST("intel-iommu-caching",
+ QEMU_CAPS_MACHINE_OPT,
+ QEMU_CAPS_DEVICE_INTEL_IOMMU,
+ QEMU_CAPS_INTEL_IOMMU_INTREMAP,
+ QEMU_CAPS_INTEL_IOMMU_CACHING);
=20
DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
=20
--=20
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list