import virt-what-1.18-9.el8

This commit is contained in:
CentOS Sources 2021-04-15 04:10:56 +00:00 committed by Andrew Lukoshko
commit a8a79f93db
26 changed files with 7919 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/virt-what-1.18.tar.gz

1
.virt-what.metadata Normal file
View File

@ -0,0 +1 @@
cf60480c17be5350835a0b23dc82012ec711eea1 SOURCES/virt-what-1.18.tar.gz

View File

@ -0,0 +1,25 @@
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/21] Missing have_cpuinfo check.
---
virt-what.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt-what.in b/virt-what.in
index 8c27b11..9050035 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -308,7 +308,7 @@ if ! "$skip_qemu_kvm"; then
# option, since /proc/cpuinfo will not contain the QEMU
# string. QEMU 2.10 added a new CPUID leaf, so this
# problem only triggered for older QEMU
- if grep -q 'QEMU' "${root}/proc/cpuinfo"; then
+ if have_cpuinfo && grep -q 'QEMU' "${root}/proc/cpuinfo"; then
echo qemu
fi
fi
--
2.23.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

@ -0,0 +1,48 @@
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/21] Remove bashisms
Use [ instead of [[ so we fall back to test if necessary:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
Gbp-Pq: Name Remove-bashisms.patch
---
virt-what.in | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/virt-what.in b/virt-what.in
index 9050035..a05e0db 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -360,20 +360,20 @@ if [ "$cpuid" = "OpenBSDVMM58" ]; then
fi
# Check for LDoms
-if [[ "$arch" == sparc* && -e ${root}/dev/mdesc ]]; then
+if [ "${arch#sparc}" != "$arch" ] && [ -e "${root}/dev/mdesc" ]; then
echo ldoms
- if [[ -d ${root}/sys/class/vlds/ctrl && \
- -d ${root}/sys/class/vlds/sp ]]; then
+ if [ -d "${root}/sys/class/vlds/ctrl" ] && \
+ [ -d "${root}/sys/class/vlds/sp" ]; then
echo ldoms-control
else
echo ldoms-guest
fi
MDPROP="${root}/usr/lib/ldoms/mdprop.py"
- if [[ -x ${MDPROP} ]]; then
- if [[ -n $($MDPROP -v iodevice device-type=pciex) ]]; then
+ if [ -x "${MDPROP}" ]; then
+ if [ -n "$($MDPROP -v iodevice device-type=pciex)" ]; then
echo ldoms-root
echo ldoms-io
- elif [[ -n $($MDPROP -v iov-device vf-id=0) ]]; then
+ elif [ -n "$($MDPROP -v iov-device vf-id=0)" ]; then
echo ldoms-io
fi
fi
--
2.23.0

View File

@ -0,0 +1,36 @@
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/21] As xen pv guest can access cpuid from Intel CPUs
started IvyBridge onwards have CPUID Faulting, added one more check in
virt-what.
---
virt-what.in | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/virt-what.in b/virt-what.in
index a05e0db..247348e 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -1,6 +1,6 @@
#!/bin/sh -
# @configure_input@
-# Copyright (C) 2008-2015 Red Hat Inc.
+# Copyright (C) 2008-2017 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
@@ -223,7 +223,8 @@ fi
# Check for Xen.
-if [ "$cpuid" = "XenVMMXenVMM" ]; then
+if [ "$cpuid" = "XenVMMXenVMM" ] &&
+ ! echo "$dmi" | grep -q 'No SMBIOS nor DMI entry point found, sorry'; then
echo xen; echo xen-hvm
# Check for AWS
if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
--
2.23.0

View File

@ -0,0 +1,28 @@
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/21] Recognize ppc64le (little endian) virtualization
(RHBZ#1147876).
Tested by Laurent Vivier, see:
https://bugzilla.redhat.com/show_bug.cgi?id=1147876#c35 & ff.
---
virt-what.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt-what.in b/virt-what.in
index 247348e..29b7b0d 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -339,7 +339,7 @@ fi
# example /proc/ppc64/lparcfg systemtype line
# system_type=IBM pSeries (emulated by qemu)
-if [ "$arch" = "ppc64" ]; then
+if [ "$arch" = "ppc64" ] || [ "$arch" = "ppc64le" ] ; then
if have_cpuinfo && grep -q 'platform.**pSeries' "${root}/proc/cpuinfo"; then
if grep -q 'model.*emulated by qemu' "${root}/proc/cpuinfo"; then
echo ibm_power-kvm
--
2.23.0

View File

@ -0,0 +1,30 @@
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/21] Determine architecture via 'uname -m'
'uname -p' only gives unknown on x86_64, i386, arm6l (rpi) and aarch64
(scaleways).
---
virt-what.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/virt-what.in b/virt-what.in
index 29b7b0d..2011ff4 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -102,9 +102,9 @@ cpuid=$(virt-what-cpuid-helper)
dmi=$(LANG=C dmidecode 2>&1)
# Architecture.
-# Note for the purpose of testing, we only call uname with -p option.
+# Note for the purpose of testing, we only call uname with -m option.
-arch=$(uname -p | sed -e 's/i.86/i386/' | sed -e 's/arm.*/arm/')
+arch=$(uname -m | sed -e 's/i.86/i386/' | sed -e 's/arm.*/arm/')
# Check for VMware.
# cpuid check added by Chetan Loke.
--
2.23.0

View File

@ -0,0 +1,44 @@
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/21] Allow using sysctl, for example when /proc isn't
available
---
virt-what.in | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/virt-what.in b/virt-what.in
index 2011ff4..d037a99 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -38,6 +38,13 @@ have_cpuinfo () {
test -e "${root}/proc/cpuinfo"
}
+use_sysctl() {
+ # Lacking /proc, on some systems sysctl can be used instead.
+ OS=$(uname) || fail "failed to get operating system name"
+
+ [ "$OS" == "OpenBSD" ]
+}
+
fail () {
echo "virt-what: $1" >&2
exit 1
@@ -304,6 +311,12 @@ if ! "$skip_qemu_kvm"; then
# We are running as a spapr KVM guest on ppc64
echo kvm
skip_lkvm=true
+ elif use_sysctl; then
+ # SmartOS KVM
+ product=$(sysctl -n hw.product)
+ if echo "$product" | grep -q 'SmartDC HVM'; then
+ echo kvm
+ fi
else
# This is known to fail for qemu with the explicit -cpu
# option, since /proc/cpuinfo will not contain the QEMU
--
2.23.0

View File

@ -0,0 +1,28 @@
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/21] Replace == with = since the former is a bash-ism.
Thanks: Eric Blake.
Fixes commit d7fd8a7843030d2b1719353edfcd49dba3000122.
---
virt-what.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt-what.in b/virt-what.in
index d037a99..a2f8f19 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -42,7 +42,7 @@ use_sysctl() {
# Lacking /proc, on some systems sysctl can be used instead.
OS=$(uname) || fail "failed to get operating system name"
- [ "$OS" == "OpenBSD" ]
+ [ "$OS" = "OpenBSD" ]
}
fail () {
--
2.23.0

View File

@ -0,0 +1,79 @@
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/21] 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
is a little bit different so we also need to adjust the test for that
case.
Typical SMBIOS info for Xen:
BIOS Information
Vendor: Xen
Version: 4.2.amazon
Typical SMBIOS info for KVM and baremetal:
BIOS Information
Vendor: Amazon EC2
Version: 1.0
Thanks: Vitaly Kuznetsov, Jon Masters.
---
virt-what.in | 13 +++++++++----
virt-what.pod | 8 ++++++--
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/virt-what.in b/virt-what.in
index a2f8f19..f685461 100644
--- a/virt-what.in
+++ b/virt-what.in
@@ -233,10 +233,6 @@ fi
if [ "$cpuid" = "XenVMMXenVMM" ] &&
! echo "$dmi" | grep -q 'No SMBIOS nor DMI entry point found, sorry'; then
echo xen; echo xen-hvm
- # Check for AWS
- if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
- echo aws
- fi
skip_qemu_kvm=true
elif [ -d "${root}/proc/xen" ]; then
echo xen
@@ -392,3 +388,12 @@ if [ "${arch#sparc}" != "$arch" ] && [ -e "${root}/dev/mdesc" ]; then
fi
fi
fi
+
+# Check for AWS.
+# AWS on Xen.
+if echo "$dmi" | grep -q 'Version: [0-9]\.[0-9]\.amazon'; then
+ echo aws
+# AWS on baremetal or KVM.
+elif echo "$dmi" | grep -q 'Vendor: Amazon EC2'; then
+ echo aws
+fi
diff --git a/virt-what.pod b/virt-what.pod
index ebfc190..5a0bdfc 100644
--- a/virt-what.pod
+++ b/virt-what.pod
@@ -27,9 +27,13 @@ don't know about or cannot detect.
=item B<aws>
-Amazon Web Services cloud guest.
+Amazon Web Services.
-Status: contributed by Qi Guo.
+Note that virt-what will print this fact for baremetal AWS instances,
+which you might not consider to be true virtualization. In this case
+other facts (eg. C<kvm> or C<xen>) would I<not> be present.
+
+Status: contributed by Qi Guo, Vitaly Kuznetsov, confirmed by RWMJ.
=item B<bhyve>
--
2.23.0

View File

@ -0,0 +1,32 @@
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/21] 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
dmidecode binary was being run instead, and that was detecting as AWS
owing to the previous commit. Fix this by supplying a working
dmidecode binary for those tests.
---
tests/ldoms/sbin/dmidecode | 3 +++
tests/ppc64-baremetal/sbin/dmidecode | 0
2 files changed, 3 insertions(+)
create mode 100755 tests/ldoms/sbin/dmidecode
mode change 100644 => 100755 tests/ppc64-baremetal/sbin/dmidecode
diff --git a/tests/ldoms/sbin/dmidecode b/tests/ldoms/sbin/dmidecode
new file mode 100755
index 0000000..3efbee3
--- /dev/null
+++ b/tests/ldoms/sbin/dmidecode
@@ -0,0 +1,3 @@
+#!/bin/sh -
+# dmidecode fails on this platform.
+exit 1
diff --git a/tests/ppc64-baremetal/sbin/dmidecode b/tests/ppc64-baremetal/sbin/dmidecode
old mode 100644
new mode 100755
--
2.23.0

View File

@ -0,0 +1,290 @@
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/21] aws: Add regression test for AWS on KVM on x86_64
architecture.
---
Makefile.am | 6 ++
tests/aws-kvm-x86/proc/cpuinfo | 52 ++++++++++++++
tests/aws-kvm-x86/proc/self/status | 46 +++++++++++++
tests/aws-kvm-x86/sbin/dmidecode | 68 +++++++++++++++++++
tests/aws-kvm-x86/sbin/uname | 2 +
tests/aws-kvm-x86/sbin/virt-what-cpuid-helper | 2 +
tests/test-aws-kvm-x86.sh | 35 ++++++++++
7 files changed, 211 insertions(+)
create mode 100644 tests/aws-kvm-x86/proc/cpuinfo
create mode 100644 tests/aws-kvm-x86/proc/self/status
create mode 100755 tests/aws-kvm-x86/sbin/dmidecode
create mode 100755 tests/aws-kvm-x86/sbin/uname
create mode 100755 tests/aws-kvm-x86/sbin/virt-what-cpuid-helper
create mode 100755 tests/test-aws-kvm-x86.sh
diff --git a/Makefile.am b/Makefile.am
index 3c0d5ba..1029902 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -39,6 +39,7 @@ virt-what.txt: virt-what.pod
endif
TESTS = \
+ tests/test-aws-kvm-x86.sh \
tests/test-baremetal.sh \
tests/test-bhyve.sh \
tests/test-docker.sh \
@@ -73,6 +74,11 @@ TESTS = \
EXTRA_DIST = \
virt-what.in \
virt-what.pod \
+ tests/aws-kvm-x86/proc/cpuinfo \
+ tests/aws-kvm-x86/proc/self/status \
+ tests/aws-kvm-x86/sbin/dmidecode \
+ tests/aws-kvm-x86/sbin/uname \
+ tests/aws-kvm-x86/sbin/virt-what-cpuid-helper \
tests/baremetal/proc/cpuinfo \
tests/baremetal/proc/self/status \
tests/baremetal/sbin/dmidecode \
diff --git a/tests/aws-kvm-x86/proc/cpuinfo b/tests/aws-kvm-x86/proc/cpuinfo
new file mode 100644
index 0000000..449f885
--- /dev/null
+++ b/tests/aws-kvm-x86/proc/cpuinfo
@@ -0,0 +1,52 @@
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 85
+model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
+stepping : 3
+microcode : 0x1000141
+cpu MHz : 2999.996
+cache size : 25344 KB
+physical id : 0
+siblings : 2
+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 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu 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 fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 ida arat pku ospke
+bogomips : 5999.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 46 bits physical, 48 bits virtual
+power management:
+
+processor : 1
+vendor_id : GenuineIntel
+cpu family : 6
+model : 85
+model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
+stepping : 3
+microcode : 0x1000141
+cpu MHz : 2999.996
+cache size : 25344 KB
+physical id : 0
+siblings : 2
+core id : 0
+cpu cores : 1
+apicid : 1
+initial apicid : 1
+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 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu 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 fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 ida arat pku ospke
+bogomips : 5999.99
+clflush size : 64
+cache_alignment : 64
+address sizes : 46 bits physical, 48 bits virtual
+power management:
+
diff --git a/tests/aws-kvm-x86/proc/self/status b/tests/aws-kvm-x86/proc/self/status
new file mode 100644
index 0000000..5baf8de
--- /dev/null
+++ b/tests/aws-kvm-x86/proc/self/status
@@ -0,0 +1,46 @@
+Name: cat
+Umask: 0022
+State: R (running)
+Tgid: 20776
+Ngid: 0
+Pid: 20776
+PPid: 17444
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 256
+Groups: 0
+VmPeak: 107972 kB
+VmSize: 107972 kB
+VmLck: 0 kB
+VmPin: 0 kB
+VmHWM: 360 kB
+VmRSS: 360 kB
+RssAnon: 76 kB
+RssFile: 284 kB
+RssShmem: 0 kB
+VmData: 180 kB
+VmStk: 132 kB
+VmExe: 44 kB
+VmLib: 1936 kB
+VmPTE: 36 kB
+VmSwap: 0 kB
+Threads: 1
+SigQ: 1/14026
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000001fffffffff
+CapEff: 0000001fffffffff
+CapBnd: 0000001fffffffff
+CapAmb: 0000000000000000
+Seccomp: 0
+Cpus_allowed: 3
+Cpus_allowed_list: 0-1
+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: 1
+nonvoluntary_ctxt_switches: 1
diff --git a/tests/aws-kvm-x86/sbin/dmidecode b/tests/aws-kvm-x86/sbin/dmidecode
new file mode 100755
index 0000000..3b5aa03
--- /dev/null
+++ b/tests/aws-kvm-x86/sbin/dmidecode
@@ -0,0 +1,68 @@
+#!/bin/sh -
+cat <<'EOF'
+# dmidecode 3.0
+Getting SMBIOS data from sysfs.
+SMBIOS 2.7 present.
+5 structures occupying 233 bytes.
+Table at 0x000F8FD0.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Amazon EC2
+ Version: 1.0
+ Release Date: 10/16/2017
+ 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: c5.large
+ Version: Not Specified
+ Serial Number: ec2cecdd-c1c8-7a71-0ea8-aef580c9f845
+ UUID: EC2CECDD-C1C8-7A71-0EA8-AEF580C9F845
+ 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-04f9b1c56b3c301b5
+ 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 0x0004, DMI type 127, 4 bytes
+End Of Table
+
+EOF
diff --git a/tests/aws-kvm-x86/sbin/uname b/tests/aws-kvm-x86/sbin/uname
new file mode 100755
index 0000000..ab0ec89
--- /dev/null
+++ b/tests/aws-kvm-x86/sbin/uname
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo x86_64
diff --git a/tests/aws-kvm-x86/sbin/virt-what-cpuid-helper b/tests/aws-kvm-x86/sbin/virt-what-cpuid-helper
new file mode 100755
index 0000000..f52a9d7
--- /dev/null
+++ b/tests/aws-kvm-x86/sbin/virt-what-cpuid-helper
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo KVMKVMKVM
diff --git a/tests/test-aws-kvm-x86.sh b/tests/test-aws-kvm-x86.sh
new file mode 100755
index 0000000..db4c19f
--- /dev/null
+++ b/tests/test-aws-kvm-x86.sh
@@ -0,0 +1,35 @@
+# 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-x86
+
+output="$(./virt-what --test-root=$root 2>&1)"
+expected="kvm
+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.23.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,358 @@
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/21] aws: Add regression test for AWS on Xen on x86_64
architecture.
---
Makefile.am | 6 +
tests/aws-xen-x86/proc/cpuinfo | 52 +++++++
tests/aws-xen-x86/proc/self/status | 46 ++++++
tests/aws-xen-x86/sbin/dmidecode | 135 ++++++++++++++++++
tests/aws-xen-x86/sbin/uname | 2 +
tests/aws-xen-x86/sbin/virt-what-cpuid-helper | 2 +
tests/test-aws-xen-x86.sh | 36 +++++
7 files changed, 279 insertions(+)
create mode 100644 tests/aws-xen-x86/proc/cpuinfo
create mode 100644 tests/aws-xen-x86/proc/self/status
create mode 100755 tests/aws-xen-x86/sbin/dmidecode
create mode 100755 tests/aws-xen-x86/sbin/uname
create mode 100755 tests/aws-xen-x86/sbin/virt-what-cpuid-helper
create mode 100755 tests/test-aws-xen-x86.sh
diff --git a/Makefile.am b/Makefile.am
index ad47097..22680a0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,6 +41,7 @@ endif
TESTS = \
tests/test-aws-baremetal-x86.sh \
tests/test-aws-kvm-x86.sh \
+ tests/test-aws-xen-x86.sh \
tests/test-baremetal.sh \
tests/test-bhyve.sh \
tests/test-docker.sh \
@@ -85,6 +86,11 @@ EXTRA_DIST = \
tests/aws-kvm-x86/sbin/dmidecode \
tests/aws-kvm-x86/sbin/uname \
tests/aws-kvm-x86/sbin/virt-what-cpuid-helper \
+ tests/aws-xen-x86/proc/cpuinfo \
+ tests/aws-xen-x86/proc/self/status \
+ tests/aws-xen-x86/sbin/dmidecode \
+ tests/aws-xen-x86/sbin/uname \
+ tests/aws-xen-x86/sbin/virt-what-cpuid-helper \
tests/baremetal/proc/cpuinfo \
tests/baremetal/proc/self/status \
tests/baremetal/sbin/dmidecode \
diff --git a/tests/aws-xen-x86/proc/cpuinfo b/tests/aws-xen-x86/proc/cpuinfo
new file mode 100644
index 0000000..ff0b16b
--- /dev/null
+++ b/tests/aws-xen-x86/proc/cpuinfo
@@ -0,0 +1,52 @@
+processor : 0
+vendor_id : GenuineIntel
+cpu family : 6
+model : 63
+model name : Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
+stepping : 2
+microcode : 0x3c
+cpu MHz : 2900.281
+cache size : 25600 KB
+physical id : 0
+siblings : 2
+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 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu 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 fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
+bogomips : 5800.06
+clflush size : 64
+cache_alignment : 64
+address sizes : 46 bits physical, 48 bits virtual
+power management:
+
+processor : 1
+vendor_id : GenuineIntel
+cpu family : 6
+model : 63
+model name : Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
+stepping : 2
+microcode : 0x3c
+cpu MHz : 2900.281
+cache size : 25600 KB
+physical id : 0
+siblings : 2
+core id : 0
+cpu cores : 1
+apicid : 1
+initial apicid : 1
+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 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu 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 fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
+bogomips : 5800.06
+clflush size : 64
+cache_alignment : 64
+address sizes : 46 bits physical, 48 bits virtual
+power management:
+
diff --git a/tests/aws-xen-x86/proc/self/status b/tests/aws-xen-x86/proc/self/status
new file mode 100644
index 0000000..4e93816
--- /dev/null
+++ b/tests/aws-xen-x86/proc/self/status
@@ -0,0 +1,46 @@
+Name: cat
+Umask: 0022
+State: R (running)
+Tgid: 22828
+Ngid: 0
+Pid: 22828
+PPid: 17431
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 256
+Groups: 0
+VmPeak: 107972 kB
+VmSize: 107972 kB
+VmLck: 0 kB
+VmPin: 0 kB
+VmHWM: 360 kB
+VmRSS: 360 kB
+RssAnon: 76 kB
+RssFile: 284 kB
+RssShmem: 0 kB
+VmData: 180 kB
+VmStk: 132 kB
+VmExe: 44 kB
+VmLib: 1936 kB
+VmPTE: 36 kB
+VmSwap: 0 kB
+Threads: 1
+SigQ: 0/14231
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000001fffffffff
+CapEff: 0000001fffffffff
+CapBnd: 0000001fffffffff
+CapAmb: 0000000000000000
+Seccomp: 0
+Cpus_allowed: 7fff
+Cpus_allowed_list: 0-14
+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: 1
+nonvoluntary_ctxt_switches: 1
diff --git a/tests/aws-xen-x86/sbin/dmidecode b/tests/aws-xen-x86/sbin/dmidecode
new file mode 100755
index 0000000..bc9cde5
--- /dev/null
+++ b/tests/aws-xen-x86/sbin/dmidecode
@@ -0,0 +1,135 @@
+#!/bin/sh -
+cat <<'EOF'
+# dmidecode 3.0
+Getting SMBIOS data from sysfs.
+SMBIOS 2.7 present.
+12 structures occupying 398 bytes.
+Table at 0x000EB01F.
+
+Handle 0x0000, DMI type 0, 24 bytes
+BIOS Information
+ Vendor: Xen
+ Version: 4.2.amazon
+ Release Date: 08/24/2006
+ Address: 0xE8000
+ Runtime Size: 96 kB
+ ROM Size: 64 kB
+ Characteristics:
+ PCI is supported
+ EDD is supported
+ Targeted content distribution is supported
+ BIOS Revision: 4.2
+
+Handle 0x0100, DMI type 1, 27 bytes
+System Information
+ Manufacturer: Xen
+ Product Name: HVM domU
+ Version: 4.2.amazon
+ Serial Number: ec2f5c70-6dfc-83a7-f5ec-ef7b97aea4c9
+ UUID: EC2F5C70-6DFC-83A7-F5EC-EF7B97AEA4C9
+ Wake-up Type: Power Switch
+ SKU Number: Not Specified
+ Family: Not Specified
+
+Handle 0x0300, DMI type 3, 13 bytes
+Chassis Information
+ Manufacturer: Xen
+ Type: Other
+ Lock: Not Present
+ Version: Not Specified
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Boot-up State: Safe
+ Power Supply State: Safe
+ Thermal State: Safe
+ Security Status: Unknown
+
+Handle 0x0401, DMI type 4, 26 bytes
+Processor Information
+ Socket Designation: CPU 1
+ Type: Central Processor
+ Family: Other
+ Manufacturer: Intel
+ ID: F2 06 03 00 FF FB 89 17
+ Version: Not Specified
+ Voltage: Unknown
+ External Clock: Unknown
+ Max Speed: 2900 MHz
+ Current Speed: 2900 MHz
+ Status: Populated, Enabled
+ Upgrade: Other
+
+Handle 0x0402, DMI type 4, 26 bytes
+Processor Information
+ Socket Designation: CPU 2
+ Type: Central Processor
+ Family: Other
+ Manufacturer: Intel
+ ID: F2 06 03 00 FF FB 89 17
+ Version: Not Specified
+ Voltage: Unknown
+ External Clock: Unknown
+ Max Speed: 2900 MHz
+ Current Speed: 2900 MHz
+ Status: Populated, Enabled
+ Upgrade: Other
+
+Handle 0x0B00, DMI type 11, 5 bytes
+OEM Strings
+ String 1: Xen
+
+Handle 0x1000, DMI type 16, 19 bytes
+Physical Memory Array
+ Location: Other
+ Use: System Memory
+ Error Correction Type: Multi-bit ECC
+ Maximum Capacity: 3840 MB
+ Error Information Handle: Not Provided
+ Number Of Devices: 1
+
+Handle 0x1100, DMI type 17, 34 bytes
+Memory Device
+ Array Handle: 0x1000
+ Error Information Handle: 0x0000
+ Total Width: 64 bits
+ Data Width: 64 bits
+ Size: 3840 MB
+ Form Factor: DIMM
+ Set: None
+ Locator: DIMM 0
+ Bank Locator: Not Specified
+ Type: RAM
+ Type Detail: None
+ Speed: Unknown
+ Manufacturer: Not Specified
+ Serial Number: Not Specified
+ Asset Tag: Not Specified
+ Part Number: Not Specified
+ Rank: Unknown
+ Configured Clock Speed: Unknown
+
+Handle 0x1300, DMI type 19, 31 bytes
+Memory Array Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000EFFFFFFF
+ Range Size: 3840 MB
+ Physical Array Handle: 0x1000
+ Partition Width: 1
+
+Handle 0x1400, DMI type 20, 35 bytes
+Memory Device Mapped Address
+ Starting Address: 0x00000000000
+ Ending Address: 0x000EFFFFFFF
+ Range Size: 3840 MB
+ Physical Device Handle: 0x1100
+ Memory Array Mapped Address Handle: 0x1300
+ Partition Row Position: 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/aws-xen-x86/sbin/uname b/tests/aws-xen-x86/sbin/uname
new file mode 100755
index 0000000..ab0ec89
--- /dev/null
+++ b/tests/aws-xen-x86/sbin/uname
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo x86_64
diff --git a/tests/aws-xen-x86/sbin/virt-what-cpuid-helper b/tests/aws-xen-x86/sbin/virt-what-cpuid-helper
new file mode 100755
index 0000000..8d8df4a
--- /dev/null
+++ b/tests/aws-xen-x86/sbin/virt-what-cpuid-helper
@@ -0,0 +1,2 @@
+#!/bin/sh -
+echo XenVMMXenVMM
diff --git a/tests/test-aws-xen-x86.sh b/tests/test-aws-xen-x86.sh
new file mode 100755
index 0000000..22b7f83
--- /dev/null
+++ b/tests/test-aws-xen-x86.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-xen-x86
+
+output="$(./virt-what --test-root=$root 2>&1)"
+expected="xen
+xen-hvm
+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.23.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/21] 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.23.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/21] 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.23.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/21] 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.23.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/21] 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.23.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/21] 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;
-
- memset (sig, 0, sizeof sig);
- max_entries = cpuid (leaf, sig);
- puts (sig);
+ const uint32_t base = 0x40000000;
+ uint32_t leaf;
- /* 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.23.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/21] 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.23.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/21] 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.23.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/21] 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.23.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

278
SPECS/virt-what.spec Normal file
View File

@ -0,0 +1,278 @@
Name: virt-what
Version: 1.18
Release: 9%{?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.
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
Patch0004: 0004-Recognize-ppc64le-little-endian-virtualization-RHBZ-.patch
Patch0005: 0005-Determine-architecture-via-uname-m.patch
Patch0006: 0006-Allow-using-sysctl-for-example-when-proc-isn-t-avail.patch
Patch0007: 0007-Replace-with-since-the-former-is-a-bash-ism.patch
# AWS support:
Patch0008: 0008-aws-Detect-AWS-from-dmidecode-information.patch
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
# Fix crash on non-KVM platforms through incorrect use of CPUID in
# patch 0018 (https://bugzilla.redhat.com/show_bug.cgi?id=1756381#c15).
Patch0022: 0001-Simplify-and-fix-invocation-of-cpuid.patch
# Patches touch Makefile.am:
BuildRequires: autoconf, automake
BuildRequires: git
# This is provided by the build root, but we make it explicit
# anyway in case this was dropped from the build root in future.
BuildRequires: /usr/bin/pod2man
# Required at build time in order to do 'make check' (for getopt).
BuildRequires: util-linux
# virt-what script uses dmidecode and getopt (from util-linux).
# RPM cannot detect this so make the dependencies explicit here.
%ifarch aarch64 %{ix86} x86_64
Requires: dmidecode
%endif
Requires: util-linux
# Runs the 'which' program to find the helper.
Requires: which
%description
virt-what is a shell script which can be used to detect if the program
is running in a virtual machine.
The program prints out a list of "facts" about the virtual machine,
derived from heuristics. One fact is printed per line.
If nothing is printed and the script exits with code 0 (no error),
then it can mean either that the program is running on bare-metal or
the program is running inside a type of virtual machine which we don't
know about or can't detect.
Current types of virtualization detected:
- aws Amazon Web Services
- bhyve FreeBSD hypervisor
- docker Docker container
- hyperv Microsoft Hyper-V
- ibm_power-kvm
IBM POWER KVM
- ibm_power-lpar_shared
- ibm_power-lpar_dedicated
IBM POWER LPAR (hardware partition)
- ibm_systemz-*
IBM SystemZ Direct / LPAR / z/VM / KVM
- ldoms Oracle VM Server for SPARC Logical Domains
- linux_vserver
Linux VServer container
- lxc Linux LXC container
- kvm Linux Kernel Virtual Machine (KVM)
- lkvm LKVM / kvmtool
- openvz OpenVZ or Virtuozzo
- ovirt oVirt node
- parallels Parallels Virtual Platform
- powervm_lx86 IBM PowerVM Lx86 Linux/x86 emulator
- qemu QEMU (unaccelerated)
- rhev Red Hat Enterprise Virtualization
- uml User-Mode Linux (UML)
- virtage Hitachi Virtualization Manager (HVM) Virtage LPAR
- virtualbox VirtualBox
- virtualpc Microsoft VirtualPC
- vmm vmm OpenBSD hypervisor
- vmware VMware
- xen Xen
- xen-dom0 Xen dom0 (privileged domain)
- xen-domU Xen domU (paravirtualized guest domain)
- xen-hvm Xen guest fully virtualized (HVM)
%prep
# 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
# Patches touch Makefile.am:
autoreconf -i
%configure
make
%install
make install DESTDIR=$RPM_BUILD_ROOT
%check
if ! make check ; then
cat test-suite.log
exit 1
fi
%files
%doc README COPYING
%{_sbindir}/virt-what
%{_libexecdir}/virt-what-cpuid-helper
%{_mandir}/man1/*.1*
%changelog
* 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
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Oct 17 2017 Richard W.M. Jones <rjones@redhat.com> - 1.18-4
- Include upstream patches since 1.18 was released.
- dmidecode is also available on aarch64.
* Mon Jul 31 2017 Richard W.M. Jones <rjones@redhat.com> - 1.18-1
- New upstream version 1.18.
- Update RPM description section with complete list of supported guests.
- If make check fails, dump test-suite.log.
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Tue Jun 14 2016 Richard W.M. Jones <rjones@redhat.com> - 1.15-4
- Require 'which' program.
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.15-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.15-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Tue Apr 21 2015 Richard W.M. Jones <rjones@redhat.com> - 1.15-1
- New upstream version 1.15.
- Remove patches, now upstream.
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Mon Oct 28 2013 Richard W.M. Jones <rjones@redhat.com> - 1.13-3
- Suppress warning message on Amazon EC2:
"grep: /proc/xen/capabilities: No such file or directory"
* Wed Sep 11 2013 Richard W.M. Jones <rjones@redhat.com> - 1.13-2
- Include two upstream patches for detecting Xen and Linux VServer better
(RHBZ#973663).
- Modernize the spec file.
* Mon Jul 29 2013 Richard W.M. Jones <rjones@redhat.com> - 1.13-1
- New upstream version 1.13.
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.12-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Sat Mar 17 2012 Richard W.M. Jones <rjones@redhat.com> - 1.12-1
- New upstream version 1.12.
* Wed Feb 29 2012 Richard W.M. Jones <rjones@redhat.com> - 1.11-3
- Remove ExclusiveArch, but don't require dmidecode except on
i?86 and x86-64 (RHBZ#791370).
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.11-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Fri May 27 2011 Richard W.M. Jones <rjones@redhat.com> - 1.11-1
- New upstream version 1.11.
* Wed May 25 2011 Richard W.M. Jones <rjones@redhat.com> - 1.10-1
- New upstream version 1.10.
* Tue Mar 8 2011 Richard W.M. Jones <rjones@redhat.com> - 1.9-1
- New upstream version 1.9.
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Mon Jan 31 2011 Richard W.M. Jones <rjones@redhat.com> - 1.8-1
- New upstream version 1.8.
* Thu Jan 20 2011 Richard W.M. Jones <rjones@redhat.com> - 1.7-1
- New upstream version 1.7.
* Wed Jan 19 2011 Richard W.M. Jones <rjones@redhat.com> - 1.6-2
- New upstream version 1.6.
- BuildRequires 'getopt' from util-linux-ng.
* Tue Jan 18 2011 Richard W.M. Jones <rjones@redhat.com> - 1.5-1
- New upstream version 1.5.
- Add 'make check' section.
* Tue Jan 18 2011 Richard W.M. Jones <rjones@redhat.com> - 1.4-1
- New upstream version 1.4.
- More hypervisor types detected.
* Thu Oct 28 2010 Richard W.M. Jones <rjones@redhat.com> - 1.3-4
- Move configure into build (not prep).
* Thu Oct 28 2010 Richard W.M. Jones <rjones@redhat.com> - 1.3-3
- Initial import into Fedora.
* Tue Oct 19 2010 Richard W.M. Jones <rjones@redhat.com> - 1.3-2
- Make changes suggested by reviewer (RHBZ#644259).
* Tue Oct 19 2010 Richard W.M. Jones <rjones@redhat.com> - 1.3-1
- Initial release.