December 22, 2021
With over 350 patches authored and nearly 200 reviewed and tested in multiple subsystems, 2021 was a great year for Linux kernel development at Collabora. In addition to the work some of us do as maintainers, reviewing and accepting patches in subsystem trees, we also contributed significantly to KernelCI, the community-led project which powers kernelci.org with automated testing for the upstream Linux kernel. Since January the team has grown with 10 new amazing joiners already contributing and making a difference. Here is a look at some of our achievements during the year.
Sadly, a fact of life, which we have to live with, is that file systems eventually get corrupted. Whether it is for an unknown reason, usually explained to managers as Alpha particles flying around the data center, or a more mundane software bug, no one ever enjoys losing data for any reason. That is why we worked on a mechanism for closely monitoring volumes and notifying recovery tools and sysadmins that an error occurred. The feature was merged in kernel 5.16 and works in the form of the new FAN_FS_ERROR fanotify event. Although it won't prevent failures from happening, it will help reduce the effects of such errors by triggering recovery procedures and backups immediately on the first sign that something went wrong - which might be a game changer in cloud environments.
The media subsystem has, traditionally, been an important part of the kernel, and the demand for video applications is not likely to drop anytime soon. On the contrary, we will likely see the demand continue to grow. At Collabora we have been active on this front. On the camera side, we de-staged rkisp1, allowing high quality pictures from your sensor if you use Rockchip SoCs with a mainline kernel.
Hardware-accelerated video decoding and encoding is always desired. Thanks to our work together with the community, you can enjoy H.264 Decoding through Stateless uAPI which was recently de-staged. During this year we also worked on HEVC stateless decoding, which is still in staging but on its way to becoming a stable uAPI.
Yet another Stateless Decoding uAPI we contributed was VP9 bypassing the staging tree, which we believe will help with wider adoption of the new uAPI. The list is long! One more Stateless Decoding uAPI is in the making: AV1 and it is not the only reason you will hear from us next year!
This year has been rather quiet in term of features on the Panfrost front. Most commits are fixes, cleanups or minor improvements to better expose hardware capabilities to the userspace driver. That probably denotes the driver maturity, which has served us well, and we hope others in the community, in the past few years. That being said, we do have an uAPI refactor in the works to make the Vulkan driver more efficient, as well as providing a better separation between GPU contexts.
There was also this Flicker-free multi GPU boot fix for systems using an Intel paired with another GPU.
If you are aware of our efforts, you have surely seen our work to enable MediaTek-powered Chromebooks upstream! Due to that work, our Kernel Team developed a solid presence in the linux-mediatek scene.
During this year, we reviewed dozens of patches, continually improving the implementation of new features for old and new MediaTek SoCs, while also making sure that the currently supported machines are kept stable.
Of course, our commitment does not stop at reviews! In fact, we sent a good amount of bug fixes and improvements:
Over the past few years, we have been working hard to transform Linux into the operating system of choice for gamers. In 2021, we took some big steps in this direction, with the merging of major features that have been long anticipated by the gaming community. The largest of them, futexv_wait, which brings serious performance improvements of major games running over Wine, was finally accepted by the Linux community and will make its appearance in 5.16! While early adopters have been enjoying the benefits of this feature for a while through custom kernel builds, the upstream support is a major milestone for bringing this work to the entire userbase.
Of course, futexv_wait was not our only kernel contribution to Linux gaming. In addition to many improvements on gaming hardware support, we also merged the Syscall User Dispatch feature, which can solve DRM incompatibilities of games running over Proton.
The first part of 2021 was focused on extending functional testing coverage in KernelCI. In particular, we have added support for kselftest and LTP. We started running subsets of them on various Chromebooks and other devices.
Then, one of the main topics for the second part of the year was to start running Chrome OS images on Chromebooks as well as the Tast tests provided by Google. We are now very close to having a first implementation working. The aim is to test upstream kernels with it and send the results to the dedicated chromeos.kernelci.org instance.
More on the community side of things, we have helped coordinating two hackfests which brought many new contributors to the project. We are also mentoring one Outreachy intern to contribute to the new KernelCI API with a modular pipeline architecture. A new workboard with kernel bugs reported by KernelCI has also been created, following some discussions at Linux Plumbers.
Things to look for in 2022 will be a new web dashboard, Chrome OS tests and a wide variety of Chromebook devices, non-LAVA tests such as KUnit and static analysis running in Kubernetes or Labgrid support as well as new core features including performance regression tracking. We aim to help organize new hackfests in 2022. And we look forward to new member companies joining the project in 2022 to help expand the scope of work that we can be accomplished together.
A nice feature, originally implemented in the ChromeOS Kernel, was upstreamed by Collabora: Input inhibit. It allows input devices to be inhibitted from userspace. This useful for 2-in-1 laptops in which the screen turns 360 degrees to become a tablet. In that case, you want to tell the kernel to disable the keyboard and mousepad.
On the integration front, our powerful open-source tool to generate operating system images, debos, helped uncover a serious data corruption bug on the main storage driver of User Mode Linux (UBD). When the bug hits, multiple segment I/O might get truncated, causing user data to be silently dropped without being commited to disk. Our fix involved a large rewrite of that driver's submission and completion paths. The fix was merged in the first kernel of the year (v5.11).
As you can see, together with the community, Collabora achieved a lot for the kernel this year. Our contributions had a strong impact in multiple industries and how they use the kernel, expanding what is possible for them with the mainline Linux kernel. As the years pass, our /partners, who are key players in their industries, turn more and more to the mainline kernel as a base for their products. Collabora expects that trend to not only continue, but to accelerate. We see a growing number of companies interested in mainline kernel development. They want to integrate their hardware support and features in mainline as early as possible so their products' sustainability becomes easier, removing technical debt and facilitating maintenance. If their code is in mainline, our clients can also benefit from KernelCI testing, for example.
Collabora wants to thank our clients for trusting us with all this kernel work. For next year, we already have a lot of interesting initiatives lined up both in the Linux kernel and KernelCI. Stay tuned for our updates next year! A final note, we are most definitely still hiring mainline kernel developers. Please come join our great team!
This post was written by Andrzej Pietrasiewicz, AngeloGioacchino Del Regno, Boris Brezillon, Gabriel Krisman Bertazi, Guillaume Tucker and Gustavo Padovan
Sunny Spain will have multimedia developers on speed dial next week for the 11th edition of the GStreamer Conference, taking place at the…
The world-renowned culinary scene in The City of Light will be getting a pack of different types of chefs next week for Kernel Recipes and…
Collabora is headed to Amsterdam! This year, we will be showcasing some of our recent work on the DAB protocol, as well as the software…