How Is the Linux Kernel Tested

How are the Linux kernel releases tested

Mostly linux kernel tested by LTP.

LTP - Linux Test Project

The Linux Test Project is a joint project started by SGI, developed and maintained by IBM, Cisco, Fujitsu, SUSE, Red Hat and others, that has a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The LTP testsuite contains a collection of tools for testing the Linux kernel and related features.

https://linux-test-project.github.io/

Is it feasible to unit test kernel module code ?

Since Linux kernel version 5.5 KUnit is available. It's a lightweight unit test framework for the kernel.

For more details have a look at

  • https://www.kernel.org/doc/html/latest/dev-tools/kunit/index.html
  • https://kunit.dev/
  • https://lwn.net/Articles/780985/

Testing modules/drivers of Linux kernel running in any target board

I doubt that there is any solution exists for this purpose. Each maintainer should test his driver, and how each maintainer does it -- it's up to him. The thing is, it would involve a ton of hardware in order to test all the drivers in kernel.

You are using Panda board, which is OMAP-based board, and the general approach for testing drivers on OMAP-based platforms is to use DDT (Device Driver Test). See DDT at OmapPedia and DDT repository. Btw, you should hurry to clone that DDT repository from Gitorious, because Gitorious is closing in the end of the May and I didn't find any clones of that repo.

Further, if you are interested in running Android on your board, you should run CTS (Compatibility Test Suite).

All that I listed above were used by our testing team when I was working for TI, so I think it should be applicable nowadays as well.

UPDATE

Also I remember that our testers were using this device: phidget. You may need to acquire one for testing purposes.

UPDATE 2

Take a look at Linaro's LKFT (Linux Kernel Functional Test). It's more about testing syscalls from user-space, so maybe not strictly relevant to your question, but still worth mentioning. It runs kselftest (can be found in kernel source code) and LTP project mainly. You can run the same tests for your board. It can be also automated using Jenkins and LAVA.

Testing a kernel module

I would proceed as follows:

  • Implement your kernel module
  • Define an API to let a user-level program test your module, which can be based either on:

    • a character device in /dev/ (where you can define proper ioctls);
    • a file in /proc/ (discouraged);
    • specific system calls (discouraged);
    • an entry in /sys/
  • Implement at user-level a program (in case, using a proper framework like CUnit or googletest), which interacts with the kernel module testing the various functionalities

Best way to test a custom kernel for hardware performance counters

I found a solution : KVM + QEMU emulator.

To use PMU, I changed this parameter in the VM parameters (XML format) :

<cpu mode='host-passthrough'/>

Or you can add this option in cmd line :

-cpu host

I followed in part this page for building the kernel on qemu and for the counters this page.



Related Topics



Leave a reply



Submit