diff --git a/SOURCES/0001-Missing-have_cpuinfo-check.patch b/SOURCES/0001-Missing-have_cpuinfo-check.patch
index 3034d10..8b89e45 100644
--- a/SOURCES/0001-Missing-have_cpuinfo-check.patch
+++ b/SOURCES/0001-Missing-have_cpuinfo-check.patch
@@ -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/21] Missing have_cpuinfo check.
 
 ---
  virt-what.in | 2 +-
@@ -21,5 +21,5 @@ index 8c27b11..9050035 100644
          fi
      fi
 -- 
-2.19.0.rc0
+2.23.0
 
diff --git a/SOURCES/0001-Simplify-and-fix-invocation-of-cpuid.patch b/SOURCES/0001-Simplify-and-fix-invocation-of-cpuid.patch
new file mode 100644
index 0000000..91f9c6a
--- /dev/null
+++ b/SOURCES/0001-Simplify-and-fix-invocation-of-cpuid.patch
@@ -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
+
diff --git a/SOURCES/0002-Remove-bashisms.patch b/SOURCES/0002-Remove-bashisms.patch
index 6161fd6..2809cc8 100644
--- a/SOURCES/0002-Remove-bashisms.patch
+++ b/SOURCES/0002-Remove-bashisms.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0003-As-xen-pv-guest-can-access-cpuid-from-Intel-CPUs-sta.patch b/SOURCES/0003-As-xen-pv-guest-can-access-cpuid-from-Intel-CPUs-sta.patch
index 777a4ba..201223c 100644
--- a/SOURCES/0003-As-xen-pv-guest-can-access-cpuid-from-Intel-CPUs-sta.patch
+++ b/SOURCES/0003-As-xen-pv-guest-can-access-cpuid-from-Intel-CPUs-sta.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0004-Recognize-ppc64le-little-endian-virtualization-RHBZ-.patch b/SOURCES/0004-Recognize-ppc64le-little-endian-virtualization-RHBZ-.patch
index 50e5ca0..88f4588 100644
--- a/SOURCES/0004-Recognize-ppc64le-little-endian-virtualization-RHBZ-.patch
+++ b/SOURCES/0004-Recognize-ppc64le-little-endian-virtualization-RHBZ-.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0005-Determine-architecture-via-uname-m.patch b/SOURCES/0005-Determine-architecture-via-uname-m.patch
index 82cdcdc..e7d08f5 100644
--- a/SOURCES/0005-Determine-architecture-via-uname-m.patch
+++ b/SOURCES/0005-Determine-architecture-via-uname-m.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0006-Allow-using-sysctl-for-example-when-proc-isn-t-avail.patch b/SOURCES/0006-Allow-using-sysctl-for-example-when-proc-isn-t-avail.patch
index b8d6a1f..50967ca 100644
--- a/SOURCES/0006-Allow-using-sysctl-for-example-when-proc-isn-t-avail.patch
+++ b/SOURCES/0006-Allow-using-sysctl-for-example-when-proc-isn-t-avail.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0007-Replace-with-since-the-former-is-a-bash-ism.patch b/SOURCES/0007-Replace-with-since-the-former-is-a-bash-ism.patch
index 2d14ec7..cd5d07c 100644
--- a/SOURCES/0007-Replace-with-since-the-former-is-a-bash-ism.patch
+++ b/SOURCES/0007-Replace-with-since-the-former-is-a-bash-ism.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0008-aws-Detect-AWS-from-dmidecode-information.patch b/SOURCES/0008-aws-Detect-AWS-from-dmidecode-information.patch
index a7da308..0ce8536 100644
--- a/SOURCES/0008-aws-Detect-AWS-from-dmidecode-information.patch
+++ b/SOURCES/0008-aws-Detect-AWS-from-dmidecode-information.patch
@@ -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/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
@@ -75,5 +75,5 @@ index ebfc190..5a0bdfc 100644
  =item B<bhyve>
  
 -- 
-2.19.0.rc0
+2.23.0
 
diff --git a/SOURCES/0009-tests-Fix-tests-when-run-on-AWS.patch b/SOURCES/0009-tests-Fix-tests-when-run-on-AWS.patch
index d698637..03f9514 100644
--- a/SOURCES/0009-tests-Fix-tests-when-run-on-AWS.patch
+++ b/SOURCES/0009-tests-Fix-tests-when-run-on-AWS.patch
@@ -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/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
@@ -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.23.0
 
diff --git a/SOURCES/0010-aws-Add-regression-test-for-AWS-on-KVM-on-x86_64-arc.patch b/SOURCES/0010-aws-Add-regression-test-for-AWS-on-KVM-on-x86_64-arc.patch
index 1ec85ce..b6fdd56 100644
--- a/SOURCES/0010-aws-Add-regression-test-for-AWS-on-KVM-on-x86_64-arc.patch
+++ b/SOURCES/0010-aws-Add-regression-test-for-AWS-on-KVM-on-x86_64-arc.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0011-aws-Add-regression-test-for-AWS-on-baremetal-on-x86_.patch b/SOURCES/0011-aws-Add-regression-test-for-AWS-on-baremetal-on-x86_.patch
index acd2fb7..c733819 100644
--- a/SOURCES/0011-aws-Add-regression-test-for-AWS-on-baremetal-on-x86_.patch
+++ b/SOURCES/0011-aws-Add-regression-test-for-AWS-on-baremetal-on-x86_.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0012-aws-Add-regression-test-for-AWS-on-Xen-on-x86_64-arc.patch b/SOURCES/0012-aws-Add-regression-test-for-AWS-on-Xen-on-x86_64-arc.patch
index 50cc63f..fe563ad 100644
--- a/SOURCES/0012-aws-Add-regression-test-for-AWS-on-Xen-on-x86_64-arc.patch
+++ b/SOURCES/0012-aws-Add-regression-test-for-AWS-on-Xen-on-x86_64-arc.patch
@@ -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/21] 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.23.0
 
diff --git a/SOURCES/0013-aws-Add-regression-test-for-AWS-on-KVM-on-ARM-archit.patch b/SOURCES/0013-aws-Add-regression-test-for-AWS-on-KVM-on-ARM-archit.patch
new file mode 100644
index 0000000..dcacb2e
--- /dev/null
+++ b/SOURCES/0013-aws-Add-regression-test-for-AWS-on-KVM-on-ARM-archit.patch
@@ -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
+
diff --git a/SOURCES/0014-build-Remove-files-on-make-clean.patch b/SOURCES/0014-build-Remove-files-on-make-clean.patch
new file mode 100644
index 0000000..52e88b8
--- /dev/null
+++ b/SOURCES/0014-build-Remove-files-on-make-clean.patch
@@ -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
+
diff --git a/SOURCES/0015-Arrange-tests-in-subdirectories.patch b/SOURCES/0015-Arrange-tests-in-subdirectories.patch
new file mode 100644
index 0000000..cac7f88
--- /dev/null
+++ b/SOURCES/0015-Arrange-tests-in-subdirectories.patch
@@ -0,0 +1,2384 @@
+From e3eeddbc857a5647135c42c97be75198929a8ce1 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Thu, 3 Oct 2019 09:53:49 +0100
+Subject: [PATCH 15/21] Arrange tests in subdirectories.
+
+This simplifies and isolates each test.
+---
+ .gitignore                                    |   6 +-
+ Makefile.am                                   | 261 +-----------------
+ configure.ac                                  |  77 +++++-
+ tests/Makefile.am                             |  20 ++
+ tests/aws-baremetal-x86/Makefile.am           |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/aws-kvm-arm/Makefile.am                 |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/aws-kvm-x86/Makefile.am                 |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/aws-xen-x86/Makefile.am                 |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/baremetal/Makefile.am                   |  28 ++
+ .../{test-baremetal.sh => baremetal/test.sh}  |   4 +-
+ tests/bhyve/Makefile.am                       |  27 ++
+ tests/{test-bhyve.sh => bhyve/test.sh}        |   4 +-
+ tests/docker/Makefile.am                      |  29 ++
+ tests/{test-docker.sh => docker/test.sh}      |   4 +-
+ tests/esx4.1/Makefile.am                      |  28 ++
+ tests/{test-esx4.1.sh => esx4.1/test.sh}      |   4 +-
+ tests/hyperv/Makefile.am                      |  28 ++
+ tests/{test-hyperv.sh => hyperv/test.sh}      |   4 +-
+ tests/kvm-explicit-cpu/Makefile.am            |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/kvm/Makefile.am                         |  28 ++
+ tests/{test-kvm.sh => kvm/test.sh}            |   4 +-
+ tests/ldoms/Makefile.am                       |  28 ++
+ tests/{test-ldoms.sh => ldoms/test.sh}        |   4 +-
+ tests/linux-vserver/Makefile.am               |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/lkvm-arm/Makefile.am                    |  29 ++
+ tests/{test-lkvm-arm.sh => lkvm-arm/test.sh}  |   4 +-
+ tests/lkvm/Makefile.am                        |  28 ++
+ tests/{test-lkvm.sh => lkvm/test.sh}          |   4 +-
+ tests/lx86/Makefile.am                        |  28 ++
+ tests/{test-lx86.sh => lx86/test.sh}          |   4 +-
+ tests/lxc/Makefile.am                         |  29 ++
+ tests/{test-lxc.sh => lxc/test.sh}            |   4 +-
+ tests/parallels-desktop/Makefile.am           |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/ppc64-baremetal/Makefile.am             |  27 ++
+ .../test.sh}                                  |   4 +-
+ tests/ppc64-kvm/Makefile.am                   |  28 ++
+ .../{test-ppc64-kvm.sh => ppc64-kvm/test.sh}  |   4 +-
+ tests/ppc64-lpar-dedicated/Makefile.am        |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/ppc64-lpar-shared/Makefile.am           |  29 ++
+ .../test.sh}                                  |   4 +-
+ tests/qemu-arm/Makefile.am                    |  29 ++
+ tests/{test-qemu-arm.sh => qemu-arm/test.sh}  |   4 +-
+ tests/qemu-smbios-kvm/Makefile.am             |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/qemu-smbios/Makefile.am                 |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/qemu/Makefile.am                        |  28 ++
+ tests/{test-qemu.sh => qemu/test.sh}          |   4 +-
+ tests/rhel5-xen-dom0/Makefile.am              |  48 ++++
+ .../test.sh}                                  |   4 +-
+ tests/rhel5-xen-domU-hvm-ia64/Makefile.am     |  33 +++
+ .../test.sh}                                  |   4 +-
+ tests/rhel5-xen-domU-hvm/Makefile.am          |  28 ++
+ .../test.sh}                                  |   4 +-
+ tests/rhel5-xen-domU-pv/Makefile.am           |  46 +++
+ .../test.sh}                                  |   4 +-
+ tests/rhev/Makefile.am                        |  28 ++
+ tests/{test-rhev.sh => rhev/test.sh}          |   4 +-
+ tests/vmm/Makefile.am                         |  27 ++
+ tests/{test-vmm.sh => vmm/test.sh}            |   4 +-
+ tests/xen-arm/Makefile.am                     |  29 ++
+ tests/{test-xen-arm.sh => xen-arm/test.sh}    |   4 +-
+ tests/zvm/Makefile.am                         |  29 ++
+ tests/{test-zvm.sh => zvm/test.sh}            |   4 +-
+ 72 files changed, 1138 insertions(+), 361 deletions(-)
+ create mode 100644 tests/Makefile.am
+ create mode 100644 tests/aws-baremetal-x86/Makefile.am
+ rename tests/{test-aws-baremetal-x86.sh => aws-baremetal-x86/test.sh} (93%)
+ create mode 100644 tests/aws-kvm-arm/Makefile.am
+ rename tests/{test-aws-kvm-arm.sh => aws-kvm-arm/test.sh} (94%)
+ create mode 100644 tests/aws-kvm-x86/Makefile.am
+ rename tests/{test-aws-kvm-x86.sh => aws-kvm-x86/test.sh} (94%)
+ create mode 100644 tests/aws-xen-x86/Makefile.am
+ rename tests/{test-aws-xen-x86.sh => aws-xen-x86/test.sh} (94%)
+ create mode 100644 tests/baremetal/Makefile.am
+ rename tests/{test-baremetal.sh => baremetal/test.sh} (94%)
+ create mode 100644 tests/bhyve/Makefile.am
+ rename tests/{test-bhyve.sh => bhyve/test.sh} (94%)
+ create mode 100644 tests/docker/Makefile.am
+ rename tests/{test-docker.sh => docker/test.sh} (94%)
+ create mode 100644 tests/esx4.1/Makefile.am
+ rename tests/{test-esx4.1.sh => esx4.1/test.sh} (94%)
+ create mode 100644 tests/hyperv/Makefile.am
+ rename tests/{test-hyperv.sh => hyperv/test.sh} (94%)
+ create mode 100644 tests/kvm-explicit-cpu/Makefile.am
+ rename tests/{test-kvm-explicit-cpu.sh => kvm-explicit-cpu/test.sh} (94%)
+ create mode 100644 tests/kvm/Makefile.am
+ rename tests/{test-kvm.sh => kvm/test.sh} (95%)
+ create mode 100644 tests/ldoms/Makefile.am
+ rename tests/{test-ldoms.sh => ldoms/test.sh} (94%)
+ create mode 100644 tests/linux-vserver/Makefile.am
+ rename tests/{test-linux-vserver.sh => linux-vserver/test.sh} (94%)
+ create mode 100644 tests/lkvm-arm/Makefile.am
+ rename tests/{test-lkvm-arm.sh => lkvm-arm/test.sh} (94%)
+ create mode 100644 tests/lkvm/Makefile.am
+ rename tests/{test-lkvm.sh => lkvm/test.sh} (94%)
+ create mode 100644 tests/lx86/Makefile.am
+ rename tests/{test-lx86.sh => lx86/test.sh} (95%)
+ create mode 100644 tests/lxc/Makefile.am
+ rename tests/{test-lxc.sh => lxc/test.sh} (95%)
+ create mode 100644 tests/parallels-desktop/Makefile.am
+ rename tests/{test-parallels-desktop.sh => parallels-desktop/test.sh} (94%)
+ create mode 100644 tests/ppc64-baremetal/Makefile.am
+ rename tests/{test-ppc64-baremetal.sh => ppc64-baremetal/test.sh} (94%)
+ create mode 100644 tests/ppc64-kvm/Makefile.am
+ rename tests/{test-ppc64-kvm.sh => ppc64-kvm/test.sh} (94%)
+ create mode 100644 tests/ppc64-lpar-dedicated/Makefile.am
+ rename tests/{test-ppc64-lpar-dedicated.sh => ppc64-lpar-dedicated/test.sh} (94%)
+ create mode 100644 tests/ppc64-lpar-shared/Makefile.am
+ rename tests/{test-ppc64-lpar-shared.sh => ppc64-lpar-shared/test.sh} (94%)
+ create mode 100644 tests/qemu-arm/Makefile.am
+ rename tests/{test-qemu-arm.sh => qemu-arm/test.sh} (94%)
+ create mode 100644 tests/qemu-smbios-kvm/Makefile.am
+ rename tests/{test-qemu-smbios-kvm.sh => qemu-smbios-kvm/test.sh} (94%)
+ create mode 100644 tests/qemu-smbios/Makefile.am
+ rename tests/{test-qemu-smbios.sh => qemu-smbios/test.sh} (94%)
+ create mode 100644 tests/qemu/Makefile.am
+ rename tests/{test-qemu.sh => qemu/test.sh} (94%)
+ create mode 100644 tests/rhel5-xen-dom0/Makefile.am
+ rename tests/{test-rhel5-xen-dom0.sh => rhel5-xen-dom0/test.sh} (94%)
+ create mode 100644 tests/rhel5-xen-domU-hvm-ia64/Makefile.am
+ rename tests/{test-rhel5-xen-domU-hvm-ia64.sh => rhel5-xen-domU-hvm-ia64/test.sh} (93%)
+ create mode 100644 tests/rhel5-xen-domU-hvm/Makefile.am
+ rename tests/{test-rhel5-xen-domU-hvm.sh => rhel5-xen-domU-hvm/test.sh} (94%)
+ create mode 100644 tests/rhel5-xen-domU-pv/Makefile.am
+ rename tests/{test-rhel5-xen-domU-pv.sh => rhel5-xen-domU-pv/test.sh} (94%)
+ create mode 100644 tests/rhev/Makefile.am
+ rename tests/{test-rhev.sh => rhev/test.sh} (94%)
+ create mode 100644 tests/vmm/Makefile.am
+ rename tests/{test-vmm.sh => vmm/test.sh} (95%)
+ create mode 100644 tests/xen-arm/Makefile.am
+ rename tests/{test-xen-arm.sh => xen-arm/test.sh} (94%)
+ create mode 100644 tests/zvm/Makefile.am
+ rename tests/{test-zvm.sh => zvm/test.sh} (95%)
+
+diff --git a/.gitignore b/.gitignore
+index f565f34..4833fd6 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -1,12 +1,14 @@
+ *~
++*.bak
+ *.log
+ *.trs
+ *.o
+ 
++Makefile
++Makefile.in
++
+ /virt-what-*.tar.gz
+ /.deps
+-/Makefile
+-/Makefile.in
+ /aclocal.m4
+ /autom4te.cache
+ /compile
+diff --git a/Makefile.am b/Makefile.am
+index 48fd518..b62738f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -15,9 +15,13 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
++AM_CPPFLAGS = -Wall
++
+ CLEANFILES = virt-what *~
+ 
+-AM_CPPFLAGS = -Wall
++EXTRA_DIST = virt-what.in virt-what.pod
++
++SUBDIRS = . tests
+ 
+ sbin_SCRIPTS = virt-what
+ libexec_PROGRAMS = virt-what-cpuid-helper
+@@ -37,258 +41,3 @@ virt-what.txt: virt-what.pod
+ 	pod2text $? > $@
+ 
+ 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 \
+-	tests/test-bhyve.sh \
+-	tests/test-docker.sh \
+-	tests/test-esx4.1.sh \
+-	tests/test-hyperv.sh \
+-	tests/test-kvm.sh \
+-	tests/test-kvm-explicit-cpu.sh \
+-	tests/test-linux-vserver.sh \
+-	tests/test-ldoms.sh \
+-	tests/test-lkvm.sh \
+-	tests/test-lkvm-arm.sh \
+-	tests/test-lxc.sh \
+-	tests/test-lx86.sh \
+-	tests/test-parallels-desktop.sh \
+-	tests/test-ppc64-baremetal.sh \
+-	tests/test-ppc64-kvm.sh \
+-	tests/test-ppc64-lpar-dedicated.sh \
+-	tests/test-ppc64-lpar-shared.sh \
+-	tests/test-qemu.sh \
+-	tests/test-qemu-arm.sh \
+-	tests/test-qemu-smbios.sh \
+-	tests/test-qemu-smbios-kvm.sh \
+-	tests/test-rhel5-xen-dom0.sh \
+-	tests/test-rhel5-xen-domU-hvm.sh \
+-	tests/test-rhel5-xen-domU-hvm-ia64.sh \
+-	tests/test-rhel5-xen-domU-pv.sh \
+-	tests/test-rhev.sh \
+-	tests/test-vmm.sh \
+-	tests/test-xen-arm.sh \
+-	tests/test-zvm.sh
+-
+-EXTRA_DIST = \
+-	virt-what.in \
+-	virt-what.pod \
+-	tests/aws-baremetal-x86/proc/cpuinfo \
+-	tests/aws-baremetal-x86/proc/self/status \
+-	tests/aws-baremetal-x86/sbin/dmidecode \
+-	tests/aws-baremetal-x86/sbin/uname \
+-	tests/aws-baremetal-x86/sbin/virt-what-cpuid-helper \
+-	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/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 \
+-	tests/baremetal/sbin/uname \
+-	tests/baremetal/sbin/virt-what-cpuid-helper \
+-	tests/bhyve/proc/cpuinfo \
+-	tests/bhyve/sbin/dmidecode \
+-	tests/bhyve/sbin/uname \
+-	tests/bhyve/sbin/virt-what-cpuid-helper \
+-	tests/docker/.dockerinit \
+-	tests/docker/proc/cpuinfo \
+-	tests/docker/proc/self/status \
+-	tests/docker/sbin/dmidecode \
+-	tests/docker/sbin/uname \
+-	tests/docker/sbin/virt-what-cpuid-helper \
+-	tests/esx4.1/proc/cpuinfo \
+-	tests/esx4.1/proc/self/status \
+-	tests/esx4.1/sbin/dmidecode \
+-	tests/esx4.1/sbin/uname \
+-	tests/esx4.1/sbin/virt-what-cpuid-helper \
+-	tests/hyperv/proc/cpuinfo \
+-	tests/hyperv/proc/self/status \
+-	tests/hyperv/sbin/dmidecode \
+-	tests/hyperv/sbin/uname \
+-	tests/hyperv/sbin/virt-what-cpuid-helper \
+-	tests/kvm/proc/cpuinfo \
+-	tests/kvm/proc/self/status \
+-	tests/kvm/sbin/dmidecode \
+-	tests/kvm/sbin/uname \
+-	tests/kvm/sbin/virt-what-cpuid-helper \
+-	tests/kvm-explicit-cpu/proc/cpuinfo \
+-	tests/kvm-explicit-cpu/proc/self/status \
+-	tests/kvm-explicit-cpu/sbin/dmidecode \
+-	tests/kvm-explicit-cpu/sbin/uname \
+-	tests/kvm-explicit-cpu/sbin/virt-what-cpuid-helper \
+-	tests/ldoms/dev/mdesc \
+-	tests/ldoms/proc/cpuinfo \
+-	tests/ldoms/sbin/uname \
+-	tests/ldoms/sbin/virt-what-cpuid-helper \
+-	tests/linux-vserver/proc/cpuinfo \
+-	tests/linux-vserver/proc/self/status \
+-	tests/linux-vserver/sbin/dmidecode \
+-	tests/linux-vserver/sbin/uname \
+-	tests/linux-vserver/sbin/virt-what-cpuid-helper \
+-	tests/lkvm/proc/cpuinfo \
+-	tests/lkvm/proc/self/status \
+-	tests/lkvm/sbin/dmidecode \
+-	tests/lkvm/sbin/uname \
+-	tests/lkvm/sbin/virt-what-cpuid-helper \
+-	tests/lkvm-arm/proc/cpuinfo \
+-	tests/lkvm-arm/proc/device-tree/compatible \
+-	tests/lkvm-arm/proc/self/status \
+-	tests/lkvm-arm/sbin/dmidecode \
+-	tests/lkvm-arm/sbin/uname \
+-	tests/lkvm-arm/sbin/virt-what-cpuid-helper \
+-	tests/lxc/proc/1/environ \
+-	tests/lxc/proc/cpuinfo \
+-	tests/lxc/proc/self/status \
+-	tests/lxc/sbin/dmidecode \
+-	tests/lxc/sbin/uname \
+-	tests/lxc/sbin/virt-what-cpuid-helper \
+-	tests/lx86/proc/cpuinfo \
+-	tests/lx86/proc/self/status \
+-	tests/lx86/sbin/dmidecode \
+-	tests/lx86/sbin/uname \
+-	tests/lx86/sbin/virt-what-cpuid-helper \
+-	tests/parallels-desktop/proc/cpuinfo \
+-	tests/parallels-desktop/proc/self/status \
+-	tests/parallels-desktop/sbin/dmidecode \
+-	tests/parallels-desktop/sbin/uname \
+-	tests/parallels-desktop/sbin/virt-what-cpuid-helper \
+-	tests/ppc64-baremetal/proc/cpuinfo \
+-	tests/ppc64-baremetal/sbin/dmidecode \
+-	tests/ppc64-baremetal/sbin/uname \
+-	tests/ppc64-baremetal/sbin/virt-what-cpuid-helper \
+-	tests/ppc64-kvm/proc/cpuinfo \
+-	tests/ppc64-kvm/proc/self/status \
+-	tests/ppc64-kvm/sbin/dmidecode \
+-	tests/ppc64-kvm/sbin/uname \
+-	tests/ppc64-kvm/sbin/virt-what-cpuid-helper \
+-	tests/ppc64-lpar-dedicated/proc/cpuinfo \
+-	tests/ppc64-lpar-dedicated/proc/ppc64/lparcfg \
+-	tests/ppc64-lpar-dedicated/sbin/dmidecode \
+-	tests/ppc64-lpar-dedicated/sbin/uname \
+-	tests/ppc64-lpar-dedicated/sbin/virt-what-cpuid-helper \
+-	tests/ppc64-lpar-shared/sbin/dmidecode \
+-	tests/ppc64-lpar-shared/sbin/uname \
+-	tests/ppc64-lpar-shared/sbin/virt-what-cpuid-helper \
+-	tests/ppc64-lpar-shared/proc/cpuinfo \
+-	tests/ppc64-lpar-shared/proc/self/status \
+-	tests/ppc64-lpar-shared/proc/ppc64/lparcfg \
+-	tests/ppc64-lpar-shared/sbin/dmidecode \
+-	tests/ppc64-lpar-shared/sbin/uname \
+-	tests/ppc64-lpar-shared/sbin/virt-what-cpuid-helper \
+-	tests/qemu/proc/cpuinfo \
+-	tests/qemu/proc/self/status \
+-	tests/qemu/sbin/dmidecode \
+-	tests/qemu/sbin/uname \
+-	tests/qemu/sbin/virt-what-cpuid-helper \
+-	tests/qemu-arm/proc/cpuinfo \
+-	tests/qemu-arm/proc/device-tree/fw-cfg@9020000/compatible \
+-	tests/qemu-arm/proc/self/status \
+-	tests/qemu-arm/sbin/dmidecode \
+-	tests/qemu-arm/sbin/uname \
+-	tests/qemu-arm/sbin/virt-what-cpuid-helper \
+-	tests/qemu-smbios/proc/cpuinfo \
+-	tests/qemu-smbios/proc/self/status \
+-	tests/qemu-smbios/sbin/dmidecode \
+-	tests/qemu-smbios/sbin/uname \
+-	tests/qemu-smbios/sbin/virt-what-cpuid-helper \
+-	tests/qemu-smbios-kvm/proc/cpuinfo \
+-	tests/qemu-smbios-kvm/proc/self/status \
+-	tests/qemu-smbios-kvm/sbin/dmidecode \
+-	tests/qemu-smbios-kvm/sbin/uname \
+-	tests/qemu-smbios-kvm/sbin/virt-what-cpuid-helper \
+-	tests/rhel5-xen-dom0/proc/cpuinfo \
+-	tests/rhel5-xen-dom0/proc/self/status \
+-	tests/rhel5-xen-dom0/proc/xen/balloon \
+-	tests/rhel5-xen-dom0/proc/xen/capabilities \
+-	tests/rhel5-xen-dom0/proc/xen/privcmd \
+-	tests/rhel5-xen-dom0/proc/xen/xenbus \
+-	tests/rhel5-xen-dom0/proc/xen/xsd_kva \
+-	tests/rhel5-xen-dom0/proc/xen/xsd_port \
+-	tests/rhel5-xen-dom0/sbin/dmidecode \
+-	tests/rhel5-xen-dom0/sbin/uname \
+-	tests/rhel5-xen-dom0/sbin/virt-what-cpuid-helper \
+-	tests/rhel5-xen-dom0/sys/hypervisor/properties/pagesize \
+-	tests/rhel5-xen-dom0/sys/hypervisor/properties/changeset \
+-	tests/rhel5-xen-dom0/sys/hypervisor/properties/virtual_start \
+-	tests/rhel5-xen-dom0/sys/hypervisor/properties/capabilities \
+-	tests/rhel5-xen-dom0/sys/hypervisor/properties/writable_pt \
+-	tests/rhel5-xen-dom0/sys/hypervisor/type \
+-	tests/rhel5-xen-dom0/sys/hypervisor/vmcoreinfo \
+-	tests/rhel5-xen-dom0/sys/hypervisor/version/minor \
+-	tests/rhel5-xen-dom0/sys/hypervisor/version/major \
+-	tests/rhel5-xen-dom0/sys/hypervisor/version/extra \
+-	tests/rhel5-xen-dom0/sys/hypervisor/compilation/compiler \
+-	tests/rhel5-xen-dom0/sys/hypervisor/compilation/compiled_by \
+-	tests/rhel5-xen-dom0/sys/hypervisor/compilation/compile_date \
+-	tests/rhel5-xen-dom0/sys/hypervisor/uuid \
+-	tests/rhel5-xen-domU-hvm/proc/cpuinfo \
+-	tests/rhel5-xen-domU-hvm/proc/self/status \
+-	tests/rhel5-xen-domU-hvm/sbin/dmidecode \
+-	tests/rhel5-xen-domU-hvm/sbin/uname \
+-	tests/rhel5-xen-domU-hvm/sbin/virt-what-cpuid-helper \
+-	tests/rhel5-xen-domU-hvm-ia64/proc/cpuinfo \
+-	tests/rhel5-xen-domU-hvm-ia64/proc/self/status \
+-	tests/rhel5-xen-domU-hvm-ia64/sbin/dmidecode \
+-	tests/rhel5-xen-domU-hvm-ia64/sbin/uname \
+-	tests/rhel5-xen-domU-hvm-ia64/sbin/virt-what-cpuid-helper \
+-	tests/rhel5-xen-domU-hvm-ia64/sys/bus/xen/drivers/vbd/bind \
+-	tests/rhel5-xen-domU-hvm-ia64/sys/bus/xen/drivers/vbd/unbind \
+-	tests/rhel5-xen-domU-hvm-ia64/sys/bus/xen/drivers/vif/bind \
+-	tests/rhel5-xen-domU-hvm-ia64/sys/bus/xen/drivers/vif/unbind \
+-	tests/rhel5-xen-domU-hvm-ia64/sys/bus/xen/drivers_probe \
+-	tests/rhel5-xen-domU-pv/proc/cpuinfo \
+-	tests/rhel5-xen-domU-pv/proc/self/status \
+-	tests/rhel5-xen-domU-pv/proc/xen/balloon \
+-	tests/rhel5-xen-domU-pv/proc/xen/capabilities \
+-	tests/rhel5-xen-domU-pv/proc/xen/privcmd \
+-	tests/rhel5-xen-domU-pv/proc/xen/xenbus \
+-	tests/rhel5-xen-domU-pv/sbin/dmidecode \
+-	tests/rhel5-xen-domU-pv/sbin/uname \
+-	tests/rhel5-xen-domU-pv/sbin/virt-what-cpuid-helper \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/properties/pagesize \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/properties/changeset \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/properties/virtual_start \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/properties/capabilities \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/properties/writable_pt \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/type \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/vmcoreinfo \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/version/minor \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/version/major \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/version/extra \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/compilation/compiler \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/compilation/compiled_by \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/compilation/compile_date \
+-	tests/rhel5-xen-domU-pv/sys/hypervisor/uuid \
+-	tests/rhev/proc/cpuinfo \
+-	tests/rhev/proc/self/status \
+-	tests/rhev/sbin/dmidecode \
+-	tests/rhev/sbin/uname \
+-	tests/rhev/sbin/virt-what-cpuid-helper \
+-	tests/vmm/proc/cpuinfo \
+-	tests/vmm/sbin/dmidecode \
+-	tests/vmm/sbin/uname \
+-	tests/vmm/sbin/virt-what-cpuid-helper \
+-	tests/xen-arm/proc/cpuinfo \
+-	tests/xen-arm/proc/device-tree/hypervisor/compatible \
+-	tests/xen-arm/proc/self/status \
+-	tests/xen-arm/sbin/dmidecode \
+-	tests/xen-arm/sbin/uname \
+-	tests/xen-arm/sbin/virt-what-cpuid-helper \
+-	tests/zvm/proc/cpuinfo \
+-	tests/zvm/proc/self/status \
+-	tests/zvm/proc/sysinfo \
+-	tests/zvm/sbin/dmidecode \
+-	tests/zvm/sbin/uname \
+-	tests/zvm/sbin/virt-what-cpuid-helper \
+-	$(TESTS)
+diff --git a/configure.ac b/configure.ac
+index 3f16dba..5e0d9c4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -32,10 +32,85 @@ dnl Architecture we are compiling for.
+ AC_CANONICAL_HOST
+ AM_CONDITIONAL([HOST_CPU_IA64], [ test "x$host_cpu" = "xia64" ])
+ 
++dnl List of tests.
++tests="\
++	aws-baremetal-x86 \
++	aws-kvm-arm \
++	aws-kvm-x86 \
++	aws-xen-x86 \
++	baremetal \
++	bhyve \
++	docker \
++	esx4.1 \
++	hyperv \
++	kvm \
++	kvm-explicit-cpu \
++	ldoms \
++	linux-vserver \
++	lkvm \
++	lkvm-arm \
++	lx86 \
++	lxc \
++	parallels-desktop \
++	ppc64-baremetal \
++	ppc64-kvm \
++	ppc64-lpar-dedicated \
++	ppc64-lpar-shared \
++	qemu \
++	qemu-arm \
++	qemu-smbios \
++	qemu-smbios-kvm \
++	rhel5-xen-dom0 \
++	rhel5-xen-domU-hvm \
++	rhel5-xen-domU-hvm-ia64 \
++	rhel5-xen-domU-pv \
++	rhev \
++	vmm \
++	xen-arm \
++	zvm \
++        "
++AC_SUBST([tests])
++
+ dnl Produce output files.
+ AC_CONFIG_HEADERS([config.h])
+ AC_CONFIG_FILES([virt-what],[chmod +x virt-what])
+-AC_CONFIG_FILES([Makefile])
++AC_CONFIG_FILES([Makefile
++                 tests/Makefile
++	         tests/aws-baremetal-x86/Makefile
++	         tests/aws-kvm-arm/Makefile
++	         tests/aws-kvm-x86/Makefile
++	         tests/aws-xen-x86/Makefile
++	         tests/baremetal/Makefile
++	         tests/bhyve/Makefile
++	         tests/docker/Makefile
++	         tests/esx4.1/Makefile
++	         tests/hyperv/Makefile
++	         tests/kvm/Makefile
++	         tests/kvm-explicit-cpu/Makefile
++	         tests/ldoms/Makefile
++	         tests/linux-vserver/Makefile
++	         tests/lkvm/Makefile
++	         tests/lkvm-arm/Makefile
++	         tests/lx86/Makefile
++	         tests/lxc/Makefile
++	         tests/parallels-desktop/Makefile
++	         tests/ppc64-baremetal/Makefile
++	         tests/ppc64-kvm/Makefile
++	         tests/ppc64-lpar-dedicated/Makefile
++	         tests/ppc64-lpar-shared/Makefile
++	         tests/qemu/Makefile
++	         tests/qemu-arm/Makefile
++	         tests/qemu-smbios/Makefile
++	         tests/qemu-smbios-kvm/Makefile
++	         tests/rhel5-xen-dom0/Makefile
++	         tests/rhel5-xen-domU-hvm/Makefile
++	         tests/rhel5-xen-domU-hvm-ia64/Makefile
++	         tests/rhel5-xen-domU-pv/Makefile
++	         tests/rhev/Makefile
++	         tests/vmm/Makefile
++	         tests/xen-arm/Makefile
++	         tests/zvm/Makefile
++                 ])
+ 
+ AC_CHECK_PROG([POD2MAN], [pod2man], [pod2man], [false])
+ if test "$POD2MAN" = "false"; then
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+new file mode 100644
+index 0000000..36bf918
+--- /dev/null
++++ b/tests/Makefile.am
+@@ -0,0 +1,20 @@
++# 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 = *~
++
++SUBDIRS = $(tests)
+diff --git a/tests/aws-baremetal-x86/Makefile.am b/tests/aws-baremetal-x86/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/aws-baremetal-x86/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/test-aws-baremetal-x86.sh b/tests/aws-baremetal-x86/test.sh
+similarity index 93%
+rename from tests/test-aws-baremetal-x86.sh
+rename to tests/aws-baremetal-x86/test.sh
+index d456163..4a1e566 100755
+--- a/tests/test-aws-baremetal-x86.sh
++++ b/tests/aws-baremetal-x86/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/aws-baremetal-x86
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="aws"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/aws-kvm-arm/Makefile.am b/tests/aws-kvm-arm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/aws-kvm-arm/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/test-aws-kvm-arm.sh b/tests/aws-kvm-arm/test.sh
+similarity index 94%
+rename from tests/test-aws-kvm-arm.sh
+rename to tests/aws-kvm-arm/test.sh
+index 8875421..5d31995 100755
+--- a/tests/test-aws-kvm-arm.sh
++++ b/tests/aws-kvm-arm/test.sh
+@@ -15,9 +15,7 @@
+ # 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)"
++output="$(PATH=../..:$PATH virt-what --test-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"
+diff --git a/tests/aws-kvm-x86/Makefile.am b/tests/aws-kvm-x86/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/aws-kvm-x86/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/test-aws-kvm-x86.sh b/tests/aws-kvm-x86/test.sh
+similarity index 94%
+rename from tests/test-aws-kvm-x86.sh
+rename to tests/aws-kvm-x86/test.sh
+index db4c19f..133ef13 100755
+--- a/tests/test-aws-kvm-x86.sh
++++ b/tests/aws-kvm-x86/test.sh
+@@ -15,9 +15,7 @@
+ # 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)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="kvm
+ aws"
+ 
+diff --git a/tests/aws-xen-x86/Makefile.am b/tests/aws-xen-x86/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/aws-xen-x86/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/test-aws-xen-x86.sh b/tests/aws-xen-x86/test.sh
+similarity index 94%
+rename from tests/test-aws-xen-x86.sh
+rename to tests/aws-xen-x86/test.sh
+index 22b7f83..4ed4cde 100755
+--- a/tests/test-aws-xen-x86.sh
++++ b/tests/aws-xen-x86/test.sh
+@@ -15,9 +15,7 @@
+ # 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)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen
+ xen-hvm
+ aws"
+diff --git a/tests/baremetal/Makefile.am b/tests/baremetal/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/baremetal/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/test-baremetal.sh b/tests/baremetal/test.sh
+similarity index 94%
+rename from tests/test-baremetal.sh
+rename to tests/baremetal/test.sh
+index 1ca4bcf..d4a0c3f 100755
+--- a/tests/test-baremetal.sh
++++ b/tests/baremetal/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/baremetal
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected=""
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/bhyve/Makefile.am b/tests/bhyve/Makefile.am
+new file mode 100644
+index 0000000..0198c8f
+--- /dev/null
++++ b/tests/bhyve/Makefile.am
+@@ -0,0 +1,27 @@
++# 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 \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-bhyve.sh b/tests/bhyve/test.sh
+similarity index 94%
+rename from tests/test-bhyve.sh
+rename to tests/bhyve/test.sh
+index a66b3b4..81cb9fe 100755
+--- a/tests/test-bhyve.sh
++++ b/tests/bhyve/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/bhyve
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="bhyve"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/docker/Makefile.am b/tests/docker/Makefile.am
+new file mode 100644
+index 0000000..e0ea991
+--- /dev/null
++++ b/tests/docker/Makefile.am
+@@ -0,0 +1,29 @@
++# 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 \
++	.dockerinit \
++	proc/cpuinfo \
++	proc/self/status \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-docker.sh b/tests/docker/test.sh
+similarity index 94%
+rename from tests/test-docker.sh
+rename to tests/docker/test.sh
+index 4187f61..f09ad9f 100755
+--- a/tests/test-docker.sh
++++ b/tests/docker/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/docker
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="docker"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/esx4.1/Makefile.am b/tests/esx4.1/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/esx4.1/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/test-esx4.1.sh b/tests/esx4.1/test.sh
+similarity index 94%
+rename from tests/test-esx4.1.sh
+rename to tests/esx4.1/test.sh
+index 35c4e1d..0306a82 100755
+--- a/tests/test-esx4.1.sh
++++ b/tests/esx4.1/test.sh
+@@ -16,9 +16,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/esx4.1
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="vmware"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/hyperv/Makefile.am b/tests/hyperv/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/hyperv/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/test-hyperv.sh b/tests/hyperv/test.sh
+similarity index 94%
+rename from tests/test-hyperv.sh
+rename to tests/hyperv/test.sh
+index 5015cc5..f84edf9 100755
+--- a/tests/test-hyperv.sh
++++ b/tests/hyperv/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/hyperv
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="hyperv"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/kvm-explicit-cpu/Makefile.am b/tests/kvm-explicit-cpu/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/kvm-explicit-cpu/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/test-kvm-explicit-cpu.sh b/tests/kvm-explicit-cpu/test.sh
+similarity index 94%
+rename from tests/test-kvm-explicit-cpu.sh
+rename to tests/kvm-explicit-cpu/test.sh
+index 7482b83..ba137c0 100755
+--- a/tests/test-kvm-explicit-cpu.sh
++++ b/tests/kvm-explicit-cpu/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/kvm-explicit-cpu
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="kvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/kvm/Makefile.am b/tests/kvm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/kvm/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/test-kvm.sh b/tests/kvm/test.sh
+similarity index 95%
+rename from tests/test-kvm.sh
+rename to tests/kvm/test.sh
+index 035e244..8315213 100755
+--- a/tests/test-kvm.sh
++++ b/tests/kvm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/kvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="kvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/ldoms/Makefile.am b/tests/ldoms/Makefile.am
+new file mode 100644
+index 0000000..45770aa
+--- /dev/null
++++ b/tests/ldoms/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 \
++	dev/mdesc \
++	proc/cpuinfo \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-ldoms.sh b/tests/ldoms/test.sh
+similarity index 94%
+rename from tests/test-ldoms.sh
+rename to tests/ldoms/test.sh
+index 6ae5aba..d911f08 100755
+--- a/tests/test-ldoms.sh
++++ b/tests/ldoms/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/ldoms
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="ldoms
+ ldoms-guest"
+ 
+diff --git a/tests/linux-vserver/Makefile.am b/tests/linux-vserver/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/linux-vserver/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/test-linux-vserver.sh b/tests/linux-vserver/test.sh
+similarity index 94%
+rename from tests/test-linux-vserver.sh
+rename to tests/linux-vserver/test.sh
+index 7988f81..008e291 100755
+--- a/tests/test-linux-vserver.sh
++++ b/tests/linux-vserver/test.sh
+@@ -16,9 +16,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/linux-vserver
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="linux_vserver
+ linux_vserver-guest"
+ 
+diff --git a/tests/lkvm-arm/Makefile.am b/tests/lkvm-arm/Makefile.am
+new file mode 100644
+index 0000000..5014fd4
+--- /dev/null
++++ b/tests/lkvm-arm/Makefile.am
+@@ -0,0 +1,29 @@
++# 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/compatible \
++	proc/self/status \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-lkvm-arm.sh b/tests/lkvm-arm/test.sh
+similarity index 94%
+rename from tests/test-lkvm-arm.sh
+rename to tests/lkvm-arm/test.sh
+index bed50ad..251db04 100755
+--- a/tests/test-lkvm-arm.sh
++++ b/tests/lkvm-arm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/lkvm-arm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="lkvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/lkvm/Makefile.am b/tests/lkvm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/lkvm/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/test-lkvm.sh b/tests/lkvm/test.sh
+similarity index 94%
+rename from tests/test-lkvm.sh
+rename to tests/lkvm/test.sh
+index 6eb326c..79850e0 100755
+--- a/tests/test-lkvm.sh
++++ b/tests/lkvm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/lkvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="lkvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/lx86/Makefile.am b/tests/lx86/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/lx86/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/test-lx86.sh b/tests/lx86/test.sh
+similarity index 95%
+rename from tests/test-lx86.sh
+rename to tests/lx86/test.sh
+index 69d08a7..b3b1ccb 100755
+--- a/tests/test-lx86.sh
++++ b/tests/lx86/test.sh
+@@ -16,9 +16,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/lx86
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="powervm_lx86"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/lxc/Makefile.am b/tests/lxc/Makefile.am
+new file mode 100644
+index 0000000..59a2d70
+--- /dev/null
++++ b/tests/lxc/Makefile.am
+@@ -0,0 +1,29 @@
++# 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/1/environ \
++	proc/cpuinfo \
++	proc/self/status \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-lxc.sh b/tests/lxc/test.sh
+similarity index 95%
+rename from tests/test-lxc.sh
+rename to tests/lxc/test.sh
+index 47a5f2b..c619de9 100755
+--- a/tests/test-lxc.sh
++++ b/tests/lxc/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/lxc
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="lxc"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/parallels-desktop/Makefile.am b/tests/parallels-desktop/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/parallels-desktop/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/test-parallels-desktop.sh b/tests/parallels-desktop/test.sh
+similarity index 94%
+rename from tests/test-parallels-desktop.sh
+rename to tests/parallels-desktop/test.sh
+index 20701fe..5585fec 100755
+--- a/tests/test-parallels-desktop.sh
++++ b/tests/parallels-desktop/test.sh
+@@ -16,9 +16,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/parallels-desktop
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="parallels"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/ppc64-baremetal/Makefile.am b/tests/ppc64-baremetal/Makefile.am
+new file mode 100644
+index 0000000..0198c8f
+--- /dev/null
++++ b/tests/ppc64-baremetal/Makefile.am
+@@ -0,0 +1,27 @@
++# 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 \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-ppc64-baremetal.sh b/tests/ppc64-baremetal/test.sh
+similarity index 94%
+rename from tests/test-ppc64-baremetal.sh
+rename to tests/ppc64-baremetal/test.sh
+index 9ca3cee..6687ce3 100755
+--- a/tests/test-ppc64-baremetal.sh
++++ b/tests/ppc64-baremetal/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/ppc64-baremetal
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected=""
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/ppc64-kvm/Makefile.am b/tests/ppc64-kvm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/ppc64-kvm/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/test-ppc64-kvm.sh b/tests/ppc64-kvm/test.sh
+similarity index 94%
+rename from tests/test-ppc64-kvm.sh
+rename to tests/ppc64-kvm/test.sh
+index c691c96..c0ece85 100755
+--- a/tests/test-ppc64-kvm.sh
++++ b/tests/ppc64-kvm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/ppc64-kvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="ibm_power-kvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/ppc64-lpar-dedicated/Makefile.am b/tests/ppc64-lpar-dedicated/Makefile.am
+new file mode 100644
+index 0000000..bfbe474
+--- /dev/null
++++ b/tests/ppc64-lpar-dedicated/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/ppc64/lparcfg \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-ppc64-lpar-dedicated.sh b/tests/ppc64-lpar-dedicated/test.sh
+similarity index 94%
+rename from tests/test-ppc64-lpar-dedicated.sh
+rename to tests/ppc64-lpar-dedicated/test.sh
+index 0316ea2..c51eafc 100755
+--- a/tests/test-ppc64-lpar-dedicated.sh
++++ b/tests/ppc64-lpar-dedicated/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/ppc64-lpar-dedicated
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="ibm_power-lpar_dedicated"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/ppc64-lpar-shared/Makefile.am b/tests/ppc64-lpar-shared/Makefile.am
+new file mode 100644
+index 0000000..8f1f63f
+--- /dev/null
++++ b/tests/ppc64-lpar-shared/Makefile.am
+@@ -0,0 +1,29 @@
++# 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 \
++	proc/ppc64/lparcfg \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-ppc64-lpar-shared.sh b/tests/ppc64-lpar-shared/test.sh
+similarity index 94%
+rename from tests/test-ppc64-lpar-shared.sh
+rename to tests/ppc64-lpar-shared/test.sh
+index bbc974a..cfa564e 100755
+--- a/tests/test-ppc64-lpar-shared.sh
++++ b/tests/ppc64-lpar-shared/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/ppc64-lpar-shared
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="ibm_power-lpar_shared"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/qemu-arm/Makefile.am b/tests/qemu-arm/Makefile.am
+new file mode 100644
+index 0000000..4d8b02d
+--- /dev/null
++++ b/tests/qemu-arm/Makefile.am
+@@ -0,0 +1,29 @@
++# 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/fw-cfg@9020000/compatible \
++	proc/self/status \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-qemu-arm.sh b/tests/qemu-arm/test.sh
+similarity index 94%
+rename from tests/test-qemu-arm.sh
+rename to tests/qemu-arm/test.sh
+index 58455c8..a6d487e 100755
+--- a/tests/test-qemu-arm.sh
++++ b/tests/qemu-arm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/qemu-arm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="qemu"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/qemu-smbios-kvm/Makefile.am b/tests/qemu-smbios-kvm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/qemu-smbios-kvm/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/test-qemu-smbios-kvm.sh b/tests/qemu-smbios-kvm/test.sh
+similarity index 94%
+rename from tests/test-qemu-smbios-kvm.sh
+rename to tests/qemu-smbios-kvm/test.sh
+index f4d8e38..04e291e 100755
+--- a/tests/test-qemu-smbios-kvm.sh
++++ b/tests/qemu-smbios-kvm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/qemu-smbios-kvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="kvm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/qemu-smbios/Makefile.am b/tests/qemu-smbios/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/qemu-smbios/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/test-qemu-smbios.sh b/tests/qemu-smbios/test.sh
+similarity index 94%
+rename from tests/test-qemu-smbios.sh
+rename to tests/qemu-smbios/test.sh
+index 114470a..a6d487e 100755
+--- a/tests/test-qemu-smbios.sh
++++ b/tests/qemu-smbios/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/qemu-smbios
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="qemu"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/qemu/Makefile.am b/tests/qemu/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/qemu/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/test-qemu.sh b/tests/qemu/test.sh
+similarity index 94%
+rename from tests/test-qemu.sh
+rename to tests/qemu/test.sh
+index 284fe41..6691307 100755
+--- a/tests/test-qemu.sh
++++ b/tests/qemu/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/qemu
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="qemu"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/rhel5-xen-dom0/Makefile.am b/tests/rhel5-xen-dom0/Makefile.am
+new file mode 100644
+index 0000000..12e9835
+--- /dev/null
++++ b/tests/rhel5-xen-dom0/Makefile.am
+@@ -0,0 +1,48 @@
++# 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 \
++	proc/xen/balloon \
++	proc/xen/capabilities \
++	proc/xen/privcmd \
++	proc/xen/xenbus \
++	proc/xen/xsd_kva \
++	proc/xen/xsd_port \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper \
++	sys/hypervisor/properties/pagesize \
++	sys/hypervisor/properties/changeset \
++	sys/hypervisor/properties/virtual_start \
++	sys/hypervisor/properties/capabilities \
++	sys/hypervisor/properties/writable_pt \
++	sys/hypervisor/type \
++	sys/hypervisor/vmcoreinfo \
++	sys/hypervisor/version/minor \
++	sys/hypervisor/version/major \
++	sys/hypervisor/version/extra \
++	sys/hypervisor/compilation/compiler \
++	sys/hypervisor/compilation/compiled_by \
++	sys/hypervisor/compilation/compile_date \
++	sys/hypervisor/uuid
+diff --git a/tests/test-rhel5-xen-dom0.sh b/tests/rhel5-xen-dom0/test.sh
+similarity index 94%
+rename from tests/test-rhel5-xen-dom0.sh
+rename to tests/rhel5-xen-dom0/test.sh
+index 6571ecd..0d3297a 100755
+--- a/tests/test-rhel5-xen-dom0.sh
++++ b/tests/rhel5-xen-dom0/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/rhel5-xen-dom0
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen
+ xen-dom0"
+ 
+diff --git a/tests/rhel5-xen-domU-hvm-ia64/Makefile.am b/tests/rhel5-xen-domU-hvm-ia64/Makefile.am
+new file mode 100644
+index 0000000..48d7662
+--- /dev/null
++++ b/tests/rhel5-xen-domU-hvm-ia64/Makefile.am
+@@ -0,0 +1,33 @@
++# 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 \
++	sys/bus/xen/drivers/vbd/bind \
++	sys/bus/xen/drivers/vbd/unbind \
++	sys/bus/xen/drivers/vif/bind \
++	sys/bus/xen/drivers/vif/unbind \
++	sys/bus/xen/drivers_probe
+diff --git a/tests/test-rhel5-xen-domU-hvm-ia64.sh b/tests/rhel5-xen-domU-hvm-ia64/test.sh
+similarity index 93%
+rename from tests/test-rhel5-xen-domU-hvm-ia64.sh
+rename to tests/rhel5-xen-domU-hvm-ia64/test.sh
+index 5f29c1b..7f84a5c 100755
+--- a/tests/test-rhel5-xen-domU-hvm-ia64.sh
++++ b/tests/rhel5-xen-domU-hvm-ia64/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/rhel5-xen-domU-hvm-ia64
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen
+ xen-hvm"
+ 
+diff --git a/tests/rhel5-xen-domU-hvm/Makefile.am b/tests/rhel5-xen-domU-hvm/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/rhel5-xen-domU-hvm/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/test-rhel5-xen-domU-hvm.sh b/tests/rhel5-xen-domU-hvm/test.sh
+similarity index 94%
+rename from tests/test-rhel5-xen-domU-hvm.sh
+rename to tests/rhel5-xen-domU-hvm/test.sh
+index 593fdb7..627de55 100755
+--- a/tests/test-rhel5-xen-domU-hvm.sh
++++ b/tests/rhel5-xen-domU-hvm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/rhel5-xen-domU-hvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen
+ xen-hvm"
+ 
+diff --git a/tests/rhel5-xen-domU-pv/Makefile.am b/tests/rhel5-xen-domU-pv/Makefile.am
+new file mode 100644
+index 0000000..4eeb69b
+--- /dev/null
++++ b/tests/rhel5-xen-domU-pv/Makefile.am
+@@ -0,0 +1,46 @@
++# 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 \
++	proc/xen/balloon \
++	proc/xen/capabilities \
++	proc/xen/privcmd \
++	proc/xen/xenbus \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper \
++	sys/hypervisor/properties/pagesize \
++	sys/hypervisor/properties/changeset \
++	sys/hypervisor/properties/virtual_start \
++	sys/hypervisor/properties/capabilities \
++	sys/hypervisor/properties/writable_pt \
++	sys/hypervisor/type \
++	sys/hypervisor/vmcoreinfo \
++	sys/hypervisor/version/minor \
++	sys/hypervisor/version/major \
++	sys/hypervisor/version/extra \
++	sys/hypervisor/compilation/compiler \
++	sys/hypervisor/compilation/compiled_by \
++	sys/hypervisor/compilation/compile_date \
++	sys/hypervisor/uuid
+diff --git a/tests/test-rhel5-xen-domU-pv.sh b/tests/rhel5-xen-domU-pv/test.sh
+similarity index 94%
+rename from tests/test-rhel5-xen-domU-pv.sh
+rename to tests/rhel5-xen-domU-pv/test.sh
+index 6561605..a3b9472 100755
+--- a/tests/test-rhel5-xen-domU-pv.sh
++++ b/tests/rhel5-xen-domU-pv/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/rhel5-xen-domU-pv
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen
+ xen-domU"
+ 
+diff --git a/tests/rhev/Makefile.am b/tests/rhev/Makefile.am
+new file mode 100644
+index 0000000..b748df8
+--- /dev/null
++++ b/tests/rhev/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/test-rhev.sh b/tests/rhev/test.sh
+similarity index 94%
+rename from tests/test-rhev.sh
+rename to tests/rhev/test.sh
+index 76be547..7d9c22f 100755
+--- a/tests/test-rhev.sh
++++ b/tests/rhev/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/rhev
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="rhev
+ kvm"
+ 
+diff --git a/tests/vmm/Makefile.am b/tests/vmm/Makefile.am
+new file mode 100644
+index 0000000..0198c8f
+--- /dev/null
++++ b/tests/vmm/Makefile.am
+@@ -0,0 +1,27 @@
++# 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 \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-vmm.sh b/tests/vmm/test.sh
+similarity index 95%
+rename from tests/test-vmm.sh
+rename to tests/vmm/test.sh
+index e1de60a..56c3b0e 100755
+--- a/tests/test-vmm.sh
++++ b/tests/vmm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/vmm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="vmm"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/xen-arm/Makefile.am b/tests/xen-arm/Makefile.am
+new file mode 100644
+index 0000000..acf118a
+--- /dev/null
++++ b/tests/xen-arm/Makefile.am
+@@ -0,0 +1,29 @@
++# 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/self/status \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-xen-arm.sh b/tests/xen-arm/test.sh
+similarity index 94%
+rename from tests/test-xen-arm.sh
+rename to tests/xen-arm/test.sh
+index 209712e..a4c2599 100755
+--- a/tests/test-xen-arm.sh
++++ b/tests/xen-arm/test.sh
+@@ -15,9 +15,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/xen-arm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="xen"
+ 
+ if [ "$output" != "$expected" ]; then
+diff --git a/tests/zvm/Makefile.am b/tests/zvm/Makefile.am
+new file mode 100644
+index 0000000..951274b
+--- /dev/null
++++ b/tests/zvm/Makefile.am
+@@ -0,0 +1,29 @@
++# 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 \
++	proc/sysinfo \
++	sbin/dmidecode \
++	sbin/uname \
++	sbin/virt-what-cpuid-helper
+diff --git a/tests/test-zvm.sh b/tests/zvm/test.sh
+similarity index 95%
+rename from tests/test-zvm.sh
+rename to tests/zvm/test.sh
+index 0620db0..a22f311 100755
+--- a/tests/test-zvm.sh
++++ b/tests/zvm/test.sh
+@@ -16,9 +16,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ 
+-root=tests/zvm
+-
+-output="$(./virt-what --test-root=$root 2>&1)"
++output="$(PATH=../..:$PATH virt-what --test-root=. 2>&1)"
+ expected="ibm_systemz
+ ibm_systemz-zvm"
+ 
+-- 
+2.23.0
+
diff --git a/SOURCES/0016-build-Add-.gitignore-to-tarball.patch b/SOURCES/0016-build-Add-.gitignore-to-tarball.patch
new file mode 100644
index 0000000..ea0d391
--- /dev/null
+++ b/SOURCES/0016-build-Add-.gitignore-to-tarball.patch
@@ -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
+
diff --git a/SOURCES/0017-maintainer-Add-rules-for-maintainers.patch b/SOURCES/0017-maintainer-Add-rules-for-maintainers.patch
new file mode 100644
index 0000000..3d9dc57
--- /dev/null
+++ b/SOURCES/0017-maintainer-Add-rules-for-maintainers.patch
@@ -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
+
diff --git a/SOURCES/0018-Fix-virt-what-cpuid-helper.patch b/SOURCES/0018-Fix-virt-what-cpuid-helper.patch
new file mode 100644
index 0000000..537253b
--- /dev/null
+++ b/SOURCES/0018-Fix-virt-what-cpuid-helper.patch
@@ -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
+
diff --git a/SOURCES/0019-Add-support-for-Nutanix-Acropolis-Hypervisor-AHV-RHB.patch b/SOURCES/0019-Add-support-for-Nutanix-Acropolis-Hypervisor-AHV-RHB.patch
new file mode 100644
index 0000000..dee019e
--- /dev/null
+++ b/SOURCES/0019-Add-support-for-Nutanix-Acropolis-Hypervisor-AHV-RHB.patch
@@ -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
+
diff --git a/SOURCES/0020-helper-Fix-KVM-signature.patch b/SOURCES/0020-helper-Fix-KVM-signature.patch
new file mode 100644
index 0000000..19acbe6
--- /dev/null
+++ b/SOURCES/0020-helper-Fix-KVM-signature.patch
@@ -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
+
diff --git a/SOURCES/0021-Fix-incorrect-detection-of-MS-Surfacebook-2-as-a-vir.patch b/SOURCES/0021-Fix-incorrect-detection-of-MS-Surfacebook-2-as-a-vir.patch
new file mode 100644
index 0000000..5a9474c
--- /dev/null
+++ b/SOURCES/0021-Fix-incorrect-detection-of-MS-Surfacebook-2-as-a-vir.patch
@@ -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
+
diff --git a/SOURCES/gitignore b/SOURCES/gitignore
new file mode 100644
index 0000000..f565f34
--- /dev/null
+++ b/SOURCES/gitignore
@@ -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
diff --git a/SPECS/virt-what.spec b/SPECS/virt-what.spec
index 960ca6e..aee253c 100644
--- a/SPECS/virt-what.spec
+++ b/SPECS/virt-what.spec
@@ -1,12 +1,17 @@
 Name:           virt-what
 Version:        1.18
-Release:        6%{?dist}
+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
@@ -21,6 +26,22 @@ 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
@@ -94,7 +115,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 +154,18 @@ fi
 
 
 %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