QEMU might fail to start on AMD CPUs when 'host-passthrough' is used

Bug #1828288 reported by Rafael David Tinoco on 2019-05-08
4
Affects Status Importance Assigned to Milestone
qemu (Ubuntu)
Undecided
Rafael David Tinoco
Xenial
Undecided
Rafael David Tinoco

Bug Description

[Impact]

 * QEMU does not work in some AMD hardware when using host-passthrough as cpu-mode (usually to allow nested KVM to work).

[Test Case]

 * to use Xenial qemu (1:2.5+dfsg-5ubuntu10.36 ou 1:2.5+dfsg-5ubuntu10.37)
 * to use the following XML file: https://paste.ubuntu.com/p/BSyFY7ksR5/
 * to have AMD FX(tm)-8350 Eight-Core Processor CPU or similar

[Regression Potential]

 * initial qemu code could be affected, disallowing other guests, in other architectures, to be started
 * suggested patch is simple, being a positional change only
 * patch is upstream based and identifies the issue and is reported to be a fix for the described issue

[Other Info]

 * INITIAL CASE DESCRIPTION:

When using latest QEMU (-proposed) in Xenial you might encounter the following problem when trying to initialize your guests:

----

(c)inaddy@qemubug:~$ apt-cache policy qemu-system-x86
qemu-system-x86:
  Installed: 1:2.5+dfsg-5ubuntu10.37
  Candidate: 1:2.5+dfsg-5ubuntu10.37
  Version table:
 *** 1:2.5+dfsg-5ubuntu10.37 500
        500 http://ubuntu.c3sl.ufpr.br//ubuntu xenial-proposed/main amd64 Packages
        100 /var/lib/dpkg/status
     1:2.5+dfsg-5ubuntu10.36 500
        500 http://ubuntu.c3sl.ufpr.br//ubuntu xenial-updates/main amd64 Packages
     1:2.5+dfsg-5ubuntu10 500
        500 http://ubuntu.c3sl.ufpr.br/ubuntu xenial/main amd64 Packages

----

(c)inaddy@qemubug:~$ virsh list --all
 Id Name State
----------------------------------------------------
 - kdebian shut off
 - kguest shut off

(c)inaddy@qemubug:~$ virsh start --console kguest
error: Failed to start domain kguest
error: internal error: process exited while connecting to monitor: warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 0]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 1]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 2]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 3]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 4]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 5]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 6]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 7]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 8]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 9]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 12]
warning: host doesn't support requested feature: CPUID.80000001H:EDX [bit 13]
warning: host doesn't support requested feature: CPU

----

This happens because x86_cpu_get_migratable_flags() does not support CPUID_EXT2_AMD_ALIASES. After cherry-picking upstream patch 9997cf7bdac056aeed246613639675c5a9f8fdc2, that moves CPUID_EXT2_AMD_ALIASES code to after x86_cpu_filter_features(), the problem is fixed. Other QEMU versions are properly fixed and don't face this issue.

Cherry-picking commit and re-building the package makes it to work:
----

(c)inaddy@qemubug:~$ virsh start --console kguest
Domain kguest started
Connected to domain kguest
Escape character is ^]
[ 0.000000] Linux version 4.19.0-4-amd64 (<email address hidden>) (gcc version 8.3.0 (Debian 8.3.0-2)) #1
SMP Debian 4.19.28-2 (2019-03-15)
[ 0.000000] Command line: root=/dev/vda noresume console=tty0 console=ttyS0,38400n8 apparmor=0 net.ifnames=0 crashkernel=256M
[ 0.000000] random: get_random_u32 called from bsp_init_amd+0x20b/0x2b0 with crng_init=0
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
...

Changed in qemu (Ubuntu):
assignee: nobody → Rafael David Tinoco (inaddy)
status: New → Incomplete
status: Incomplete → In Progress

Upstream discussion regarding the topic can be found here:

http://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02597.html

And it is well documented in the .patch inside debdiff.

Thank you for considering this fix.

Best,
Rafael

The attachment "qemu_2.5+dfsg-5ubuntu10.38.debdiff" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch

Thanks Rafael for identifying the issue and already providing a patch.
A few other things need to clear the SRU pipe first, then we can take the change it LGTM.

Would you - in the meantime - find the time to add a full SRU template [1] for this to the description already?

[1]: https://wiki.ubuntu.com/StableReleaseUpdates#SRU_Bug_Template

Hey Christian,

sorry for missing the SRU template, I was in hurry to create a package for myself and some local needs. I'll do it right now, feel free to SRU it whenever is good for you based on other fixes I know you usually take care off.

Thanks a lot!

description: updated
description: updated
Changed in qemu (Ubuntu Xenial):
status: New → In Progress
Changed in qemu (Ubuntu):
status: In Progress → Fix Released
Changed in qemu (Ubuntu Xenial):
assignee: nobody → Rafael David Tinoco (rafaeldtinoco)

I received an e-mail ~2 hours ago telling me:

"""
from: shahul hameed <email address hidden> via canonical.com

** Patch removed: "qemu_2.5+dfsg-5ubuntu10.38.debdiff"
   https://bugs.launchpad.net/ubuntu/xenial/+source/qemu/+bug/1828288/+attachment/5262436/+files/qemu_2.5+dfsg-5ubuntu10.38.debdiff
"""

This is weird. I'm not quite sure why my patch was removed from this case (and with which permissions inside launchpad), so I'm re-attaching the debdiff to the case.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers