On Sun, 2016-02-07 at 09:42 -0500, John Ferlan wrote:
On 02/03/2016 03:26 PM, Andrea Bolognani wrote:
> GIC is always available to ARM virt machines, and the domain XML should
> reflect this fact.
> ---
> src/qemu/qemu_domain.c | 14 ++++++++++++++
> .../qemuxml2argv-aarch64-aavmf-virtio-mmio.xml | 1 +
> 2 files changed, 15 insertions(+)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index d120e15..5017cbb 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -1241,6 +1241,20 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
> static int
> qemuDomainDefAddDefaultFeatures(virDomainDefPtr def)
> {
> + switch (def->os.arch) {
> + case VIR_ARCH_ARMV7L:
> + case VIR_ARCH_AARCH64:
> + if (STREQ(def->os.machine, "virt") ||
> + STRPREFIX(def->os.machine, "virt-")) {
> + /* GIC is always available to ARM virt machines */
> + def->features[VIR_DOMAIN_FEATURE_GIC] = VIR_TRISTATE_SWITCH_ON;
See once on - we then have a version='host' and we're good to go.
Of course, as I'm typing I realize that we wouldn't print out
version='host' if it were the default... But that may not be a bad
thing - although we could.
That was pretty much the issue :)
For existing guests, <gic/> means <gic version='2'/>, but we pick the
default every single time the XML is loaded instead of explicitly
writing it out in the XML. Which was probably a mistake, because now
we can't really change the default without affecting existing guests :(
On the other hand, QEMU defaults to version 2 as well, so it kinda
fits nicely I guess?
Point is, I think keeping the default to version 2 in libvirt and
have upper layers (eg. virt-install via libosinfo) pick a better
value when creating new guests is in line with how we do a lot of
other stuff in libvirt.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team