Kernel release notes

This page summarizes the major features in each kernel release and provides links to additional information.

Kernel 6.12 new features

This section explains new features in kernel 6.12.

Memory allocation profiling

The key to understanding memory use is knowing where allocations are made. Kernel 6.12 includes a new memory allocation attribution system called memory allocation profiling (CONFIG_MEM_ALLOC_PROFILING in the config). With memory allocation profiling, each allocation is attributed to a unique source line so that issues with allocations can be identified quickly. Additionally, memory allocation profiling:

  • Is used during the engineering phase, but is available in the standard GKI image.

  • Can be enabled using the sysctl.vm.mem_profiling boot parameter.

  • Works both for in-kernel and loaded modules.

Faster io_uring with zero-copy and multishot read

In kernel 6.12, the statsd and logd modules use sendfile zero-copy, improving their performance.

Additionally, this kernel version implements multishot read where a single read operation can retrieve multiple pieces of data simultaneously, improving performance.

Improved Berkeley Packet Filter (BPF) capabilities and support

In kernel 6.12, the BPF toolchain has been moved to support CO-RE and several modern features. Additionally, a new BPF loader enables use of modern BPF for programs that are part of AOSP.

Proxy execution

Proxy execution lets the scheduler borrow CPU cycles from high-priority processes to recover locks held by lower-priority processes. This feature mitigates priority inversion problems.

Kernel 6.6 new features

This section explains new features in kernel 6.6.

Rust support

Multiple kernel 6.6 projects use Rust.

Per-virtual memory area (VMA) locks

Kernel 6.6 uses per-virtual memory area locks to address contention issues with mmap_sem (formerly known as mmap_lock). As such, apps that use a high number of threads might see launch times reduced by as much as 20%.

Earliest Eligible Virtual Deadline First (EEVDF) scheduler replaces CFS

The EEVDF replaces the Completely Fair Scheduler (CFS) to better balance CPU access between short and long-running tasks.

Reduced power consumption from read copy update (RCU) callbacks

The RCU_LAZY option uses a timer-based RCU callback batching method to save power. For a lightly loaded or idle system, this option can reduce the power consumed by 5% to 10%.

Better ZRAM memory compression

The new CONFIG_ZRAM_MULTI_COMP build setting lets ZRAM recompress pages with one of three alternative algorithms. This recompression further shrinks compressed memory, providing more free space for active tasks.

Kernel 6.1 new features

This section explains new features in kernel 6.1.

Faster security with kernel control flow integrity (KCFI)

KCFI replaces control flow integrity (CFI) resulting in a reduced runtime cost and no build-time cost. The reduced runtime cost allows KCFI to be enabled in more places compared to CFI, notably tracepoints and vendor hooks.

In addition to KCFI, kernel 6.1 introduces multiple security features, such as strict memcpy bounds checking and straight-line speculation attack mitigations.

For further information on KCFI, see Kernel control flow integrity.

Multi-Generational LRU (MGLRU)

MGLRU has been added to kernel 6.1 to improve memory management by better identifying which pages are actually in use. This improvement reduces the need for halting apps when the system experiences a memory shortage. This update also improves user experience as overall device responsiveness is better.

The implementation of MGLRU also includes support for a new RCU-safe maple tree, which, in some cases, can be used to replace red-black tree (rbtree). When used, the RCU-safe maple tree increases performance because of its lower footprint and locklessness.

For further information on MGLRU, see Multi-Gen LRU.

Scheduling

Maintaining and updating the scheduler is a key aspect to the work to improve the kernel. Kernel updates in 6.1 include:

  • Added cluster-aware scheduling, which increases performance by migrating to cores that share L2 cache.
  • Removed unnecessary energy-margin heuristic. By limiting some migrations, this update improves energy utilization up to 5%.
  • Improved load balancing to reduce wakeup latency.
  • Moved RCU expedited grace periods to a realtime kthread. This update greatly reduced RCU-related latency outliers.

Graphics

Kernel 6.1 contains new methods to dma-buf for exporting and importing sync files, aligning with the need for Vulcan Video API.

The new futex_waitv() method simplifies the porting of games from other platforms by waiting on multiple futexes simultaneously.

Debug tooling

Use the Kernel Concurrency SANitizer (KCSAN) in debug builds to identify races in kernel code.

Additionally, use the Kernel Memory SANitizer (KMSAN) to find uninitialized values in the kernel.

ARM64 support improvements

The 6.1 kernel brings multiple improvements for the ARM64 architecture, including:

  • Support for the ARMv8.6 timer extensions
  • Support for QARMA3 pointer-authentication algorithm
  • Initial support for ARMv9 Scalable Matrix Extension (SME)
  • Improvements to alternatives feature patching resulting in a smaller kernel image size