The Linux Kernel Validation Suite (LKVS) is a Linux Kernel test suite. It is a working project created by the Intel Core Linux Kernel Val Team. The purpose is to improve the quality of Intel-contributed Linux Kernel code. Furthermore, it shows the customer how to use or validate the features.
More details please refer to following.
- AMX(Advanced Matrix Extensions)
- cet(Control flow Enhancement Technology)
- cstate
- Intel_TH(Trace Hub)
- Intel_PT
- UMIP(User-Mode Instruction Prevention)
- xsave
- IFS(In Field Scan)
git clone https://github.com/intel/lkvs.git
cd lkvs
make
Note. Usually, it needs various dependencies if you're trying to compile the whole project locally. Each sub-project should detail its particular way, if any. There are some known dependency issues.
- Intel PT Cases of Intel PT need a 3rd part library libipt.
export GIT_SSL_NO_VERIFY=true
git clone http://github.com/intel/libipt.git
cd libipt && cmake . && make install
- CET CET tests have 32-bit compatible tests, which need install 32-bit architect support. But the 32-bit architect support is not a mandetory for CET tests.
dpkg --add-architecture i386
dpkg --print-foreign-architectures
apt-get update
apt-get install gcc-11 make libelf1 gcc-multilib g++-multilib
Do not support 32-bit architect on other distributions.
For Ubuntu and so on deb package related OS:
dpkg -i linux-xxx-image_TARGET_VERSION.deb
dpkg -i linux-xxx-headers_TARGET_VERSION.deb
dpkg -i linux-xxx-dev_TARGET_VERSION.deb
dpkg -i linux-xxx-tools_TARGET_VERSION.deb
Boot up with target kernel version.
cd cet_driver
make
For CentOS and so on rpm package related OS: Install the devel and headers package for target kernel and boot up with target kernel.
rpm -ivh --force kernel-TARGET_VERSION.rpm
rpm -ivh --force kernel-devel-TARGET_VERSION.rpm
rpm -ivh --force kernel-headers-TARGET_VERSION.rpm
Boot up with target kernel version.
cd cet_driver
make
** This is the recommended way **
make docker_image
make docker_make
Note. If you're behind a proxy, please export the local env variable https_proxy
before executing make
export https_proxy=https://proxy-domain:port
cd lkvs/<test>
make
There're two ways to run the tests.
Normally, there're one or more executable binaries or scirpts in a sub-project, once it is compiled successfully. The easiest way is to run them directly.
runtests is a straightforward test runner that can execute a single or a set of test cases and redirect the log.
There are 2 ways to pass test to runtests:
-c
: Pass test cmdline.-f <component/tests*>
: thetests*
file under each component folder records the detailed test cmd lines.
Output of tests can be saved in a file using -o
option.
Examples:
$ ./runtests -f <cmdfile>
$ ./runtests -f <cmdfile> -o <logfile>
$ ./runtests -c <cmdline>
$ ./runtests -c <cmdline> -o <logfile>
Submit an issue or initiate a discussion.
Any pull request are welcomed, the canonical patch format please refer to the Kernel patches submitting
See LICENSE for details.