+++ This bug was initially created as a clone of Bug #1449837 +++
Description of problem: qemu/aarch64 only supports gicv3
emulation via KVM on a aarch64 machine. This wouldn't be a
problem except that the last couple of qemu releases default
to gicv3, which means that the default machine config created
via libvirt/virt-manager fails with a message "MSIX is not
supported by interrupt controller" (older versions say) "MSI
is not supported by interrupt controller".
Version-Release number of selected component (if applicable):
qemu 2.8.11 & 2.9
Steps to Reproduce:
1. fedpkg install qemu libvirt virt-manager
3. new machine, arch = aarch64, type=virt
3. Install from fedora aarch64.iso
4. next a couple times, until finish.
5. Failure with above message.
"MSIX is not supported by interrupt controller"
Emulated machine starts up, and starts install fedora
This could be a libvirt type bug as well, because the gic
type can be overriden with `gic_version=2` to make it work
--- Additional comment from Andrea Bolognani on 2017-05-11 11:51:27 EDT ---
(In reply to Cole Robinson from comment #2)
> Andrea I think I saw some internal discussion about this but I'm light on
> details. Can you explain the plan here?
As detailed in Bug 1414081, the root of the issue is
that QEMU doesn't fully emulate GICv3, and more
specifically is missing the MSI controller which is
a requirement for virtio-pci.
There are several ways we could deal with the issue:
1) switch back from virtio-pci to virtio-mmio, which
works with the current GICv3;
2) implement the missing bits of GICv3 emulation;
3) change libvirt to always prefer GICv2 for TCG
4) provide a way for virt-manager users to choose
between GICv2 and GICv3.
1) would be a massive step back, so I've included it
only for completeness' sake and strongly advise against
even considering it.
2) is something that we want to have at some point,
hence Bug 1414081, but I also have to assume it would
be a lot of work which rules it out as a short to medium
3) is probably our best bet. We'll want to have a way
for libvirt to figure out whether QEMU supports full
GICv3 emulation so we can switch the default back to
that in the future.
4) is something that we should arguably have in any
case, same way you can already pass gic_version= to
virt-install in order to override libvirt's default.
Implementation of proposal 3) above posted upstream.
Fix pushed upstream.
Author: Andrea Bolognani <firstname.lastname@example.org>
Date: Fri May 12 13:29:57 2017 +0200
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.
Signed-off-by: Andrea Bolognani <email@example.com>