An introduction to write KernelCI configuration settings for CIP SLTS Kernel project #01
Posted on Tue 28 October 2025 in kernelci
Hello everyone,
My name is Arisu Tachibana.
I’m the current Gentoo Kernel team leader, creator of KernelCI kci-dev and KernelCI Infra WG member.
Today I would like to talk about KernelCI configuration and our integration with CIP platforms.
KernelCI is the project that is used for testing Kernel tree, mostly upstream and development.
CIP is the project creating SLTS (super long term support kernel), a kernel that is tested using KernelCI.
For details on the KernelCI project, please check this.
https://docs.kernelci.org/about/
For details on the CIP project, please check this.
https://www.cip-project.org/
CIP uses KernelCI for the Linux Kernel.
https://www.cip-project.org/about/linux-kernel-core-packages
For adding new boards we should have a lava lab connected with KernelCI,
my suggestion is to use lava-docker for simplify deploy of a lava laboratory
(https://github.com/BayLibre/lava-docker)
How to deploy lava-docker will probably be explained in the future, depending on this series sustainability.
Let’s say that you have deployed a lava-docker and you have few devices connected to lava. You will get a page similar to the one below (https://lava.ciplatform.org/scheduler/device_types)
Let’s say that we want to connect zynqmp-zcu102 to KernelCI We will go to the platforms.yaml file to add the platform information of the platform we want to add
platforms:
# arm64 platforms
zynqmp-zcu102:
<<: *arm64-device
mach: zynqmp
dtb: dtbs/xilinx/zynqmp-zcu102-rev1.0.dtb
compatible: ['xlnx,zynqmp-zcu102-rev1.0', 'xlnx,zynqmp-zcu102', 'xlnx,zynqmp']
dtbs information can be get from the following page.
Compatible information can be got from the tools/extract_compatible.py tool
$ git clone https://github.com/kernelci/kernelci-pipeline.git
$ cd kernelci-pipeline
$ python tools/extract_compatible.py config/platforms-cip.yaml
zynqmp-zcu102:
compatible: ['xlnx,zynqmp-zcu102-rev1.0', 'xlnx,zynqmp-zcu102', 'xlnx,zynqmp']
After we added the platform to KernelCI we can start testing if is working. For testing the board we should add a simple scheduler, in the CIP case to the file scheduler-cip.yaml.
scheduler:
- job: job-gcc-12-arm64-cip
event:
<<: *kbuild-gcc-12-arm64-node-event
name: kbuild-gcc-12-arm64-cip
runtime:
type: lava
name: lava-cip
platforms:
- zynqmp-zcu102
- job: kbuild-gcc-12-arm64-cip
<<: *build-k8s-all
Note: <<: are part of the yaml inheritance
The scheduler need to start a kbuild event and after a job event. The kbuild event will build the kernel with the configurations specified in the job and push the files to the KernelCI fileserver. The job will perform the platform testing.
The following is the kbuild event creating the kernel image and dts binary.
kbuild-gcc-12-arm64-cip:
<<: *kbuild-gcc-12-arm64-job
params:
<<: *kbuild-gcc-12-arm64-params
defconfig:
- defconfig
fragments:
- 'CONFIG_ARCH_R8A774A1=y'
- 'CONFIG_ARCH_ZYNQMP=y'
- 'kselftest'
- 'lab-setup'
- 'cip://6.12.y-cip/arm64/cip_merged_defconfig'
rules:
tree:
- 'cip'
Then we have the job event starting the boot test of the platform selected by the scheduler.
job-gcc-12-arm64-cip: *baseline-job
This will start a job in lava, like the following example
In the next chapter we will execute a simple job example and talk about KernelCI configuration inheritance.
Comments
There are no comments yet.