June 21, 2021
Last week, Nicolas wrote about KernelCI's newly added ability to detect regressions on the Linux kernel that can directly affect camera. This new test was one of many that was written during the recent KernelCI hackfest, which took place from May 27 to June 4. Initiated as a joint effort by the Google Chrome OS team and Collabora, it was a public event with engineers and developers from different communities in attendance.
KernelCI is community-led test system focused on the upstream Linux kernel. While following mainline and LTS branches is the best way to maintain stability and security, there are numerous products in a wide variety of industry segments that run on their own versions of Linux with their own, custom changes. Several members of the KernelCI Linux Foundation project make such Linux-based products and rely on testing upstream, as every issue caught is something they won't have to fix in their downstream, Linux-based products. In fact, over time, the more these issues are fixed, the closer it brings their products to the upstream kernel.
One such member is Google, and their Chrome OS products. There are an increasing number of Chromebook devices in KernelCI (mostly located in Collabora's lab) which can be used to test upstream kernels, and in particular stable kernels, which are working quite well on this hardware. They are currently running all the regular tests that other platforms also use, such as LTP, kselftest, igt, v4l2-compliance, etc. As a member company, Google wanted to extend coverage with additional tests that are only currently available within Chrome OS. Hence, Google encouraged the KernelCI community to hold a hackfest to write tests.
Collabora is also an active member of KernelCI community and has been contributing to the project for a very long time. Collabora took part in the hackfest to help support new ChromeOS tests in KernelCI, extend existing test coverage for LTP, Kselftest, baseline, etc., and also to add some new tests in the Kernel. KernelCI developers helped by adding support in KernelCI to run these new test cases.
Here's a look at what each Collaboran accomplished during the KernelCI hackfest.
Nícolas F. R. A. Prado added a new rootfs recipe to build libcamera and it's test suite, lc-compliance. Using this rootfs, he added a test that runs all lc-compliance test cases, which tests whether video streaming from a real camera on the system is working, in different formats. The idea is that future changes in the kernel's media subsystem that cause cameras to fail will have a chance to be detected.
Gabriel Krisman Bertazi created a new kselftest to validate the basic semantics and corner cases of the soft-dirty page table entry mechanism, used for software to monitor the access and dirtying of memory regions. In addition, he upstreamed the backlog of unicode patches, in particular the conversion of the fs/unicode testsuite into the new kunit mechanism, written by Ricardo Cañuelo.
Adrian Ratiu created a new test to detect whether all available CPUs have been brought online. This new test can be used for scheduling as some systems might have issues preventing CPU utilization. For example, the Renesas R-Car SoC in KernelCI had the secondary CPU cluster offline which went unreported. The test is generic so it benefits everyone. If one (or more) CPUs on an AMD Ryzen (or Intel, etc) system goes offline, it will be reported. He also submitted a Linux kernel patch exposing driver probe() failures via a new debugfs attribute entry, enabling KernelCI to detect . But some design discussions still need to happen; the debugfs filesystem would need to be initialized a bit earlier in the boot process so the driver core can add its attribute.
André Almeida added more testing for the futex syscall and worked together with KernelCI developers to figure out the best way to enable them in the project. This automated testing will help track regression whenever we make changes to the complex interface of this syscall.
Guillaume Tucker enabled eMMC drivers on x86 Chromebooks in the KernelCI builds and made small improvements to the development workflow: adjusting GitHub permissions, additional patches on staging to facilitate testing pending changes. Other than that, he has been working on enabling Chromebooks to run Chrome OS images and provided support to a lot of developers and reviewed changes in GitHub to help progress things. The main issues were about testing new rootfs images on staging as they're not automatically built and used.
Enric Balletbò i Serra made small documentation fixes, implemented a proof-of-concept on adding firmware files to the rootfs and helped on extending baseline testing coverage by enabling different kernel config options. Apart from this, he helped to review some pull requests and helped on trying to enable Chromebooks to run Chrome OS images.
Shreeya Patel helped in extending crypto test coverage by enabling different config options using fragments in KernelCI. This made all the crypto tests run in KernelCI without being skipped. She also fixed broken links in the frontend.
As you can see, the hackfest ended up being very productive. Multiple new tests were added, coverage was extended, and more people are now familiar with the KernelCI code and ecosystem. These hackfests are really helpful to fuel things up and spark more interest in the community and bring in new contributors. We definitely look forward to taking part in future KernelCI hackfests!
Collabora reverse-engineers Mali G78 instruction set and releases documentation, disassembler, and assembler for its "Valhall" architecture.
Collabora's team working directly on the Linux kernel is growing. Collaborans continue to expand on their efforts to close the gap between…
Earlier this month, Collabora took part in the very first KernelCI hackfest, initiated as a joint effort with the Google Chrome OS team.…