提交 bc07101a 编写于 作者: A Andrea Bolognani

qemu: Use GICv2 for aarch64/virt TCG guests

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=1450433Signed-off-by: NAndrea Bolognani <abologna@redhat.com>
上级 b24eaf62
...@@ -2563,6 +2563,24 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def, ...@@ -2563,6 +2563,24 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def,
for (version = VIR_GIC_VERSION_LAST - 1; for (version = VIR_GIC_VERSION_LAST - 1;
version > VIR_GIC_VERSION_NONE; version > VIR_GIC_VERSION_NONE;
version--) { 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, if (virQEMUCapsSupportsGICVersion(qemuCaps,
def->virtType, def->virtType,
version)) { version)) {
...@@ -2580,8 +2598,11 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def, ...@@ -2580,8 +2598,11 @@ qemuDomainDefEnableDefaultFeatures(virDomainDefPtr def,
/* Use the default GIC version if no version was specified */ /* Use the default GIC version if no version was specified */
if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON && 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; def->gic_version = VIR_GIC_VERSION_DEFAULT;
}
} }
......
...@@ -7,7 +7,7 @@ QEMU_AUDIO_DRV=none \ ...@@ -7,7 +7,7 @@ QEMU_AUDIO_DRV=none \
/usr/bin/qemu-system-aarch64 \ /usr/bin/qemu-system-aarch64 \
-name guest \ -name guest \
-S \ -S \
-machine virt,accel=tcg,gic-version=3 \ -machine virt,accel=tcg \
-cpu cortex-a57 \ -cpu cortex-a57 \
-m 1024 \ -m 1024 \
-smp 1,sockets=1,cores=1,threads=1 \ -smp 1,sockets=1,cores=1,threads=1 \
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<boot dev='hd'/> <boot dev='hd'/>
</os> </os>
<features> <features>
<gic version='3'/> <gic version='2'/>
</features> </features>
<cpu mode='custom' match='exact' check='none'> <cpu mode='custom' match='exact' check='none'>
<model fallback='allow'>cortex-a57</model> <model fallback='allow'>cortex-a57</model>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册