1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-05 09:17:44 +03:00

virt: fix detection of Parallels virtualization

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

Fixes issue caused by 28b1a3eac2.

Fixes #23856.

(cherry picked from commit 840a49f3dc)
(cherry picked from commit 0c36233a84)
This commit is contained in:
Yu Watanabe 2022-06-29 06:17:44 +09:00 committed by Zbigniew Jędrzejewski-Szmek
parent 2e54ed4043
commit a53e5e0e2f

View File

@ -432,18 +432,22 @@ int 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)) {
r = dmi;
goto finish;
}