We're hiring!
*

Kernel 6.12: Small but mighty

Dmitry Osipenko avatar

Dmitry Osipenko
November 26, 2024

Share this post:

Reading time:

After 20 years of development, real-time preemption support has landed in Linux kernel 6.12. The real-time patches have been widely used for many years by industry and enthusiasts, providing low-latency guarantees that are essential for applications like robotics, audio processing, medical devices, and more. The upstream Linux kernel is well known for its rigorous code quality standards, and it's not uncommon for the development of a new feature to take a long time before it's massaged into a suitable shape to be accepted upstream. However, the real-time preemption patches have certainly set a new record.

Another notable feature introduced in the 6.12 kernel is the extensible scheduler class. It is now possible to write customized CPU scheduling algorithms in the form of BPF programs, opening up opportunities for improved application performance and better power savings.

Please refer to LWN's articles for a complete overview of this kernel release: part 1 and part 2.

Let's take a look at the 6.12 kernel contributions made by Collabora:

Rockchip

Sebastian Reichel enabled Rockchip RK3588 support for the existing Hantro driver for the equally named video processing unit (VPU) from VeriSilicon. Only one of the four cores has been enabled due to a lack of scheduling capabilities in this driver. Hopefully, more cores can be used in the future. This enables encoding JPEG, H.264 and VP8, though the last two are limited to 1080p. There is also a video decoder named VDPU121, which is also based on the Hantro codec and is now supported by the upstream kernel. Additionally, parts of a series improving the clock support for RK3588 have been merged.

Cristian Ciocaltea added clock provider support to the RK3588 HDMI TX PHY, intended to be used later by the VOP2 display controller as an alternative and more accurate clock source. This will improve the HDMI 2.0 display modes handling on RK3588, such as supporting non-integer refresh rates. Additionally, he did some clean-up and small improvements to the Rockchip DW HDMI platform driver (which is used by older Rockchip platforms) and also fixed a double-free error in the DRM bridge connector helper library. The HDMI controller support for RK3588 did not yet make it, but it is expected to arrive in the next release.

In addition to the RK3588 work, Detlev Casanova started enabling RK3576 support. Boards using the RK3576 usually come with an I2C connected RK806 and the existing driver gained support for that. For the system on a chip itself, almost all of the bits required to boot the kernel landed in the 6.12 release. This was possible since many hardware blocks from RK3588 have been re-used. In detail the following bits gained support:

  • Clock and reset unit (CRU)
  • Power domains 
  • Pinmux
  • Ethernet
  • SD/SDIO/eMMC
  • Timer
  • SPI
  • I2C
  • ADC
  • Watchdog
  • GPU

The last missing bits for booting an upstream kernel on the RK3576 - UART bindings, a critical GPIO driver fix, and the devicetree - are expected to arrive in the next release.

Last but not least, Christopher Obbard upstreamed board support for the Rockchip PX30 based Firefly Core-PX30-JD4 (system on a module and its baseboard).

MediaTek

AngeloGioacchino Del Regno added support for exposing the OVERLAY and CURSOR display planes' Z position (zpos) with immutable properties to the user space since MediaTek SoCs do not support fast muxing actions to change the planes' zpos on the fly. With those changes, it will be possible for the user space to choose the right strategy for using those planes with the imposed restriction of not being able to runtime-reposition them.

After adding the relevant driver, he was also able to enable support for the Auxiliary ADCs found in the MediaTek MT635x series of Power Management ICs (PMICs), found in many MediaTek board designs including Chromebooks with MT8173, MT8183, MT8192 and MT8195 SoCs; This also adds the capability to support 3.5mm jack accessory detection (such as microphone presence), and accessory buttons (such as single to triple multimedia buttons), as well as to gather information about the temperature of the PMIC, and the integrated Core and GPU voltage regulators.

Additionally, Angelo received a bug report about the GPU OPP tables on MediaTek MT8186. The bug showed that the opp-supported-hw field, which enables GPU voltages based on the SoC eFuse speed-bin reading, was incorrectly set, resulting in GPU probe failures on SoCs fused with speedbin value "3". He was able to immediately locate the issue and fix it upstream.

More changes from him include a performance improvement of SPI operations on all MediaTek SoCs, thanks to the interrupt threading that he implemented in the spi-mt65xx driver and some other miscellaneous clean-up.

Graphics

Boris Brezillon posted and reviewed fixes for the Panthor driver that improved the stability of the Vulkan/GL driver provided by Mesa for ARM Valhall GPUs. There are no new features yet, but more are coming; stay tuned.

Dmitrii Osipenko added DRM native context definition to the VirtIO-GPU protocol. While this may seem like a small change, it paves the way for enabling native context support in QEMU and lays the foundation for adding new VirtIO-GPU features in future kernel versions.

Multimedia

Benjamin Gaignard enabled Reference Frame Compression (RFC) for the Hantro G2 driver. This allows significant bandwidth reduction when decoding HEVC and VP9 while still producing easy to handle linear NV12 data. He also implemented a few fixes for the Hantro AV1 decoding core on RK3588.

Deborah Brouwer improved the vicodec virtual stateful CODEC driver. She implemented support for draining before the CAPTURE device has started streaming, fixing certain scenarios of dynamic resolution changes.

Other developers did some enhancements, with Nicolas Dufresne documenting Mediatek 10bit YUV pixel formats, Robert Mader enabling rotation detection using IMX335 sensors, and Julien Massot fixing coding style issues in max96714/max96717 sensor drivers.

Collabora is progressively increasing its contribution to the co-maintenance effort in Linux Media subsystem with Sebastian Fricke leading the way, contributing a lot of Signed-off-by to merged CODEC patches.

Testing

Nicolas Prado fixed a bug in the devicetree kselftest where devicetree nodes that had their parents disabled would still be checked for driver probe status. He also fixed a variety of issues that were reported by the device error logs and devicetree kselftests.

Vignesh Raman extended drm-ci support to run tests for GPU and display drivers found on MediaTek MT8173/MT8183, Rockchip RK3288/RK3399, and Amlogic Meson G12B (A311D) platforms. He also increased timeout for all drm-ci jobs, made adaptations needed to keep drm-ci in sync with Mesa CI changes, and moved drm-ci to use the latest IGT version.

Muhammad Usama Anjum has been focusing on cleaning up dead code and enhancing kselftests. He added the missing entry for x86 selftests in the Maintainers file, making it easier for contributors to identify the correct x86 maintainers while sending patches.

Shreeya Patel improved the CPUfreq kselftest for Suspend/Resume and Hibernation/Resume by adding RTC wakeup support. Previously, these tests required manual intervention to wake the device, making them unsuitable for CI systems. With the addition of RTC wakeup, devices now resume automatically after a set interval, enabling these tests to run across all Chromebooks in KernelCI. This improvement streamlined testing processes and eliminated the need for human intervention.

Here, there, and everywhere

While creating a technology demonstrator for a client platform, Martyn Welch discovered that the mpc8xxx GPIO driver lacked the support required to enable GPIOs to be used for device wakeup, so he added the required calls to enable this feature. As part of this work it was also discovered that the NXP PTP Clock support could not be enabled as a module, so he updated the configuration mechanism used, enabling it to be successfully configured and compiled as a module.

Below is a full list of contributions made by Collabora for the 6.12 release, as recorded in the git commit history:

Authored:

Adrian Ratiu:

AngeloGioacchino Del Regno:

Benjamin Gaignard:

Boris Brezillon:

Christopher Obbard:

Cristian Ciocaltea:

Deborah Brouwer:

Derek Foreman:

Detlev Casanova:

Dmitry Osipenko:

Frédéric Danis:

Julien Massot:

Martyn Welch:

Muhammad Usama Anjum:

Nicolas Dufresne:

Nícolas F. R. A. Prado:

Robert Mader:

Sebastian Reichel:

Shreeya Patel:

Vignesh Raman:

Maintainer Committed:

AngeloGioacchino Del Regno:

Boris Brezillon:

Helen Koike:

Sebastian Reichel:

Signed-off-by:

Detlev Casanova:

Martyn Welch:

Sebastian Fricke:

Sebastian Reichel:

Reviewed-by:

Andrzej Pietrasiewicz:

AngeloGioacchino Del Regno:

Benjamin Gaignard:

Boris Brezillon:

Cristian Ciocaltea:

Daniel Almeida:

Daniel Stone:

Julien Massot:

Martyn Welch:

Muhammad Usama Anjum:

Nicolas Dufresne:

Nícolas F. R. A. Prado:

Pekka Paalanen:

Sebastian Fricke:

Sebastian Reichel:

Acked-by:

Daniel Stone:

Helen Koike:

Tested-by:

Andrzej Pietrasiewicz:

Julien Massot:

Nicolas Dufresne:

Nícolas F. R. A. Prado:

Reported-by:

Muhammad Usama Anjum:

Nícolas F. R. A. Prado:

Robert Beckett:

 

Comments (0)


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


 

Search the newsroom

Latest News & Events

Initial upstream support for the Rockchip RK3576

03/12/2024

Initial support for Rockchip's RK3576 has landed in Linux kernel 6.12, a new System-on-a-Chip (SoC) introduced earlier this year. With the…

NVK now supports Vulkan 1.4

02/12/2024

Today, Khronos announced the release of the Vulkan 1.4 specification, and NVK is one of the day-zero conformant Vulkan 1.4 implementations!…

Weston 14.0: DRM-backend, color management, and output mirroring

27/11/2024

Recently, both Weston 14.0, and 14.0.1 (bug fix) were released. Here's at look at some of the highlights and changes for this latest release…

Open Since 2005 logo

Our website only uses a strictly necessary session cookie provided by our CMS system. To find out more please follow this link.

Collabora Limited © 2005-2024. All rights reserved. Privacy Notice. Sitemap.