+++ 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 How reproducible: 100% Steps to Reproduce: 1. fedpkg install qemu libvirt virt-manager 2. 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. Actual results: "MSIX is not supported by interrupt controller" Expected results: Emulated machine starts up, and starts install fedora Additional info: This could be a libvirt type bug as well, because the gic type can be overriden with `gic_version=2` to make it work as well. --- 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 guests; 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 term solution. 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. https://www.redhat.com/archives/libvir-list/2017-May/msg00368.html
Fix pushed upstream. commit bc07101a7c2cd2ce07ad1ca28c47e0a7cde5625d Author: Andrea Bolognani <abologna> 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. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1450433 Signed-off-by: Andrea Bolognani <abologna>