We're hiring!
*

Kernel 6.8: MediaTek community flourishes

Muhammad Usama Anjum avatar

Muhammad Usama Anjum
March 11, 2024

Share this post:

Reading time:

The latest Linux Kernel 6.8 release brings thousands of new lines of code, improving the core kernel, architecture support, networking, file systems, and more. Support for hundreds of new devices has also been added along with measurable performance improvements in networking and other areas.

The order of variables stored in core networking structures (socks, netdev, netns, mibs) has been reorganized to optimize cache line consumption. Previously the variables in these large structures were organised in chronological order, or logically, without paying much attention to cache lines. The level of improvement depends on the specific hardware, but it can improve TCP performances by up to 40% when there are many concurrent connections. Warnings have been put in place to safeguard possible performance loss due to future header changes. This improves the performance of TCP overall on all platforms.

SLUB is the only object-level memory allocator in the kernel now that SLAB has been removed. Additional effort has also been made to streamline and optimize the SLUB allocator and the kmalloc() APIs as a result of these changes. These little changes may not sound like they'll yield big performance improvements, but overall they can add up, resulting in substantial improvements over time.

We are happy to see MediaTek increasing its involvement in the upstream community. MediaTek's contributions include support for the newest Kompanio SoCs, MT8186, and MT8188 as well as their Evaluation Boards (EVBs), LVTS Thermal sensors on the MT8192 SoC, and more MT8183 Chromebooks, including Kukui Katsu, Jacuzzi Makomo, Pico and Pico6. Also, the community has started adding support for the MT7988 router SoC with code for its watchdog and its reset and clock controllers. At the same time, MediaTek engineers improved the reliability of the USB controllers on the MT8195 SoC and of PCI-Express in newer SoCs.

Collabora's kernel team has again contributed a number of patches for this Kernel release. Let's take a look at some of the major contributions:

Rockchip

On the Rockchip side, Sebastian Reichel enabled audio support on the RK3588 EVB1 and the USB3 host controller for Rock 5A and Rock 5B, which brings one working USB3 port on those two boards. Their second USB3 port is handled by a different PHY, which is still in the process of being upstreamed.

AMD

Cristian Ciocaltea provided a couple of fixes for the AMD Vangogh sound machine driver targeting the recently released Steam Deck OLED model. This helps to resolve a conflict between the generic/legacy AMD ACP support and the newly introduced Sound Open Firmware (SOF) drivers for this AMD platform. It is worth noting the SOF support was also broken and we got it fixed, but unfortunately the related patches were not merged in time for this kernel release and will be part of v6.9.

MediaTek

In this kernel release, the MediaTek scene has seen many fixes, improvements, and support for new SoCs from Collabora, Google, MediaTek, and community contributors.

Apart from some unused device tree and bindings cleanups, Eugen Hristev fixed a long-standing race condition that could be triggered during power domain registration on all MediaTek SoCs. The race condition was causing lockups at boot time, which became apparent as more drivers got support for the Asynchronous Probe mechanism in the kernel.

Nicolas Prado enabled hardware decoder support on the MT8183 SoC and modified the default upstream configuration to enable the MT8195 Tomato Chromebook to boot with full support to all peripherals, including the sound card and display. Additionally Nicolas fixed a number of other issues; another race condition that caused the platforms to hang during the async probe of the MediaTek SPMI controller driver at boot; a fix for the display initialization caused by a missing module dependency in the MediaTek DisplayPort PHY driver and a kernel panic that was recently introduced on the MT8192 Spherion Chromebook (which was detected by KernelCI).

AngeloGioacchino Del Regno refactored MediaTek's Smart Voltage Scaling (SVS) driver, as it suffered from reliability issues and never quite worked on upstream kernels the way it should. The SVS driver is responsible for scaling the voltage used to power the SoC based on reported silicon temperatures. This was done to improve the efficiency of the SoC as much as possible, depending on the silicon quality of the chip.

Furthermore, he detected and fixed an issue with DisplayPort clocks on MediaTek's MT8195 and MT8188 SoCs. In machines with multiple DisplayPorts (and/or Embedded DisplayPort) outputs, when a secondary display was hot-plugged in, the primary display would stop working and/or show a number of glitches. This was found to be due to an issue with the parenting of the pixel mux clocks. Limiting the pixel clock muxes parents to specific clock sources for each of the DisplayPort MUX clocks resolved the problem.

Angelo also discovered that Panfrost did not support basic power management on all SoCs, including MediaTek, and all Mali GPUs. Following power consumption and performance analyses on various Chromebooks, he engineered a complete power-saving solution that works on both MediaTek and other vendors' SoCs embedding any Mali GPU. This allowed the GPU to internally turn off Shaders, Tilers, and the L2 cache during Runtime, and to cut power completely during full system sleep, reducing its power consumption greatly in both cases.

David Heidelberg did some device tree bindings cleanups, mainly for the devices based on ARM architecture.

Media

Before being able to add the ability to delete buffers from v4l2 queues, a lot of cleanup and improvements were needed in the v4l2 framework. Until now buffer storage of a v4l2 queue was represented by a 32-entry array. This limit has been present for a long time in v4l2 and had impacted a lot of aspects of the framework, like buffer indexing. Benjamin Gaignard's patches for Linux kernel 6.8 removed the 32 buffer limit per v4l2 queue, improved the indexing handling, and added reporting of the maximum number of buffers per v4l2 queue. This resolves the platform and driver limitations. In addition to these improvements, the patches prepare for the introduction of a "delete buffers" feature by cleaning up how the "num_buffers" v4l2 queue field is used.

Thanks to the previously listed changes, the Verisilicon VP9 stateless decoder could be patched to store more buffers and be able to dynamically change resolution. Unlike a usual resolution change, dynamic resolution change happens between keyframes so a user space application can't restart an ongoing stream. A resolution change, without doing a stream off/on sequence, results in the number of allocated buffers increasing. To counter this, the delete buffers feature will be introduced in the next kernel versions.

AV1 support was added in the virtual stateless decoder driver (visl). This driver can now be used to test the v4l2 stateless implementations in user space with the AV1 format.

This release also sees the addition of the Chips & Media Wave5 video codec driver. This codec (one of the latest codecs from the manufacturer that also produces the highly successful Coda video codec) can be found in devices such as those from the TI Jacinto platform, like the J721S2 SoC. This is a stateful codec, meaning the state & context information of the last frames are stored internally and has capabilities for handling H265 & H264 video encoding and decoding.

DRM CI

Vignesh Raman enabled new jobs in DRM-CI to enable testing of VirtIO GPU, plus Mediatek MT8173 and Qualcomm APQ 8016-based systems. Additionally, he resolved the MT8173 boot issue and the APQ 8016 hang issue in DRM-CI. The documentation was also updated to include details on the IGT version for flaky tests. Vignesh also integrated a newer version of IGT into DRM-CI, incorporating fixes from IGT to handle drivers with 16 CRTCs. Other fixes include using existing kernel helper scripts to enable/disable kernel configs, preventing DRM-CI from needing to independently make such modifications prior to building.

Selftests

Continuing the work to improve testing of the Linux Kernel 1 2 3, Muhammad Usama Anjum has been busy fixing bugs and improving the kselftests overall. Several tests were converted to conform to the TAP format output. This enables failures and regressions to be caught during testing, that might otherwise be missed without the details from the executed test cases.

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

Authored (169):

Andrzej Pietrasiewicz (1):

AngeloGioacchino Del Regno (45):

Benjamin Gaignard (52):

Boris Brezillon (3):

Cristian Ciocaltea (9):

David Heidelberg (7):

Deborah Brouwer (2):

Robert Beckett (2):

Detlev Casanova (2):

Dmitry Osipenko (1):

Eugen Hristev (3):

Frédéric Danis (2):

Muhammad Usama Anjum (10):

Nícolas F. R. A. Prado (6):

Sebastian Fricke (3):

Sebastian Reichel (6):

Shreeya Patel (1):

Sjoerd Simons (3):

Vignesh Raman (11):

Maintainer Committed (93):

AngeloGioacchino Del Regno (53):

Dmitry Osipenko (3):

Sebastian Reichel (37):

Signed-off-by (28):

Boris Brezillon (4):

Cristian Ciocaltea (2):

Dmitry Osipenko (3):

Nicolas Dufresne (2):

Nícolas F. R. A. Prado (1):

Robert Beckett (2):

Sebastian Fricke (14):

Reviewed-by (210):

Adrián Larumbe (1):

Andrzej Pietrasiewicz (41):

AngeloGioacchino Del Regno (113):

AngeloGioacchino Del Regno (1):

Benjamin Gaignard (1):

Boris Brezillon (12):

Christopher Obbard (1):

Daniel Almeida (6):

Daniel Stone (2):

Dmitry Osipenko (2):

Emil Velikov (5):

Eugen Hristev (1):

Faith Ekstrand (3):

Muhammad Usama Anjum (5):

Nicolas Dufresne (4):

Nícolas F. R. A. Prado (1):

Sebastian Fricke (7):

Sebastian Reichel (4):

Acked-by (21):

Helen Koike (10):

Muhammad Usama Anjum (1):

Nicolas Dufresne (1):

Pekka Paalanen (9):

Tested-by (12):

Adrián Larumbe (1):

AngeloGioacchino Del Regno (1):

Christopher Obbard (1):

Daniel Almeida (1):

Eugen Hristev (1):

Martyn Welch (4):

Muhammad Usama Anjum (3):

Reported-by (3):

Faith Ekstrand (1):

Muhammad Usama Anjum (2):

 

Comments (0)


Add a Comment






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


 

Search the newsroom

Latest News & Events

Monado stays ahead: Keeping pace with OpenXR 1.1 for cross-platform, open source XR

17/04/2024

Monado, the cross-platform open source XR runtime, has recently received significant updates to align with the features and specifications…

Blast from the past at Embedded World: Atari plays for Linux

11/04/2024

Adhering to the fundamentals of open source, the Atari VCS OS is based on Debian using the Apertis infrastructure, and the graphics rely…

Up close and personal with STMicroelectronics' STM32MP2 at Embedded World

10/04/2024

Using TensorFlow Lite models optimized for the STM3MP2 NPU along with an upstream-ready H.264 encoder (Video4Linux2), this demo showcases…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

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