mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-05-28 13:05:47 +03:00
Merge pull request #1778 from rhdrjones/detect-virt
detect-virt: one fix and arm/aarch64 dmi detection
This commit is contained in:
commit
50bcc7f45c
@ -34,7 +34,7 @@
|
||||
|
||||
static int detect_vm_cpuid(void) {
|
||||
|
||||
/* Both CPUID and DMI are x86 specific interfaces... */
|
||||
/* CPUID is an x86 specific interface. */
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
|
||||
static const struct {
|
||||
@ -144,11 +144,10 @@ static int detect_vm_device_tree(void) {
|
||||
}
|
||||
|
||||
static int detect_vm_dmi(void) {
|
||||
|
||||
/* Both CPUID and DMI are x86 specific interfaces... */
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
|
||||
|
||||
static const char *const dmi_vendors[] = {
|
||||
"/sys/class/dmi/id/product_name", /* Test this before sys_vendor to detect KVM over QEMU */
|
||||
"/sys/class/dmi/id/sys_vendor",
|
||||
"/sys/class/dmi/id/board_vendor",
|
||||
"/sys/class/dmi/id/bios_vendor"
|
||||
@ -158,6 +157,7 @@ static int detect_vm_dmi(void) {
|
||||
const char *vendor;
|
||||
int id;
|
||||
} dmi_vendor_table[] = {
|
||||
{ "KVM", VIRTUALIZATION_KVM },
|
||||
{ "QEMU", VIRTUALIZATION_QEMU },
|
||||
/* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
|
||||
{ "VMware", VIRTUALIZATION_VMWARE },
|
||||
@ -267,12 +267,7 @@ int detect_vm(void) {
|
||||
if (cached_found >= 0)
|
||||
return cached_found;
|
||||
|
||||
/* Try xen capabilities file first, if not found try
|
||||
* high-level hypervisor sysfs file:
|
||||
*
|
||||
* https://bugs.freedesktop.org/show_bug.cgi?id=77271 */
|
||||
|
||||
r = detect_vm_xen();
|
||||
r = detect_vm_cpuid();
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r != VIRTUALIZATION_NONE)
|
||||
@ -284,7 +279,14 @@ int detect_vm(void) {
|
||||
if (r != VIRTUALIZATION_NONE)
|
||||
goto finish;
|
||||
|
||||
r = detect_vm_cpuid();
|
||||
/* x86 xen will most likely be detected by cpuid. If not (most likely
|
||||
* because we're not an x86 guest), then we should try the xen capabilities
|
||||
* file next. If that's not found, then we check for the high-level
|
||||
* hypervisor sysfs file:
|
||||
*
|
||||
* https://bugs.freedesktop.org/show_bug.cgi?id=77271 */
|
||||
|
||||
r = detect_vm_xen();
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r != VIRTUALIZATION_NONE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user