[virt-tools-list] [virt-manager PATCH 5/5] virt-manager: add a new guest feature GIC for AMR guests
Andrea Bolognani
abologna at redhat.com
Tue Jun 14 12:59:25 UTC 2016
I'm CCing Drew so that he can point out any mistakes I might
have made below :)
On Sun, 2016-06-12 at 11:35 +0200, Pavel Hrdina wrote:
> On Sat, Jun 11, 2016 at 12:04:35PM -0400, Cole Robinson wrote:
> >
> > Okay, I need to finally truly figure out how all this stuff fits together to
> > try and understand if it makes sense to expose in the GUI. My understanding is
> > that there's 4 pieces of info at play here:
> >
> > - What gic versions can qemu emulate? (available for domain type=qemu)
> > - What gic versions does the host support? (available for domain type=kvm)
> > - What gic versions does the guest OS support? (eventually tracked by libosinfo)
> >
> > As of now there's currently only 3 possible GIC settings: version=2,
> > version=3, version=host (kvm only, basically like -cpu host)
> >
> > Libvirt will default to the highest gic version that qemu advertises support
> > for. That will be gic v2 for type=qemu (the only version qemu presently
> > emulates), and whatever the host supports for type=kvm
> >
> > That's basically the extent of my knowledge, so I'd like to know:
> >
> > - does gic emulation have any impact on type=kvm, or is it only relevant to
> > type=qemu? (I assume the latter)
>
> As far as I was able to find GIC emulation is valid only for QEMU and KVM
> requires HW support. However there is an ongoing work to add emulated GICv3 for
> QEMU (TCG).
That's my understanding as well.
Note that QEMU has a 'kernel_irqchip' option that allows you
to use KVM for the CPU while offloading the GIC emulation to
QEMU, which would in theory allow you to run GICv2 guests on
a GICv3 only host.
This has been deemed not worth exposing through libvirt
because it's mostly geared towards debugging the emulated
GIC implementation and not general use.
> > - do aarch64 hosts only support one gic version, or does say a v3 host also
> > support v2?
>
> Backward support is optional so if host supports v3 it can but doesn't have to
> support v2. So there could be hosts only with v3 support but also host with v2
> and v3 support.
>
> > - do guest OS support multiple gic versions? like does a guest OS that
> > supports v3 also support v2? if a guest OS doesn't support a gic version, does
> > that mean it completely fails to boot, or some other failure scenario?
>
> If a OS doesn't support GIC it probably doesn't support ARM at all.
>
> > - what gic versions to common guest OS support? rhelsa, fedora 22, 23, 24 etc.
>
> First support for GIC was introduced in kernel 2.6.14.
> GICv2m is supported from 3.19
> GICv3 is supported from 3.17
>
> This means that all of that OSes support up to GICv3.
We confirmed this by creating a Fedora 22 guest on a GICv3
only host. As far as guest OS support is concerned, we
should be good.
> > - besides the OS compat issue, what does gic v3 vs v2 actually provide?
> > something super critical for install time?
>
> GICv2 adds a virtualization supports.
I don't think we care about this for guests :)
> GICv2 has some limitations, for example only 8 cpus.
> GICv2m adds MSI and MSI-X support.
> GICv3 is an update of GICv2 and adds MSI and MSI-X support, and removes the cpu
> limitation and adds some other features.
Other than the CPU limit, none of these look like it would
prevent a guest from booting.
> > - is gic setting something that can be changed later without guest impact?
>
> I guess that it's safe to change GIC version for a guest. But if you would
> change GIC from v3 to v2 and the guest has more than 8 cpus KVM wouldn't allow
> to start that guest.
We tried changing a RHEL 7.3 guest from GICv3 to GICv2, after
moving it from a GICv3 only to a GICv2 only host, and it
seemed to be totally fine with the change. I assume going the
other way around would be just as smooth.
This would probably be a guest ABI change, though? Seems like
the kind of change that would require a Windows guest to be
reactivated.
> > I'm trying to answer the question 'when do users want to change that default',
> > outside of obvious dev/testing scenarios. If there isn't presently, or planned
> > for the near future, a critical case where the user needs to change the
> > default just to get a booting/installing VM, then I'd rather not put this in
> > the GUI and just save it for virt-install/virt-xml
>
> I understand this point. The least we should do in GUI is to display the GIC
> version. There is a potential use-case that if you migrate a guest from GICv2
> only host to GICv3 host, you would probably like to change the GIC version and
> also if you have an OS that supports only GICv2, you would probably want to set
> GIC version. This would be also nice to get from libosinfo.
Moreover, I guess you might want to create a guest on a host
supporting both GICv2 and GICv3, with the intention of later
migrating it between that host and one that only supports
GICv2. Not sure whether that could be considered a critical
use case.
Displaying it in the GUI would almost certainly be good.
--
Andrea Bolognani
Software Engineer - Virtualization Team
More information about the virt-tools-list
mailing list