Skip to contentSkip to conversation

package/kvm-unit-tests: new package

PATCH New Cyril Bur 3 participants 12 messages Aug 17, 2016 – Sep 23, 2016

lore
Share & tools
lore

Cyril Bur

author
#0 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

The unit tests are tiny guest operating systems that generally execute only tens of lines of C and assembler test code in order to obtain its PASS/FAIL result. Unit tests provide KVM and virt hardware functional testing by targeting the features through minimal implementations of their use per the hardware specification. The simplicity of unit tests make them easy to verify they are correct, easy to maintain, and easy to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as regression tests. It's strongly encouraged that patches implementing new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

---
 package/Config.in                        |  1 +
 package/kvm-unit-tests/Config.in         | 17 ++++++++++++
 package/kvm-unit-tests/kvm-unit-tests.mk | 45 ++++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 package/kvm-unit-tests/Config.in
 create mode 100644 package/kvm-unit-tests/kvm-unit-tests.mk
package/Config.in +1 -0
index e1ddcea..60f7d6e 100644
@@ -82,6 +82,7 @@ menu "Debugging, profiling and benchmark"
 	source "package/kexec/Config.in"
 	source "package/kexec-lite/Config.in"
 	source "package/ktap/Config.in"
+	source "package/kvm-unit-tests/Config.in"
 	source "package/kyua/Config.in"
 	source "package/latencytop/Config.in"
 	source "package/lmbench/Config.in"
package/kvm-unit-tests/Config.in new file +17 -0
new file mode 100644
index 0000000..cf0da58
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_KVM_UNIT_TESTS
+	bool "kvm-unit-tests"
+	depends on BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 || BR2_i386 || BR2_arm
+	help
+	  kvm-unit-tests is a project as old as KVM. As its name suggests,
+	  it's purpose is to provide unit tests for KVM. The unit tests are tiny
+	  guest operating systems that generally execute only tens of lines of C
+	  and assembler test code in order to obtain its PASS/FAIL result. Unit
+	  tests provide KVM and virt hardware functional testing by targeting
+	  the features through minimal implementations of their use per the
+	  hardware specification. The simplicity of unit tests make them easy to
+	  verify they are correct, easy to maintain, and easy to use in timing
+	  measurements. Unit tests are also often used for quick and dirty bug
+	  reproducers. The reproducers may then be kept as regression tests.
+	  It's strongly encouraged that patches implementing new KVM features
+	  are submitted with accompanying unit tests.
+	  http://www.linux-kvm.org/page/KVM-unit-tests
package/kvm-unit-tests/kvm-unit-tests.mk new file +45 -0

45 lines not on this page · raw message

Signature · 1 line
2.9.3
#1 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Hello,

Quoted 12 lines · Cyril Bur

The unit tests are tiny guest operating systems that generally execute only tens of lines of C and assembler test code in order to obtain its PASS/FAIL result. Unit tests provide KVM and virt hardware functional testing by targeting the features through minimal implementations of their use per the hardware specification. The simplicity of unit tests make them easy to verify they are correct, easy to maintain, and easy to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as regression tests. It's strongly encouraged that patches implementing new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

Quoted 8 lines
---
 package/Config.in                        |  1 +
 package/kvm-unit-tests/Config.in         | 17 ++++++++++++
 package/kvm-unit-tests/kvm-unit-tests.mk | 45 ++++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 package/kvm-unit-tests/Config.in
 create mode 100644 package/kvm-unit-tests/kvm-unit-tests.mk

Applied to master with the following changes:

[Thomas:
- order architecture dependencies in Config.in alphabetically.
- rewrap Config.in help text, lines were too long
- add an empty line between the package description and the upstream project URL in the Config.in help text
- don't make KVM_UNIT_TESTS_ARCH default to $(ARCH). This was not correct for i386 for example. Instead, just handle the few architectures that the package supports.
- remove useless double quotes in variable definitions.
- remove --prefix="$(TARGET_DIR)" from CONF_OPTS. It was installing everything in /share/ and not /usr/share/, and setting the prefix to TARGET_DIR at configure time is not good. Instead, pass DESTDIR at installation time.]

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Quoted 27 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Hello,

Quoted 12 lines · Cyril Bur

The unit tests are tiny guest operating systems that generally execute only tens of lines of C and assembler test code in order to obtain its PASS/FAIL result. Unit tests provide KVM and virt hardware functional testing by targeting the features through minimal implementations of their use per the hardware specification. The simplicity of unit tests make them easy to verify they are correct, easy to maintain, and easy to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as regression tests. It's strongly encouraged that patches implementing new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

Quoted 8 lines

---

package/Config.in                        |  1 +
package/kvm-unit-tests/Config.in         | 17 ++++++++++++
package/kvm-unit-tests/kvm-unit-tests.mk | 45 ++++++++++++++++++++++++++++++++
3 files changed, 63 insertions(+)

create mode 100644 package/kvm-unit-tests/Config.in create mode 100644 package/kvm-unit-tests/kvm-unit-tests.mk

Applied to master with the following changes:

Quoted 13 lines

[Thomas:
- order architecture dependencies in Config.in alphabetically.
- rewrap Config.in help text, lines were too long
- add an empty line between the package description and the upstream project URL in the Config.in help text
- don't make KVM_UNIT_TESTS_ARCH default to $(ARCH). This was not correct for i386 for example. Instead, just handle the few architectures that the package supports.
- remove useless double quotes in variable definitions.
- remove --prefix="$(TARGET_DIR)" from CONF_OPTS. It was installing everything in /share/ and not /usr/share/, and setting the prefix to TARGET_DIR at configure time is not good. Instead, pass DESTDIR at installation time.]

It unfortunately fails on x86-64:
http://autobuild.buildroot.org/results/445/4453e8001406a658ae4dc58448baaceb6d93cbf1/

As it contains 32bit code and our toolchains (normally) aren't multilib. I guess we need to build those parts using the host compiler and depend on BR2_HOSTARCH_NEEDS_IA32_COMPILER like we do for grub/syslinux.

Signature · 1 line
Bye, Peter Korsgaard
author
#3 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

In reply to Thomas Petazzoni
Quoted 46 lines · Thomas Petazzoni

Hello,

Quoted 22 lines · Cyril Bur

The unit tests are tiny guest operating systems that generally execute
only tens of lines of C and assembler test code in order to obtain its
PASS/FAIL result. Unit tests provide KVM and virt hardware functional
testing by targeting the features through minimal implementations of
their use per the hardware specification. The simplicity of unit tests
make them easy to verify they are correct, easy to maintain, and easy
to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as
regression tests. It's strongly encouraged that patches implementing
new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

Quoted 8 lines

---

?package/Config.in????????????????????????|??1 +
?package/kvm-unit-tests/Config.in?????????| 17 ++++++++++++
?package/kvm-unit-tests/kvm-unit-tests.mk | 45

++++++++++++++++++++++++++++++++
?3 files changed, 63 insertions(+)
?create mode 100644 package/kvm-unit-tests/Config.in ?create mode 100644 package/kvm-unit-tests/kvm-unit-tests.mk

Applied to master with the following changes:

????[Thomas:
?????- order architecture dependencies in Config.in alphabetically. ?????- rewrap Config.in help text, lines were too long ?????- add an empty line between the package description and the upstream
???????project URL in the Config.in help text
?????- don't make KVM_UNIT_TESTS_ARCH default to $(ARCH). This was not
???????correct for i386 for example. Instead, just handle the few ???????architectures that the package supports.

Quoted 9 lines

?????- remove useless double quotes in variable definitions. ?????- remove --prefix="$(TARGET_DIR)" from CONF_OPTS. It was installing
???????everything in /share/ and not /usr/share/, and setting the prefix to
???????TARGET_DIR at configure time is not good. Instead, pass DESTDIR at
???????installation time.]

Thanks for the fixups.

Cyril

Quoted 1 line

Thomas

#4 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

In reply to Cyril Bur

Hello,

Quoted 12 lines · Cyril Bur

The unit tests are tiny guest operating systems that generally execute only tens of lines of C and assembler test code in order to obtain its PASS/FAIL result. Unit tests provide KVM and virt hardware functional testing by targeting the features through minimal implementations of their use per the hardware specification. The simplicity of unit tests make them easy to verify they are correct, easy to maintain, and easy to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as regression tests. It's strongly encouraged that patches implementing new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

Quoted 1 line

This package is causing a good number of build failures. See:

         arm | kvm-unit-tests-682187afcc99... | NOK | http://autobuild.buildroot.net/results/a81d40f1453ee027c7e2a9da01f482e1d09b464d
        i686 | kvm-unit-tests-682187afcc99... | NOK | http://autobuild.buildroot.net/results/20efe1e310fe71a587774bbe8490d6357acc8edd
      x86_64 | kvm-unit-tests-682187afcc99... | NOK | http://autobuild.buildroot.net/results/07deb6183ed23447de5182ee20df6c9c49e5ca49

Could you have a look and provide patches to address these?

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
author
#5 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Quoted 28 lines · Thomas Petazzoni

Hello,

Quoted 21 lines · Cyril Bur

The unit tests are tiny guest operating systems that generally execute
only tens of lines of C and assembler test code in order to obtain its
PASS/FAIL result. Unit tests provide KVM and virt hardware functional
testing by targeting the features through minimal implementations of
their use per the hardware specification. The simplicity of unit tests
make them easy to verify they are correct, easy to maintain, and easy
to use in timing measurements. Unit tests are also often used for quick and dirty bug reproducers. The reproducers may then be kept as
regression tests. It's strongly encouraged that patches implementing
new KVM features are submitted with accompanying unit tests.
http://www.linux-kvm.org/page/KVM-unit-tests

Quoted 1 line

This package is causing a good number of build failures. See:

Quoted 9 lines

?????????arm | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/a81d40f1453ee027c7e2a9da01f482e1d09b464d ????????i686 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/20efe1e310fe71a587774bbe8490d6357acc8edd ??????x86_64 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/07deb6183ed23447de5182ee20df6c9c49e5ca49

Could you have a look and provide patches to address these?

Sure i'll see what appears to be happening.

Quoted 3 lines

Thanks,

Thomas

#6 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Cyril" == Cyril Bur <[email protected]> writes:

Hi,

Quoted 9 lines
Quoted 9 lines

This package is causing a good number of build failures. See:

?????????arm | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/a81d40f1453ee027c7e2a9da01f482e1d09b464d ????????i686 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/20efe1e310fe71a587774bbe8490d6357acc8edd ??????x86_64 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/07deb6183ed23447de5182ee20df6c9c49e5ca49

Quoted 4 lines
Quoted 2 lines

Could you have a look and provide patches to address these?

Sure i'll see what appears to be happening.

Some of the issues are that it expects the x86-64 toolchain to support -m32 for bootstrap code (which our cross compilers normally don't), so we need the same workaround as we do for syslinux and grub to build those with the host compiler.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Hello,

Quoted 12 lines · Peter Korsgaard
Quoted 11 lines
Quoted 11 lines

This package is causing a good number of build failures. See:

?????????arm | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/a81d40f1453ee027c7e2a9da01f482e1d09b464d ????????i686 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/20efe1e310fe71a587774bbe8490d6357acc8edd ??????x86_64 | kvm-unit-tests-682187afcc99... | NOK | http://autobuil
d.buildroot.net/results/07deb6183ed23447de5182ee20df6c9c49e5ca49

Could you have a look and provide patches to address these?

Quoted 6 lines
Quoted 1 line

Sure i'll see what appears to be happening.

Some of the issues are that it expects the x86-64 toolchain to support -m32 for bootstrap code (which our cross compilers normally don't), so we need the same workaround as we do for syslinux and grub to build those with the host compiler.

I guess this explains the build failure on x86-64, but not the ones on arm and i686.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#8 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Quoted 9 lines
Quoted 6 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Some of the issues are that it expects the x86-64 toolchain to support -m32 for bootstrap code (which our cross compilers normally don't), so we need the same workaround as we do for syslinux and grub to build those with the host compiler.

I guess this explains the build failure on x86-64, but not the ones on arm and i686.

Indeed - That's why I wrote 'some' ;)

Signature · 2 lines
Venlig hilsen,
Peter Korsgaard 
author
#9 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

In reply to Peter Korsgaard
Quoted 24 lines · Peter Korsgaard
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines

"Cyril" == Cyril Bur <[email protected]> writes:

Hi,

?>> This package is causing a good number of build failures. See:
?>>?
?>> ?????????arm | kvm-unit-tests-682187afcc99... | NOK | http://auto
buil
?>> d.buildroot.net/results/a81d40f1453ee027c7e2a9da01f482e1d09b464d ?>> ????????i686 | kvm-unit-tests-682187afcc99... | NOK | http://auto
buil
?>> d.buildroot.net/results/20efe1e310fe71a587774bbe8490d6357acc8edd ?>> ??????x86_64 | kvm-unit-tests-682187afcc99... | NOK | http://auto
buil
?>> d.buildroot.net/results/07deb6183ed23447de5182ee20df6c9c49e5ca49 ?>>?
?>> Could you have a look and provide patches to address these? ?>>?

Quoted 2 lines

?> Sure i'll see what appears to be happening.

So the i686 problem is actually fixed upstream so I've sent a patch to bump the version.

I tried select BR2_HOSTARCH_NEEDS_IA32_COMPILER for x86_64 but didn't seem to solve the problem. I know almost nothing about x86 asm so I'm at a bit of a loss, it looks like gcc is generating instructions from C that should be 16bit but then later it realises it messed up?

Still chasing but having BR2_HOSTARCH_NEEDS_IA32_COMPILER=y didn't solve.

Cyril

Quoted 7 lines

Some of the issues are that it expects the x86-64 toolchain to support
-m32 for bootstrap code (which our cross compilers normally don't), so
we need the same workaround as we do for syslinux and grub to build those with the host compiler.

#10 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Hello,

Quoted 10 lines · Cyril Bur

So the i686 problem is actually fixed upstream so I've sent a patch to bump the version.

I tried select BR2_HOSTARCH_NEEDS_IA32_COMPILER for x86_64 but didn't seem to solve the problem. I know almost nothing about x86 asm so I'm at a bit of a loss, it looks like gcc is generating instructions from C that should be 16bit but then later it realises it messed up?

Still chasing but having BR2_HOSTARCH_NEEDS_IA32_COMPILER=y didn't solve.

No, you need this *and* use the host compiler when building kvm-unit-tests on x86_64. By using the host compiler, you use a compiler that can generate 32 bits code.

See syslinux and grub, like Peter suggested.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
author
#11 lore raw

PATCH 1/1 package/kvm-unit-tests: new package

Quoted 17 lines · Thomas Petazzoni

Hello,

Quoted 13 lines · Cyril Bur

So the i686 problem is actually fixed upstream so I've sent a patch to
bump the version.

I tried select BR2_HOSTARCH_NEEDS_IA32_COMPILER for x86_64 but didn't
seem to solve the problem. I know almost nothing about x86 asm so I'm
at a bit of a loss, it looks like gcc is generating instructions from C
that should be 16bit but then later it realises it messed up?

Quoted 9 lines
Quoted 2 lines

Still chasing but having BR2_HOSTARCH_NEEDS_IA32_COMPILER=y didn't solve.

No, you need this *and* use the host compiler when building kvm-unit-tests on x86_64. By using the host compiler, you use a compiler that can generate 32 bits code.

See syslinux and grub, like Peter suggested.

Yeah I had a look, sorry, I must have missed that part. Will do.

Thanks,

Cyril

Quoted 3 lines

Thanks!

Thomas