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.
- cet(Control flow Enhancement Technology)
- cstate
- Intel_TH(Trace Hub)
- Intel_PT
- UMIP(User-Mode Instruction Prevention)
- xsave
- IFS(In Field Scan)
- FRED (in progress)
- guest-test
- IFS
- ISST
- PMU
- RAPL
- SDSI
- splitlock
- tdx-compliance
- thermal
- topology
- ufs
- workload-xsave
- AMX
- DSA
Usually, it needs various dependencies if you're trying to compile the whole project locally.
git clone https://github.com/intel/lkvs.git
cd lkvs
make
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/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
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
** This is the recommended way **
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
The folders located in the root directory are referred to as "features." When naming a feature, please follow the following rule:
- Use a unified format for the feature name: - e.g. :cet, cstate, tdx-compliance, tdx-osv-sanity.
- Use the file name 'tests' for default
tests
if only one tests is needed. - Use the filename 'guest-tests' for guest tests.
Use feature.guest_test_executor.sh as the entry point for guest tests.
See LICENSE for details.