User Tools

Site Tools


This is an old revision of the document!

This wiki is dedicated to holding information about the kselftest feature of the Linux kernel.

About kselftest

The purpose of kselftest is to provide kernel developers and end-users a quick method of running tests against the Linux kernel. As of this writing, Samsung developer Shuah Kahn is the project leader.

kselftest was discussed at the 2014 kernel summit (in August, 2014), with Shuah making a presentation during the "core day" of the summit. Some followup discussions were held during an "unconference" session the following day.

Source code for kselftest tests is contained in the directory tools/testing/selftests in the kernel source tree.

The kselftest feature (in rough draft form, I'd say) first appeared in kernel version 3.16.

Some features of kselftest

Here is a list of desired features for kselftest (some of which already exist (as of August 2014):

  • ability to quickly execute tests (current target is under 20 minutes)
    • some developers want tests to run in a few seconds
  • ability to run different groups of tests
  • test source code is kept in the kernel source tree, where it is easily accessible to anyone working with the kernel source


As of August, 2014, Shuah Kahn reported the status of kselftest as follows: (see Short summary of work done so far for 3.17:

  • fix compile errors and warnings in various tests
  • fix run-time errors when tests aren't run as root
  • enhance and improve cpu and memory hot-plug tests to run in limited scope mode by default. A new make target to select full-scope testing. Prior to this change, cpu and memory hot-plug tests hung trying to hot-plug all but cpu0 and a large portion of the memory.
  • add a new kselftest target to run existing selftests to start with.

What's planned for 3.18 and beyond:

  • get feedback on the new kselftest target from the community
  • add more tests to be run under kselftest umbrella
  • identify existing tests under /lib and other areas that make a good candidate to be included under kselftest
  • Some of these could be run as a tool and/or a independent test with a few changes and some probably aren't like the /lib/locking tests.
  • As a goal, try to leverage existing tests and modify them as needed to run them as a black-box test (e.g: look into ways to make it run as a tool)
  • Greg KH sparked the kernel selftest idea, has been in the loop for the work done so far, and reviewed the plan for 3.18.


There are some sub-projects or additional features, that some developers have expressed interest in, for the kselftest system. Below is a bullet list for tracking the status of these different sub-projects: (In parenthesis are some people who have expressed interest in this sub-project or feature) If a link is present then there's a sub-page to discuss that project.

  • standardize the test output format (Grant Likely)
  • support cross-compilation (Tim Bird, Grant Likely, and others)
  • support local execution of tests in a virtualized environment (kvm, virtualbox, qemu)
  • documentation, and this wiki
    • docs should go in the kernel Documentation directory
    • this wiki is for project tracking
  • integration with rest of kernel build system to support standard kernel options:
    • separate output directory (ie. KBUILD_OUTPUT support)
    • verbose vs. quiet building (ie V=1 support)
    • cross-compilation (ie CROSS_COMPILE support)

Some desired tests

Initially, Shuah started collecting existing unit tests from other places both inside and outside the kernel source tree. Here are some tests that have been discussed or requested:

  • system size test
  • performance tests
  • basic boot test (get to login prompt)
start.1409356564.txt.gz · Last modified: 2014-08-29 23:56 by tbird20d