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.
* 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
[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/ 048c95163b472ed 737a2f0dca4f4e2 3a82ac2f8a /github. com/qemu/ qemu/commit/ 4a910e1f6ab4155 ec8b24c49b2585c c486916985
[2]: https:/
[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