1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-04 17:47:03 +03:00

virt: fix detection of Parallels virtualization

If Parallels virtualization is detected from DMI, then trust that over CPUID.

Fixes issue caused by 28b1a3eac252d471de4fbb6f317353af30d68878.

Fixes #23856.
This commit is contained in:
Yu Watanabe 2022-06-29 06:17:44 +09:00 committed by Zbigniew Jędrzejewski-Szmek
parent 969e1b86c2
commit 840a49f3dc

View File

@ -436,18 +436,22 @@ Virtualization detect_vm(void) {
/* We have to use the correct order here:
*
* First, try to detect Oracle Virtualbox and Amazon EC2 Nitro, even if they use KVM, as well as Xen even if
* it cloaks as Microsoft Hyper-V. Attempt to detect uml at this stage also since it runs as a user-process
* nested inside other VMs. Also check for Xen now, because Xen PV mode does not override CPUID when nested
* inside another hypervisor.
* First, try to detect Oracle Virtualbox, Amazon EC2 Nitro, and Parallels, even if they use KVM,
* as well as Xen even if it cloaks as Microsoft Hyper-V. Attempt to detect uml at this stage also
* since it runs as a user-process nested inside other VMs. Also check for Xen now, because Xen PV
* mode does not override CPUID when nested inside another hypervisor.
*
* Second, try to detect from CPUID, this will report KVM for whatever software is used even if info in DMI is
* overwritten.
* Second, try to detect from CPUID, this will report KVM for whatever software is used even if
* info in DMI is overwritten.
*
* Third, try to detect from DMI. */
dmi = detect_vm_dmi();
if (IN_SET(dmi, VIRTUALIZATION_ORACLE, VIRTUALIZATION_XEN, VIRTUALIZATION_AMAZON)) {
if (IN_SET(dmi,
VIRTUALIZATION_ORACLE,
VIRTUALIZATION_XEN,
VIRTUALIZATION_AMAZON,
VIRTUALIZATION_PARALLELS)) {
v = dmi;
goto finish;
}