Bug 1450433 - Unable to create aarch64 TCG guests: "MSIX is not supported by interrupt controller"
Summary: Unable to create aarch64 TCG guests: "MSIX is not supported by interrupt cont...
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Virtualization Tools
Classification: Community
Component: libvirt
Version: unspecified
Hardware: x86_64
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Andrea Bolognani
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-05-12 14:09 UTC by Andrea Bolognani
Modified: 2017-05-16 15:42 UTC (History)
15 users (show)

Fixed In Version: libvirt-3.4.0
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1449837
Environment:
Last Closed: 2017-05-16 15:42:51 UTC


Attachments (Terms of Use)

Description Andrea Bolognani 2017-05-12 14:09:22 UTC
+++ 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.

Comment 1 Andrea Bolognani 2017-05-12 14:15:54 UTC
Implementation of proposal 3) above posted upstream.

https://www.redhat.com/archives/libvir-list/2017-May/msg00368.html

Comment 2 Andrea Bolognani 2017-05-16 15:42:51 UTC
Fix pushed upstream.

commit bc07101a7c2cd2ce07ad1ca28c47e0a7cde5625d
Author: Andrea Bolognani <abologna@redhat.com>
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@redhat.com>


Note You need to log in before you can comment on or make changes to this bug.