Re: [libvirt] [PATCH v2 3/5] qemu: Use GICv2 for aarch64/virt TCG guests

2017-05-16 Thread Peter Krempa
On Mon, May 15, 2017 at 17:06:50 +0200, Andrea Bolognani wrote:
> There are currently some limitations in the emulated GICv3
> that make it unsuitable as a default. Use GICv2 instead.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1450433
> 
> Signed-off-by: Andrea Bolognani 
> ---
>  src/qemu/qemu_domain.c | 23 
> +-
>  .../qemuxml2argv-aarch64-gic-none-tcg.args |  2 +-
>  .../qemuxml2xmlout-aarch64-gic-none-tcg.xml|  2 +-
>  3 files changed, 24 insertions(+), 3 deletions(-)

ACK


signature.asc
Description: PGP signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH v2 3/5] qemu: Use GICv2 for aarch64/virt TCG guests

2017-05-15 Thread Andrea Bolognani
There are currently some limitations in the emulated GICv3
that make it unsuitable as a default. Use GICv2 instead.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1450433

Signed-off-by: Andrea Bolognani 
---
 src/qemu/qemu_domain.c | 23 +-
 .../qemuxml2argv-aarch64-gic-none-tcg.args |  2 +-
 .../qemuxml2xmlout-aarch64-gic-none-tcg.xml|  2 +-
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index cc02c80..079a134 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2563,6 +2563,24 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def,
 for (version = VIR_GIC_VERSION_LAST - 1;
  version > VIR_GIC_VERSION_NONE;
  version--) {
+
+/* We want to use the highest available GIC version for guests;
+ * however, the emulated GICv3 is currently lacking a MSI 
controller,
+ * making it unsuitable for the pure PCIe topology we aim for.
+ *
+ * For that reason, we skip this step entirely for TCG guests,
+ * and rely on the code below to pick the default version, GICv2,
+ * which supports all the features we need.
+ *
+ * We'll want to revisit this once MSI support for GICv3 has been
+ * implemented in QEMU.
+ *
+ * See https://bugzilla.redhat.com/show_bug.cgi?id=1414081 */
+if (version == VIR_GIC_VERSION_3 &&
+def->virtType == VIR_DOMAIN_VIRT_QEMU) {
+continue;
+}
+
 if (virQEMUCapsSupportsGICVersion(qemuCaps,
   def->virtType,
   version)) {
@@ -2580,8 +2598,11 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def,
 
 /* Use the default GIC version if no version was specified */
 if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON &&
-def->gic_version == VIR_GIC_VERSION_NONE)
+def->gic_version == VIR_GIC_VERSION_NONE) {
+VIR_DEBUG("Using GIC version %s (default)",
+  virGICVersionTypeToString(VIR_GIC_VERSION_DEFAULT));
 def->gic_version = VIR_GIC_VERSION_DEFAULT;
+}
 }
 
 
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-none-tcg.args 
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-none-tcg.args
index 975a014..52b6996 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-none-tcg.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic-none-tcg.args
@@ -7,7 +7,7 @@ QEMU_AUDIO_DRV=none \
 /usr/bin/qemu-system-aarch64 \
 -name guest \
 -S \
--machine virt,accel=tcg,gic-version=3 \
+-machine virt,accel=tcg \
 -cpu cortex-a57 \
 -m 1024 \
 -smp 1,sockets=1,cores=1,threads=1 \
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gic-none-tcg.xml 
b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gic-none-tcg.xml
index 69510e2..a0cd0b7 100644
--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gic-none-tcg.xml
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gic-none-tcg.xml
@@ -9,7 +9,7 @@
 
   
   
-
+
   
   
 cortex-a57
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list