Comment 0 for bug 1882774

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

[Impact]

In qemu 4.2 was a change [1] meant to improve the handling of MSRs vs CPUID.
It was later identified [2] as an issue and fixed.
This has to be backported to Focal to resolve that issue on several platforms.

An example where this occurs is:
- Azure instances with nested virt
- GCP instances with nested virt

We have seen a bunch of qemu named CPU types that can expose similar behavior when used on chips that pretend to be of some type e.g. Skylake but miss some of their features to be settable.
It isn't entirely sure thou that this will be fixed by the same - yet worth to mention.

The impact is that qemu 4.2 as in Ubuntu 20.04 doesn't work on those platforms bailing out.

[1]: https://github.com/qemu/qemu/commit/048c95163b472ed737a2f0dca4f4e23a82ac2f8a
[2]: https://github.com/qemu/qemu/commit/4a910e1f6ab4155ec8b24c49b2585cc486916985

[Test Case]

 * Get a GCP or Azure instance with nested virtualization enabled
 * Spawn a KVM guest on it e.g. by using uvtool-libvirt using a named type matching the cpu
   e.g. if the host reports as skylake use such a type.
   You can use `qemu-system-x86_64 -cpu ?` to check available types and compare vs /prco/cpuinfo

[Regression Potential]

 * It is a bit hard to guess, but it should not make things worse. But if I'd expect one then the
   VMX subfeatures could change on cases not intended to. Yet we should have one of two cases:
   a) the common one is that the host can set this and has done so, it will continue as before
   b) host was unable to set these and failed, this should now work with the fix in place
   Both seem ok to me.

[Other Info]

 * there might be a local (non cloud) way to reproduce but I don't know it yet