import virt-what-1.18-12.el8

This commit is contained in:
CentOS Sources 2021-10-06 08:33:48 -04:00 committed by Stepan Oksanichenko
parent 176519fd26
commit cdfa675964
25 changed files with 3761 additions and 26 deletions

View File

@ -1,7 +1,7 @@
From eefc1e7e3dd8fb422baf0f13aec1df9880541b83 Mon Sep 17 00:00:00 2001
From: Jasper Lievisse Adriaanse <bug@jasper.la>
Date: Thu, 10 Aug 2017 08:44:01 +0100
Subject: [PATCH 01/12] Missing have_cpuinfo check.
Subject: [PATCH 01/22] Missing have_cpuinfo check.
---
virt-what.in | 2 +-
@ -21,5 +21,5 @@ index 8c27b11..9050035 100644
fi
fi
--
2.19.0.rc0
2.32.0

View File

@ -0,0 +1,60 @@
From 60d903fbb7653bc9754228bdab4c6933fcda1e72 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 13 Apr 2021 09:35:07 +0100
Subject: [PATCH] Simplify and fix invocation of cpuid.
Fixes a crash on some platforms identified by Yongkui Guo in
https://bugzilla.redhat.com/show_bug.cgi?id=1756381#c15
---
virt-what-cpuid-helper.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/virt-what-cpuid-helper.c b/virt-what-cpuid-helper.c
index 9c6cdb2..fdceb62 100644
--- a/virt-what-cpuid-helper.c
+++ b/virt-what-cpuid-helper.c
@@ -47,17 +47,25 @@ known_signature (const char *sig)
0;
}
+/* Copied from the Linux kernel definition in
+ * arch/x86/include/asm/processor.h
+ */
+static inline void
+cpuid (uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx)
+{
+ asm volatile ("cpuid"
+ : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
+ : "0" (*eax), "2" (*ecx)
+ : "memory");
+}
+
static uint32_t
-cpuid (uint32_t eax, char *sig)
+cpuid_leaf (uint32_t eax, char *sig)
{
uint32_t *sig32 = (uint32_t *) sig;
- asm volatile (
- "xchgl %%ebx,%1; xor %%ebx,%%ebx; cpuid; xchgl %%ebx,%1"
- : "=a" (eax), "+r" (sig32[0]), "=c" (sig32[1]), "=d" (sig32[2])
- : "0" (eax));
- sig[12] = 0;
-
+ cpuid (&eax, &sig32[0], &sig32[1], &sig32[2]);
+ sig[12] = 0; /* \0-terminate the string to make string comparison possible */
return eax;
}
@@ -87,7 +95,7 @@ cpu_sig (void)
*/
for (leaf = base + 0xff00; leaf >= base; leaf -= 0x100) {
memset (sig, 0, sizeof sig);
- cpuid (leaf, sig);
+ cpuid_leaf (leaf, sig);
if (known_signature (sig)) {
puts (sig);
break;
--
2.29.0.rc2

View File

@ -1,7 +1,7 @@
From 9d90704a05dee7704470eff818a1c44aeef6c880 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
Date: Fri, 4 Aug 2017 12:02:08 -0300
Subject: [PATCH 02/12] Remove bashisms
Subject: [PATCH 02/22] Remove bashisms
Use [ instead of [[ so we fall back to test if necessary:
@ -44,5 +44,5 @@ index 9050035..a05e0db 100644
fi
fi
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From a821dc9961d457c086fffcc16a911cb6f9f8659a Mon Sep 17 00:00:00 2001
From: xiliang <xiliang@redhat.com>
Date: Sun, 18 Jun 2017 00:33:28 +0800
Subject: [PATCH 03/12] As xen pv guest can access cpuid from Intel CPUs
Subject: [PATCH 03/22] As xen pv guest can access cpuid from Intel CPUs
started IvyBridge onwards have CPUID Faulting, added one more check in
virt-what.
@ -32,5 +32,5 @@ index a05e0db..247348e 100644
# Check for AWS
if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 7db94c8fe63f2c7ec3ac27cc5ff54ec1e1686aeb Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 17 Oct 2017 14:47:09 +0100
Subject: [PATCH 04/12] Recognize ppc64le (little endian) virtualization
Subject: [PATCH 04/22] Recognize ppc64le (little endian) virtualization
(RHBZ#1147876).
Tested by Laurent Vivier, see:
@ -24,5 +24,5 @@ index 247348e..29b7b0d 100644
if grep -q 'model.*emulated by qemu' "${root}/proc/cpuinfo"; then
echo ibm_power-kvm
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 52870e8a264653d7921e8a4edff56d4b050614d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
Date: Sat, 27 Jan 2018 13:11:36 +0100
Subject: [PATCH 05/12] Determine architecture via 'uname -m'
Subject: [PATCH 05/22] Determine architecture via 'uname -m'
'uname -p' only gives unknown on x86_64, i386, arm6l (rpi) and aarch64
(scaleways).
@ -26,5 +26,5 @@ index 29b7b0d..2011ff4 100644
# Check for VMware.
# cpuid check added by Chetan Loke.
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From d7fd8a7843030d2b1719353edfcd49dba3000122 Mon Sep 17 00:00:00 2001
From: Jasper Lievisse Adriaanse <jasper@humppa.nl>
Date: Wed, 25 Apr 2018 16:41:32 +0200
Subject: [PATCH 06/12] Allow using sysctl, for example when /proc isn't
Subject: [PATCH 06/22] Allow using sysctl, for example when /proc isn't
available
---
@ -40,5 +40,5 @@ index 2011ff4..d037a99 100644
# This is known to fail for qemu with the explicit -cpu
# option, since /proc/cpuinfo will not contain the QEMU
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 5efe9f7a58cd0cdc6f4c279c7f0a69e57fbda56f Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 28 Aug 2018 18:32:41 +0100
Subject: [PATCH 07/12] Replace == with = since the former is a bash-ism.
Subject: [PATCH 07/22] Replace == with = since the former is a bash-ism.
Thanks: Eric Blake.
@ -24,5 +24,5 @@ index d037a99..a2f8f19 100644
fail () {
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 147c648e950ef45b7a5b7b3e8cb30b89c435593b Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:04:24 +0000
Subject: [PATCH 08/12] aws: Detect AWS from dmidecode information.
Subject: [PATCH 08/22] aws: Detect AWS from dmidecode information.
Move the AWS detection out from under Xen. AWS runs on KVM and
baremetal these days. The dmidecode information for KVM and baremetal
@ -75,5 +75,5 @@ index ebfc190..5a0bdfc 100644
=item B<bhyve>
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 4bceb38a6102ca95bde79205efaa643a0824d3a2 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:35:34 +0000
Subject: [PATCH 09/12] tests: Fix tests when run on AWS.
Subject: [PATCH 09/22] tests: Fix tests when run on AWS.
When running on AWS two of the tests failed. This was because the
tests did _not_ include a working dmidecode binary, hence the platform
@ -28,5 +28,5 @@ diff --git a/tests/ppc64-baremetal/sbin/dmidecode b/tests/ppc64-baremetal/sbin/d
old mode 100644
new mode 100755
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 129a25f9854930928351c8cc3913a5b9a1c558b4 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:23:45 +0000
Subject: [PATCH 10/12] aws: Add regression test for AWS on KVM on x86_64
Subject: [PATCH 10/22] aws: Add regression test for AWS on KVM on x86_64
architecture.
---
@ -286,5 +286,5 @@ index 0000000..db4c19f
+ exit 1
+fi
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 298a15ead59c2dbeb9b2fabe7fb502100fdd4dc7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:43:20 +0000
Subject: [PATCH 11/12] aws: Add regression test for AWS on baremetal on x86_64
Subject: [PATCH 11/22] aws: Add regression test for AWS on baremetal on x86_64
architecture.
---
@ -3231,5 +3231,5 @@ index 0000000..d456163
+ exit 1
+fi
--
2.19.0.rc0
2.32.0

View File

@ -1,7 +1,7 @@
From 350291e1ca417eab9d2aa2408589f0259cac007c Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:23:45 +0000
Subject: [PATCH 12/12] aws: Add regression test for AWS on Xen on x86_64
Subject: [PATCH 12/22] aws: Add regression test for AWS on Xen on x86_64
architecture.
---
@ -354,5 +354,5 @@ index 0000000..22b7f83
+ exit 1
+fi
--
2.19.0.rc0
2.32.0

View File

@ -0,0 +1,244 @@
From f25e07d43db40355b321493f78758ea058fa3849 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Wed, 31 Oct 2018 15:23:45 +0000
Subject: [PATCH 13/22] aws: Add regression test for AWS on KVM on ARM
architecture.
---
Makefile.am | 1 +
tests/aws-kvm-arm/proc/cpuinfo | 9 +++
tests/aws-kvm-arm/proc/self/status | 54 +++++++++++++++
tests/aws-kvm-arm/sbin/dmidecode | 68 +++++++++++++++++++
tests/aws-kvm-arm/sbin/uname | 2 +
tests/aws-kvm-arm/sbin/virt-what-cpuid-helper | 2 +
tests/test-aws-kvm-arm.sh | 36 ++++++++++
7 files changed, 172 insertions(+)
create mode 100644 tests/aws-kvm-arm/proc/cpuinfo
create mode 100644 tests/aws-kvm-arm/proc/self/status
create mode 100755 tests/aws-kvm-arm/sbin/dmidecode
create mode 100755 tests/aws-kvm-arm/sbin/uname
create mode 100755 tests/aws-kvm-arm/sbin/virt-what-cpuid-helper
create mode 100755 tests/test-aws-kvm-arm.sh
diff --git a/Makefile.am b/Makefile.am
index 22680a0..67502fc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -40,6 +40,7 @@ endif
TESTS = \
tests/test-aws-baremetal-x86.sh \
+ tests/test-aws-kvm-arm.sh \
tests/test-aws-kvm-x86.sh \
tests/test-aws-xen-x86.sh \
tests/test-baremetal.sh \
diff --git a/tests/aws-kvm-arm/proc/cpuinfo b/tests/aws-kvm-arm/proc/cpuinfo
new file mode 100644
index 0000000..bc5a5bb
--- /dev/null
+++ b/tests/aws-kvm-arm/proc/cpuinfo
@@ -0,0 +1,9 @@
+processor : 0
+BogoMIPS : 166.66
+Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
+CPU implementer : 0x41
+CPU architecture: 8
+CPU variant : 0x0
+CPU part : 0xd08
+CPU revision : 3
+
diff --git a/tests/aws-kvm-arm/proc/self/status b/tests/aws-kvm-arm/proc/self/status
new file mode 100644
index 0000000..121a8cc
--- /dev/null
+++ b/tests/aws-kvm-arm/proc/self/status
@@ -0,0 +1,54 @@
+Name: cat
+Umask: 0022
+State: R (running)
+Tgid: 17874
+Ngid: 0
+Pid: 17874
+PPid: 9992
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 256
+Groups: 0
+NStgid: 17874
+NSpid: 17874
+NSpgid: 17874
+NSsid: 9992
+VmPeak: 109760 kB
+VmSize: 109760 kB
+VmLck: 0 kB
+VmPin: 0 kB
+VmHWM: 832 kB
+VmRSS: 832 kB
+RssAnon: 448 kB
+RssFile: 384 kB
+RssShmem: 0 kB
+VmData: 384 kB
+VmStk: 192 kB
+VmExe: 64 kB
+VmLib: 1664 kB
+VmPTE: 192 kB
+VmPMD: 128 kB
+VmSwap: 0 kB
+HugetlbPages: 0 kB
+Threads: 1
+SigQ: 0/1470
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000003fffffffff
+CapEff: 0000003fffffffff
+CapBnd: 0000003fffffffff
+CapAmb: 0000000000000000
+NoNewPrivs: 0
+Seccomp: 0
+Speculation Store Bypass: unknown
+Cpus_allowed: 1
+Cpus_allowed_list: 0
+Mems_allowed: 1
+Mems_allowed_list: 0
+voluntary_ctxt_switches: 0
+nonvoluntary_ctxt_switches: 0
diff --git a/tests/aws-kvm-arm/sbin/dmidecode b/tests/aws-kvm-arm/sbin/dmidecode
new file mode 100755
index 0000000..d126758
--- /dev/null
+++ b/tests/aws-kvm-arm/sbin/dmidecode
@@ -0,0 +1,68 @@
+#!/bin/sh -
+cat <<'EOF'
+# dmidecode 3.1
+Getting SMBIOS data from sysfs.
+SMBIOS 2.7 present.
+5 structures occupying 233 bytes.
+Table at 0x7F780000.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Amazon EC2
+ Version: 1.0
+ Release Date: 12/1/2018
+ Address: 0xF0000
+ Runtime Size: 64 kB
+ ROM Size: 64 kB
+ Characteristics:
+ PCI is supported
+ EDD is supported
+ ACPI is supported
+ System is a virtual machine
+ BIOS Revision: 1.0
+
+Handle 0x0001, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Amazon EC2
+ Product Name: a1.medium
+ Version: Not Specified
+ Serial Number: ec2ce86a-12c2-9388-d9b0-8dc833cba752
+ UUID: ec2ce86a-12c2-9388-d9b0-8dc833cba752
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family: Not Specified
+
+Handle 0x0002, DMI type 2, 15 bytes
+Base Board Information
+ Manufacturer: Amazon EC2
+ Product Name: Not Specified
+ Version: Not Specified
+ Serial Number: Not Specified
+ Asset Tag: i-01c1b85d3dcc02ed7
+ Features: None
+ Location In Chassis: Not Specified
+ Chassis Handle: 0x0003
+ Type: Other
+ Contained Object Handles: 0
+
+Handle 0x0003, DMI type 3, 21 bytes
+Chassis Information
+ Manufacturer: Amazon EC2
+ Type: Other
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: Not Specified
+ Asset Tag: Amazon EC2
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: None
+ OEM Information: 0x00000000
+ Height: Unspecified
+ Number Of Power Cords: 1
+ Contained Elements: 0
+
+Handle 0xFEFF, DMI type 127, 4 bytes
+End Of Table
+
+EOF
diff --git a/tests/aws-kvm-arm/sbin/uname b/tests/aws-kvm-arm/sbin/uname
new file mode 100755
index 0000000..bd33a2d
--- /dev/null
+++ b/tests/aws-kvm-arm/sbin/uname
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo aarch64
diff --git a/tests/aws-kvm-arm/sbin/virt-what-cpuid-helper b/tests/aws-kvm-arm/sbin/virt-what-cpuid-helper
new file mode 100755
index 0000000..4475399
--- /dev/null
+++ b/tests/aws-kvm-arm/sbin/virt-what-cpuid-helper
@@ -0,0 +1,2 @@
+#!/bin/sh -
+# prints nothing but exits successfully
diff --git a/tests/test-aws-kvm-arm.sh b/tests/test-aws-kvm-arm.sh
new file mode 100755
index 0000000..8875421
--- /dev/null
+++ b/tests/test-aws-kvm-arm.sh
@@ -0,0 +1,36 @@
+# Test for AWS.
+# Copyright (C) 2018 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+root=tests/aws-kvm-arm
+
+output="$(./virt-what --test-root=$root 2>&1)"
+# XXX At the moment KVM cannot be detected on this platform.
+# We hope to fix that, but for now the only fact printed is "aws".
+expected="aws"
+
+if [ "$output" != "$expected" ]; then
+ echo "$0: test failed because output did not match expected"
+ echo "Expected output was:"
+ echo "----------------------------------------"
+ echo "$expected"
+ echo "----------------------------------------"
+ echo "But the actual output of the program was:"
+ echo "----------------------------------------"
+ echo "$output"
+ echo "----------------------------------------"
+ exit 1
+fi
--
2.32.0

View File

@ -0,0 +1,25 @@
From 56427ce169d5a6dc46ed6c6555ee3f7c4e0843d6 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 3 Oct 2019 09:08:19 +0100
Subject: [PATCH 14/22] build: Remove *~ files on make clean.
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 67502fc..48fd518 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,7 +15,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-CLEANFILES = virt-what
+CLEANFILES = virt-what *~
AM_CPPFLAGS = -Wall
--
2.32.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
From 5c2c251d9aae98e6a629b966bdd8cae2aa1dedaf Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 3 Oct 2019 10:16:08 +0100
Subject: [PATCH 16/22] build: Add .gitignore to tarball.
Mainly to keep maintainer-check-extra-dist happy.
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index b62738f..1cb73b7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,7 +19,7 @@ AM_CPPFLAGS = -Wall
CLEANFILES = virt-what *~
-EXTRA_DIST = virt-what.in virt-what.pod
+EXTRA_DIST = .gitignore virt-what.in virt-what.pod
SUBDIRS = . tests
--
2.32.0

View File

@ -0,0 +1,51 @@
From b6161b67b0bd542169e13cdfa0488a0266e3ae7a Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 3 Oct 2019 10:13:43 +0100
Subject: [PATCH 17/22] maintainer: Add rules for maintainers.
Adds:
make maintainer-check-extra-dist
make maintainer-commit
make maintainer-tag
---
Makefile.am | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 1cb73b7..5435132 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,3 +41,30 @@ virt-what.txt: virt-what.pod
pod2text $? > $@
endif
+
+#----------------------------------------------------------------------
+# Maintainers only!
+
+# Check no files are missing from EXTRA_DIST rules, and that all
+# generated files have been included in the tarball. (Note you must
+# have done 'make dist')
+maintainer-check-extra-dist:
+ @zcat $(PACKAGE_NAME)-$(VERSION).tar.gz | tar tf - | sort | \
+ sed 's,^$(PACKAGE_NAME)-$(VERSION)/,,' > tarfiles
+ @git ls-files | \
+ sort > gitfiles
+ @comm -13 tarfiles gitfiles > comm-out
+ @echo Checking for differences between EXTRA_DIST and git ...
+ @cat comm-out
+ @[ ! -s comm-out ]
+ @rm tarfiles gitfiles comm-out
+ @echo PASS: EXTRA_DIST tests
+
+# Commit everything in the current directory and set the commit
+# message to the current version number.
+maintainer-commit:
+ git commit -a -m "Version $(VERSION)."
+
+# Tag HEAD with the current version.
+maintainer-tag:
+ git tag -a v$(VERSION) -m "Version $(VERSION)." -f
--
2.32.0

View File

@ -0,0 +1,118 @@
From a5471559e7398418f1bb9c538a7bfc8f39e9ae98 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 4 Oct 2019 15:57:42 +0300
Subject: [PATCH 18/22] Fix virt-what-cpuid-helper.
The value returned in %eax is the max_entry (eg. 0x40000000
if there are no further leafs). However it is not reliable.
In addition if there are multiple leafs we should probably
only print the highest one.
Also use uint32_t instead of unsigned int.
Thanks: Paolo Bonzini.
---
virt-what-cpuid-helper.c | 67 ++++++++++++++++++++++++++++------------
1 file changed, 48 insertions(+), 19 deletions(-)
diff --git a/virt-what-cpuid-helper.c b/virt-what-cpuid-helper.c
index 7812545..0cd4a6f 100644
--- a/virt-what-cpuid-helper.c
+++ b/virt-what-cpuid-helper.c
@@ -1,5 +1,5 @@
/* virt-what-cpuid-helper: Are we running inside KVM or Xen HVM?
- * Copyright (C) 2008 Red Hat Inc.
+ * Copyright (C) 2008-2019 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,14 +21,35 @@
*/
#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
#if defined(__i386__) || defined(__x86_64__)
-static unsigned int
-cpuid (unsigned int eax, char *sig)
+/* Known x86 hypervisor signatures. Note that if you add a new test
+ * to virt-what.in you may need to update this list. The signature is
+ * always 12 bytes except in the case of KVM.
+ */
+static int
+known_signature (char *sig)
{
- unsigned int *sig32 = (unsigned int *) sig;
+ return
+ strcmp (sig, "bhyve bhyve ") == 0 ||
+ strcmp (sig, "KVMKVMKVM") == 0 ||
+ strcmp (sig, "LKVMLKVMLKVM") == 0 ||
+ strcmp (sig, "Microsoft Hv") == 0 ||
+ strcmp (sig, "OpenBSDVMM58") == 0 ||
+ strcmp (sig, "TCGTCGTCGTCG") == 0 ||
+ strcmp (sig, "VMwareVMware") == 0 ||
+ strcmp (sig, "XenVMMXenVMM") == 0 ||
+ 0;
+}
+
+static uint32_t
+cpuid (uint32_t eax, char *sig)
+{
+ uint32_t *sig32 = (uint32_t *) sig;
asm volatile (
"xchgl %%ebx,%1; xor %%ebx,%%ebx; cpuid; xchgl %%ebx,%1"
@@ -43,24 +64,32 @@ static void
cpu_sig (void)
{
char sig[13];
- unsigned int base = 0x40000000, leaf = base;
- unsigned int max_entries;
+ const uint32_t base = 0x40000000;
+ uint32_t leaf;
- memset (sig, 0, sizeof sig);
- max_entries = cpuid (leaf, sig);
- puts (sig);
-
- /* Most hypervisors only have information in leaf 0x40000000, but
- * upstream Xen contains further leaf entries (in particular when
- * used with Viridian [HyperV] extensions). CPUID is supposed to
- * return the maximum leaf offset in %eax, so that's what we use,
- * but only if it looks sensible.
+ /* Most hypervisors only have information in leaf 0x40000000.
+ *
+ * Some hypervisors have "Viridian [HyperV] extensions", and those
+ * must appear in slot 0x40000000, but they will also have the true
+ * hypervisor in a higher slot.
+ *
+ * CPUID is supposed to return the maximum leaf offset in %eax, but
+ * this is not reliable. Instead we check the returned signatures
+ * against a known list (the others will be empty or garbage) and
+ * only print the ones we know about. This is OK because if we add
+ * a new test in virt-what we can update the list.
+ *
+ * By searching backwards we only print the highest entry, thus
+ * ignoring Viridian for Xen (and Nutanix). If we ever encounter a
+ * hypervisor that has more than 2 entries we may need to revisit
+ * this.
*/
- if (max_entries > 3 && max_entries < 0x10000) {
- for (leaf = base + 0x100; leaf <= base + max_entries; leaf += 0x100) {
- memset (sig, 0, sizeof sig);
- cpuid (leaf, sig);
+ for (leaf = base + 0xff00; leaf >= base; leaf -= 0x100) {
+ memset (sig, 0, sizeof sig);
+ cpuid (leaf, sig);
+ if (known_signature (sig)) {
puts (sig);
+ break;
}
}
}
--
2.32.0

View File

@ -0,0 +1,405 @@
From 01ea13d9813df93e294b0d9776d4cefd54b1609b Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 4 Oct 2019 16:25:55 +0300
Subject: [PATCH 19/22] Add support for Nutanix Acropolis Hypervisor (AHV)
(RHBZ#1756381).
Thanks: Cristian Seres for providing access to a guest.
---
configure.ac | 2 +
tests/nutanix-ahv/Makefile.am | 28 ++++
tests/nutanix-ahv/proc/cpuinfo | 27 ++++
tests/nutanix-ahv/proc/self/status | 55 ++++++++
tests/nutanix-ahv/sbin/dmidecode | 123 ++++++++++++++++++
tests/nutanix-ahv/sbin/uname | 2 +
tests/nutanix-ahv/sbin/virt-what-cpuid-helper | 2 +
tests/nutanix-ahv/test.sh | 32 +++++
virt-what.in | 10 +-
virt-what.pod | 6 +
10 files changed, 286 insertions(+), 1 deletion(-)
create mode 100644 tests/nutanix-ahv/Makefile.am
create mode 100644 tests/nutanix-ahv/proc/cpuinfo
create mode 100644 tests/nutanix-ahv/proc/self/status
create mode 100755 tests/nutanix-ahv/sbin/dmidecode
create mode 100755 tests/nutanix-ahv/sbin/uname
create mode 100755 tests/nutanix-ahv/sbin/virt-what-cpuid-helper
create mode 100755 tests/nutanix-ahv/test.sh
diff --git a/configure.ac b/configure.ac
index 5e0d9c4..f246e34 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,7 @@ tests="\
lkvm-arm \
lx86 \
lxc \
+ nutanix-ahv \
parallels-desktop \
ppc64-baremetal \
ppc64-kvm \
@@ -93,6 +94,7 @@ AC_CONFIG_FILES([Makefile
tests/lkvm-arm/Makefile
tests/lx86/Makefile
tests/lxc/Makefile
+ tests/nutanix-ahv/Makefile
tests/parallels-desktop/Makefile
tests/ppc64-baremetal/Makefile
tests/ppc64-kvm/Makefile
diff --git a/tests/nutanix-ahv/Makefile.am b/tests/nutanix-ahv/Makefile.am
new file mode 100644
index 0000000..b748df8
--- /dev/null
+++ b/tests/nutanix-ahv/Makefile.am
@@ -0,0 +1,28 @@
+# Makefile for virt-what
+# Copyright (C) 2008-2011 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+CLEANFILES = *~
+
+TESTS = test.sh
+
+EXTRA_DIST = \
+ test.sh \
+ proc/cpuinfo \
+ proc/self/status \
+ sbin/dmidecode \
+ sbin/uname \
+ sbin/virt-what-cpuid-helper
diff --git a/tests/nutanix-ahv/proc/cpuinfo b/tests/nutanix-ahv/proc/cpuinfo
new file mode 100644
index 0000000..d7a1f68
--- /dev/null
+++ b/tests/nutanix-ahv/proc/cpuinfo
@@ -0,0 +1,27 @@
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 15
+model : 6
+model name : Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz
+stepping : 1
+microcode : 0x1
+cpu MHz : 2199.998
+cache size : 16384 KB
+physical id : 0
+siblings : 1
+core id : 0
+cpu cores : 1
+apicid : 0
+initial apicid : 0
+fpu : yes
+fpu_exception : yes
+cpuid level : 13
+wp : yes
+flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat md_clear
+bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs
+bogomips : 4399.99
+clflush size : 64
+cache_alignment : 128
+address sizes : 46 bits physical, 48 bits virtual
+power management:
+
diff --git a/tests/nutanix-ahv/proc/self/status b/tests/nutanix-ahv/proc/self/status
new file mode 100644
index 0000000..7b4eed0
--- /dev/null
+++ b/tests/nutanix-ahv/proc/self/status
@@ -0,0 +1,55 @@
+Name: cat
+Umask: 0022
+State: R (running)
+Tgid: 18508
+Ngid: 0
+Pid: 18508
+PPid: 18506
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 64
+Groups: 0
+NStgid: 18508
+NSpid: 18508
+NSpgid: 18506
+NSsid: 1945
+VmPeak: 5392 kB
+VmSize: 5392 kB
+VmLck: 0 kB
+VmPin: 0 kB
+VmHWM: 760 kB
+VmRSS: 760 kB
+RssAnon: 68 kB
+RssFile: 692 kB
+RssShmem: 0 kB
+VmData: 312 kB
+VmStk: 132 kB
+VmExe: 28 kB
+VmLib: 1456 kB
+VmPTE: 48 kB
+VmSwap: 0 kB
+HugetlbPages: 0 kB
+CoreDumping: 0
+THP_enabled: 1
+Threads: 1
+SigQ: 3/7359
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000003fffffffff
+CapEff: 0000003fffffffff
+CapBnd: 0000003fffffffff
+CapAmb: 0000000000000000
+NoNewPrivs: 0
+Seccomp: 0
+Speculation_Store_Bypass: thread vulnerable
+Cpus_allowed: ffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff
+Cpus_allowed_list: 0-239
+Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
+Mems_allowed_list: 0
+voluntary_ctxt_switches: 0
+nonvoluntary_ctxt_switches: 2
diff --git a/tests/nutanix-ahv/sbin/dmidecode b/tests/nutanix-ahv/sbin/dmidecode
new file mode 100755
index 0000000..3774819
--- /dev/null
+++ b/tests/nutanix-ahv/sbin/dmidecode
@@ -0,0 +1,123 @@
+#!/bin/sh -
+cat <<'EOF'
+i# dmidecode 3.2
+Getting SMBIOS data from sysfs.
+SMBIOS 2.8 present.
+9 structures occupying 486 bytes.
+Table at 0x000F73C0.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: SeaBIOS
+ Version: 1.9.1-5.el6
+ Release Date: 04/01/2014
+ Address: 0xE8000
+ Runtime Size: 96 kB
+ ROM Size: 64 kB
+ Characteristics:
+ BIOS characteristics not supported
+ Targeted content distribution is supported
+ BIOS Revision: 0.0
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Nutanix
+ Product Name: AHV
+ Version: RHEL 7.3.0 PC (i440FX + PIIX, 1996)
+ Serial Number: B913C223-EEDE-4DFC-BB43-BE1495F4388D
+ UUID: b913c223-eede-4dfc-bb43-be1495f4388d
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family: Red Hat Enterprise Linux
+
+Handle 0x0300, DMI type 3, 21 bytes
+Chassis Information
+ Manufacturer: Red Hat
+ Type: Other
+ Lock: Not Present
+ Version: RHEL 7.3.0 PC (i440FX + PIIX, 1996)
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: Unknown
+ OEM Information: 0x00000000
+ Height: Unspecified
+ Number Of Power Cords: Unspecified
+ Contained Elements: 0
+
+Handle 0x0400, DMI type 4, 42 bytes
+Processor Information
+ Socket Designation: CPU 0
+ Type: Central Processor
+ Family: Other
+ Manufacturer: Red Hat
+ ID: 61 0F 00 00 FF FB 8B 0F
+ Version: RHEL 7.3.0 PC (i440FX + PIIX, 1996)
+ Voltage: Unknown
+ External Clock: Unknown
+ Max Speed: 2000 MHz
+ Current Speed: 2000 MHz
+ Status: Populated, Enabled
+ Upgrade: Other
+ L1 Cache Handle: Not Provided
+ L2 Cache Handle: Not Provided
+ L3 Cache Handle: Not Provided
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Core Count: 1
+ Core Enabled: 1
+ Thread Count: 1
+ Characteristics: None
+
+Handle 0x1000, DMI type 16, 23 bytes
+Physical Memory Array
+ Location: Other
+ Use: System Memory
+ Error Correction Type: Multi-bit ECC
+ Maximum Capacity: 2 GB
+ Error Information Handle: Not Provided
+ Number Of Devices: 1
+
+Handle 0x1100, DMI type 17, 40 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: Not Provided
+ Total Width: Unknown
+ Data Width: Unknown
+ Size: 2048 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM 0
+ Bank Locator: Not Specified
+ Type: RAM
+ Type Detail: Other
+ Speed: Unknown
+ Manufacturer: Red Hat
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Rank: Unknown
+ Configured Memory Speed: Unknown
+ Minimum Voltage: Unknown
+ Maximum Voltage: Unknown
+ Configured Voltage: Unknown
+
+Handle 0x1300, DMI type 19, 31 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x0007FFFFFFF
+ Range Size: 2 GB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x2000, DMI type 32, 11 bytes
+System Boot Information
+ Status: No errors detected
+
+Handle 0x7F00, DMI type 127, 4 bytes
+End Of Table
+
+EOF
diff --git a/tests/nutanix-ahv/sbin/uname b/tests/nutanix-ahv/sbin/uname
new file mode 100755
index 0000000..ab0ec89
--- /dev/null
+++ b/tests/nutanix-ahv/sbin/uname
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo x86_64
diff --git a/tests/nutanix-ahv/sbin/virt-what-cpuid-helper b/tests/nutanix-ahv/sbin/virt-what-cpuid-helper
new file mode 100755
index 0000000..f52a9d7
--- /dev/null
+++ b/tests/nutanix-ahv/sbin/virt-what-cpuid-helper
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo KVMKVMKVM
diff --git a/tests/nutanix-ahv/test.sh b/tests/nutanix-ahv/test.sh
new file mode 100755
index 0000000..3d934b2
--- /dev/null
+++ b/tests/nutanix-ahv/test.sh
@@ -0,0 +1,32 @@
+# Test for Nutanix AHV
+# Copyright (C) 2019 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+expected="nutanix_ahv"
+
+if [ "$output" != "$expected" ]; then
+ echo "$0: test failed because output did not match expected"
+ echo "Expected output was:"
+ echo "----------------------------------------"
+ echo "$expected"
+ echo "----------------------------------------"
+ echo "But the actual output of the program was:"
+ echo "----------------------------------------"
+ echo "$output"
+ echo "----------------------------------------"
+ exit 1
+fi
diff --git a/virt-what.in b/virt-what.in
index f685461..9eafa05 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -1,6 +1,6 @@
#!/bin/sh -
# @configure_input@
-# Copyright (C) 2008-2017 Red Hat Inc.
+# Copyright (C) 2008-2019 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -220,6 +220,14 @@ if echo "$dmi" | grep -q 'Vendor: Parallels'; then
skip_qemu_kvm=true
fi
+# Check for Nutanix AHV.
+# This is sufficiently different from KVM and has Viridian extensions,
+# so skip the KVM test.
+if echo "$dmi" | grep -q 'Manufacturer: Nutanix'; then
+ echo nutanix_ahv
+ skip_qemu_kvm=true
+fi
+
# Check for oVirt/RHEV.
if echo "$dmi" | grep -q 'Manufacturer: oVirt'; then
echo ovirt
diff --git a/virt-what.pod b/virt-what.pod
index 5a0bdfc..ea5cb77 100644
--- a/virt-what.pod
+++ b/virt-what.pod
@@ -177,6 +177,12 @@ is lkvm (a.k.a kvmtool).
Status: contributed by Andrew Jones
+=item B<nutanix_ahv>
+
+The guest is running inside Nutanix Acropolis Hypervisor (AHV).
+
+Status: confirmed by RWMJ.
+
=item B<openvz>
The guest appears to be running inside an OpenVZ or Virtuozzo
--
2.32.0

View File

@ -0,0 +1,38 @@
From e0443f1fc78f2a79c073dbdf4133bec41c4c0591 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 4 Oct 2019 18:30:01 +0100
Subject: [PATCH 20/22] helper: Fix KVM signature.
Thanks: Paolo Bonzini.
---
virt-what-cpuid-helper.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/virt-what-cpuid-helper.c b/virt-what-cpuid-helper.c
index 0cd4a6f..9c6cdb2 100644
--- a/virt-what-cpuid-helper.c
+++ b/virt-what-cpuid-helper.c
@@ -28,15 +28,16 @@
#if defined(__i386__) || defined(__x86_64__)
/* Known x86 hypervisor signatures. Note that if you add a new test
- * to virt-what.in you may need to update this list. The signature is
- * always 12 bytes except in the case of KVM.
+ * to virt-what.in you may need to update this list. Note the
+ * signature is always 12 bytes long, plus we add \0 to the end to
+ * make it 13 bytes.
*/
static int
-known_signature (char *sig)
+known_signature (const char *sig)
{
return
strcmp (sig, "bhyve bhyve ") == 0 ||
- strcmp (sig, "KVMKVMKVM") == 0 ||
+ memcmp (sig, "KVMKVMKVM\0\0\0", 12) == 0 ||
strcmp (sig, "LKVMLKVMLKVM") == 0 ||
strcmp (sig, "Microsoft Hv") == 0 ||
strcmp (sig, "OpenBSDVMM58") == 0 ||
--
2.32.0

View File

@ -0,0 +1,27 @@
From 71ef45e9543278e9920e449b71e0da269662ebc9 Mon Sep 17 00:00:00 2001
From: willem van de velde <williamvdvelde@gmail.com>
Date: Tue, 22 Oct 2019 11:58:01 +0100
Subject: [PATCH 21/22] Fix incorrect detection of MS Surfacebook 2 as a
virtual machine.
---
virt-what.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/virt-what.in b/virt-what.in
index 9eafa05..a61ce91 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -132,7 +132,8 @@ fi
# The negative check for cpuid is to distinguish this from Hyper-V
# which also has the same manufacturer string in the SM-BIOS data.
if [ "$cpuid" != "Microsoft Hv" ] &&
- echo "$dmi" | grep -q 'Manufacturer: Microsoft Corporation'; then
+ echo "$dmi" | grep -q 'Manufacturer: Microsoft Corporation' &&
+ echo "$dmi" | grep -q 'Product Name: Virtual Machine'; then
echo virtualpc
fi
--
2.32.0

View File

@ -0,0 +1,267 @@
From 8640dad5eb60eced313359e7ecea19b07d77242f Mon Sep 17 00:00:00 2001
From: Razvan Corneliu <razvan.vilt@linux360.ro>
Date: Mon, 10 May 2021 21:02:27 +0100
Subject: [PATCH 22/22] Add support for VMware ESXi on ARM
Virt-what doesn't recognize VMware VMs for AARCH64/ARM (with licensing
implications in ESXi Fling for ARM and Fusion v.Next for ARM). I've
created and attached a patch that adds both support for recognizing
ESXi and the automated tests for it.
---
configure.ac | 2 +
tests/esx-arm/Makefile.am | 30 ++++++++++
tests/esx-arm/proc/cpuinfo | 18 ++++++
.../proc/device-tree/hypervisor/compatible | 1 +
.../esx-arm/proc/device-tree/hypervisor/name | 1 +
tests/esx-arm/proc/self/status | 55 +++++++++++++++++++
tests/esx-arm/sbin/dmidecode | 2 +
tests/esx-arm/sbin/uname | 2 +
tests/esx-arm/sbin/virt-what-cpuid-helper | 2 +
tests/esx-arm/test.sh | 32 +++++++++++
virt-what.in | 4 ++
11 files changed, 149 insertions(+)
create mode 100644 tests/esx-arm/Makefile.am
create mode 100644 tests/esx-arm/proc/cpuinfo
create mode 100644 tests/esx-arm/proc/device-tree/hypervisor/compatible
create mode 100644 tests/esx-arm/proc/device-tree/hypervisor/name
create mode 100644 tests/esx-arm/proc/self/status
create mode 100755 tests/esx-arm/sbin/dmidecode
create mode 100755 tests/esx-arm/sbin/uname
create mode 100755 tests/esx-arm/sbin/virt-what-cpuid-helper
create mode 100755 tests/esx-arm/test.sh
diff --git a/configure.ac b/configure.ac
index f246e34..f9b3096 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,7 @@ tests="\
baremetal \
bhyve \
docker \
+ esx-arm \
esx4.1 \
hyperv \
kvm \
@@ -84,6 +85,7 @@ AC_CONFIG_FILES([Makefile
tests/baremetal/Makefile
tests/bhyve/Makefile
tests/docker/Makefile
+ tests/esx-arm/Makefile
tests/esx4.1/Makefile
tests/hyperv/Makefile
tests/kvm/Makefile
diff --git a/tests/esx-arm/Makefile.am b/tests/esx-arm/Makefile.am
new file mode 100644
index 0000000..b87ec83
--- /dev/null
+++ b/tests/esx-arm/Makefile.am
@@ -0,0 +1,30 @@
+# Makefile for virt-what
+# Copyright (C) 2008-2011 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+CLEANFILES = *~
+
+TESTS = test.sh
+
+EXTRA_DIST = \
+ test.sh \
+ proc/cpuinfo \
+ proc/device-tree/hypervisor/compatible \
+ proc/device-tree/hypervisor/name \
+ proc/self/status \
+ sbin/dmidecode \
+ sbin/uname \
+ sbin/virt-what-cpuid-helper
diff --git a/tests/esx-arm/proc/cpuinfo b/tests/esx-arm/proc/cpuinfo
new file mode 100644
index 0000000..246b574
--- /dev/null
+++ b/tests/esx-arm/proc/cpuinfo
@@ -0,0 +1,18 @@
+processor : 0
+BogoMIPS : 108.00
+Features : fp asimd evtstrm crc32 cpuid
+CPU implementer : 0x41
+CPU architecture: 8
+CPU variant : 0x0
+CPU part : 0xd08
+CPU revision : 3
+
+processor : 1
+BogoMIPS : 108.00
+Features : fp asimd evtstrm crc32 cpuid
+CPU implementer : 0x41
+CPU architecture: 8
+CPU variant : 0x0
+CPU part : 0xd08
+CPU revision : 3
+
diff --git a/tests/esx-arm/proc/device-tree/hypervisor/compatible b/tests/esx-arm/proc/device-tree/hypervisor/compatible
new file mode 100644
index 0000000..0554874
--- /dev/null
+++ b/tests/esx-arm/proc/device-tree/hypervisor/compatible
@@ -0,0 +1 @@
+vmware
diff --git a/tests/esx-arm/proc/device-tree/hypervisor/name b/tests/esx-arm/proc/device-tree/hypervisor/name
new file mode 100644
index 0000000..d508e44
--- /dev/null
+++ b/tests/esx-arm/proc/device-tree/hypervisor/name
@@ -0,0 +1 @@
+hypervisor
diff --git a/tests/esx-arm/proc/self/status b/tests/esx-arm/proc/self/status
new file mode 100644
index 0000000..13dd246
--- /dev/null
+++ b/tests/esx-arm/proc/self/status
@@ -0,0 +1,55 @@
+Name: cat
+Umask: 0022
+State: R (running)
+Tgid: 292937
+Ngid: 0
+Pid: 292937
+PPid: 10956
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 256
+Groups: 0
+NStgid: 292937
+NSpid: 292937
+NSpgid: 292937
+NSsid: 10956
+VmPeak: 6400 kB
+VmSize: 6400 kB
+VmLck: 0 kB
+VmPin: 0 kB
+VmHWM: 960 kB
+VmRSS: 960 kB
+RssAnon: 448 kB
+RssFile: 512 kB
+RssShmem: 0 kB
+VmData: 640 kB
+VmStk: 192 kB
+VmExe: 64 kB
+VmLib: 1600 kB
+VmPTE: 384 kB
+VmSwap: 0 kB
+HugetlbPages: 0 kB
+CoreDumping: 0
+THP_enabled: 1
+Threads: 1
+SigQ: 2/3947
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000003fffffffff
+CapEff: 0000003fffffffff
+CapBnd: 0000003fffffffff
+CapAmb: 0000000000000000
+NoNewPrivs: 0
+Seccomp: 0
+Speculation_Store_Bypass: vulnerable
+Cpus_allowed: 3
+Cpus_allowed_list: 0-1
+Mems_allowed: 01
+Mems_allowed_list: 0
+voluntary_ctxt_switches: 1
+nonvoluntary_ctxt_switches: 0
diff --git a/tests/esx-arm/sbin/dmidecode b/tests/esx-arm/sbin/dmidecode
new file mode 100755
index 0000000..e53c12f
--- /dev/null
+++ b/tests/esx-arm/sbin/dmidecode
@@ -0,0 +1,2 @@
+#!/bin/sh -
+exit 1
diff --git a/tests/esx-arm/sbin/uname b/tests/esx-arm/sbin/uname
new file mode 100755
index 0000000..bd33a2d
--- /dev/null
+++ b/tests/esx-arm/sbin/uname
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo aarch64
diff --git a/tests/esx-arm/sbin/virt-what-cpuid-helper b/tests/esx-arm/sbin/virt-what-cpuid-helper
new file mode 100755
index 0000000..77a6692
--- /dev/null
+++ b/tests/esx-arm/sbin/virt-what-cpuid-helper
@@ -0,0 +1,2 @@
+#!/bin/sh -
+# nothing
diff --git a/tests/esx-arm/test.sh b/tests/esx-arm/test.sh
new file mode 100755
index 0000000..344afef
--- /dev/null
+++ b/tests/esx-arm/test.sh
@@ -0,0 +1,32 @@
+# Test for ESXi on ARM
+# Copyright (C) 2008-2011 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+expected="vmware"
+
+if [ "$output" != "$expected" ]; then
+ echo "$0: test failed because output did not match expected"
+ echo "Expected output was:"
+ echo "----------------------------------------"
+ echo "$expected"
+ echo "----------------------------------------"
+ echo "But the actual output of the program was:"
+ echo "----------------------------------------"
+ echo "$output"
+ echo "----------------------------------------"
+ exit 1
+fi
diff --git a/virt-what.in b/virt-what.in
index a61ce91..59743c3 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -264,6 +264,10 @@ elif [ "$arch" = "arm" ] || [ "$arch" = "aarch64" ]; then
echo xen
skip_qemu_kvm=true
skip_lkvm=true
+ elif [ -d "${root}/proc/device-tree/hypervisor" ] &&
+ grep -q "vmware" "${root}/proc/device-tree/hypervisor/compatible"; then
+ echo vmware
+ skip_lkvm=true
fi
elif [ "$arch" = "ia64" ]; then
if [ -d "${root}/sys/bus/xen" -a ! -d "${root}/sys/bus/xen-backend" ]; then
--
2.32.0

28
SOURCES/gitignore Normal file
View File

@ -0,0 +1,28 @@
*~
*.log
*.trs
*.o
/virt-what-*.tar.gz
/.deps
/Makefile
/Makefile.in
/aclocal.m4
/autom4te.cache
/compile
/config.guess
/config.h
/config.h.in
/config.log
/config.status
/config.sub
/configure
/depcomp
/install-sh
/missing
/stamp-h1
/test-driver
/virt-what
/virt-what-cpuid-helper
/virt-what.1
/virt-what.txt

View File

@ -1,13 +1,20 @@
Name: virt-what
Version: 1.18
Release: 6%{?dist}
Release: 12%{?dist}
Summary: Detect if we are running in a virtual machine
License: GPLv2+
URL: http://people.redhat.com/~rjones/virt-what/
Source0: http://people.redhat.com/~rjones/virt-what/files/%{name}-%{version}.tar.gz
# Some of the patches below apply to .gitignore, but that file was not
# included in the tarball before v1.20. This is the version from
# v1.18 upstream allowing patching to go ahead.
Source1: gitignore
# Patches from upstream since 1.18 was released.
# NB: These patches are also stored in this upstream branch:
# http://git.annexia.org/?p=virt-what.git;a=shortlog;h=refs/heads/rhel-8.2
Patch0001: 0001-Missing-have_cpuinfo-check.patch
Patch0002: 0002-Remove-bashisms.patch
Patch0003: 0003-As-xen-pv-guest-can-access-cpuid-from-Intel-CPUs-sta.patch
@ -21,6 +28,24 @@ Patch0009: 0009-tests-Fix-tests-when-run-on-AWS.patch
Patch0010: 0010-aws-Add-regression-test-for-AWS-on-KVM-on-x86_64-arc.patch
Patch0011: 0011-aws-Add-regression-test-for-AWS-on-baremetal-on-x86_.patch
Patch0012: 0012-aws-Add-regression-test-for-AWS-on-Xen-on-x86_64-arc.patch
Patch0013: 0013-aws-Add-regression-test-for-AWS-on-KVM-on-ARM-archit.patch
# Refactor build and tests.
Patch0014: 0014-build-Remove-files-on-make-clean.patch
Patch0015: 0015-Arrange-tests-in-subdirectories.patch
Patch0016: 0016-build-Add-.gitignore-to-tarball.patch
Patch0017: 0017-maintainer-Add-rules-for-maintainers.patch
# Support for Nutanix AHV (RHBZ#1756381).
Patch0018: 0018-Fix-virt-what-cpuid-helper.patch
Patch0019: 0019-Add-support-for-Nutanix-Acropolis-Hypervisor-AHV-RHB.patch
Patch0020: 0020-helper-Fix-KVM-signature.patch
# Support for virtualized MS Surfacebook 2.
Patch0021: 0021-Fix-incorrect-detection-of-MS-Surfacebook-2-as-a-vir.patch
# Support for VMware on aarch64 (RHBZ#1959154).
Patch0022: 0022-Add-support-for-VMware-ESXi-on-ARM.patch
# Fix crash on non-KVM platforms through incorrect use of CPUID in
# patch 0018 (https://bugzilla.redhat.com/show_bug.cgi?id=1756381#c15).
Patch0023: 0001-Simplify-and-fix-invocation-of-cpuid.patch
# Patches touch Makefile.am:
BuildRequires: autoconf, automake
@ -94,7 +119,18 @@ Current types of virtualization detected:
%prep
%autosetup -S git
# We can go back to autosetup once we rebase to >= v1.20 which
# includes the .gitignore file in the tarball.
#autosetup -S git
# But until then ...
%setup -q -n %{name}-%{version}
cp %{SOURCE1} .gitignore
git init
git config user.email "noone@example.com"
git config user.name "no one"
git add .
git commit -a -q -m "%{version} baseline"
git am %{patches} </dev/null
%build
@ -122,6 +158,30 @@ fi
%changelog
* Fri Jun 18 2021 Richard W.M. Jones <rjones@redhat.com> - 1.18-12
- Support for VMware on aarch64
resolves: rhbz#1959154
* Wed Jun 02 2021 Richard W.M. Jones <rjones@redhat.com> - 1.18-11
- Add gating tests
resolves: rhbz#1967094
* Wed Apr 28 2021 Richard W.M. Jones <rjones@redhat.com> - 1.18-10
- Rebuild for fixed binutils on aarch64
resolves: rhbz#1954455
* Tue Apr 13 2021 Richard W.M. Jones <rjones@redhat.com> - 1.18-9
- Fix crash on non-KVM platforms through incorrect use of CPUID
related: rhbz#1756381
* Tue Dec 10 2019 Richard W.M. Jones <rjones@redhat.com> - 1.18-8
- Add support for Nutanix AHV
resolves: rhbz#1756381
- Add all patches since 1.18 was released, up to 1.20 and beyond.
* Thu Mar 21 2019 Richard W.M. Jones <rjones@redhat.com> - 1.18-7
- Add gating tests resolves: rhbz#1682785
* Wed Oct 31 2018 Richard W.M. Jones <rjones@redhat.com> - 1.18-6
- Add further patches to fix AWS support
resolves: rhbz#1644497