KernelNewbies:

Changes done in each Linux kernel release. Other places to get news about the Linux kernel are LWN kernel status or the Linux Kernel mailing list (there is a web interface in www.lkml.org or lore.kernel.org/lkml). The lore.kernel.org/lkml/ archive is also available via NTTP if you prefer to use a newsreader: use nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel for that. List of changes of older releases can be found at LinuxVersions. If you're going to add something here look first at LinuxChangesRules!

You can discuss the latest Linux kernel changes on the New Linux Kernel Features Forum.

Linux 6.12 was released on Sunday, 17 Nov 2024 .

Summary: This release includes realtime support (PREEMPT_RT), a feature that has been in the works for 20 years. It also includes complete support for the EEVDF task scheduler; the ability to write task scheduling algorithms using BPF; support for printing a QR code on panic screens with debug information; support for zero-copy receive TCP payloads to a DMABUF region of memory while packet headers land separately in normal kernel buffers; a new linux security modules that enforces that binaries must come from integrity-protected storage; support for Memory Protection Keys in ARM; and XFS support for block sizes larger than a memory page. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. Real Time support

After 20 years of work, the real-time patchset has been merged in mainline Linux. It is possible now to configure a Linux build to compile a kernel with realtime capabilities.

The idea behind realtime is to make as much kernel code fully preemptible as possible, which provides lower latencies (possibly at the expense of throughput).

During these two decades, the people working on the RT patchset had to write and rewrite a lot of code in order to support the realtime capabilities better. Most of that work turned out to be good for mainline aswell, and many features that have been incorporated into Linux during all this time had the RT patchset as origin, even if they didn't look like it. The final step, the rewrite of printk(), has been merged in this release and, as result, compiling Linux with the RT configuration enable is now possible.

Recommended documentation:

Recommended LWN articles:

1.2. Complete the EEVDF task scheduler

In Linux 6.6, Linux incorporated a new scheduling algorithm called EEVDF ("Earliest Eligible Virtual Deadline First"), which replaces the existing CFS algorithm. This replacement has been gradual. This release completes the EEVDF transition and refine EEVDF scheduling.

Recommended LWN article: Completing the EEVDF scheduler

Documentation: EEVDF Scheduler

1.3. BPF based task scheduling algorithms with sched_ext

Task scheduling algorithms are a complex topic, and experimentation or even personalization can provide great improvements. This release includes the first pieces of sched_ext, a feature that enables to write task scheduler algorithms in BPF, which provides a much faster development iteration and enables personalization of task scheduling

Recommended LWN article: The extensible scheduler class

Documentation:

1.4. QR codes on panic screens

Panic information is often hard to turn into text. This release adds an optional new panic screen, with a QR code and the kernel buffer (dmesg) data embedded. The kmsg data will be compressed with zlib and encoded as a numerical segment, and appended to the URL as a URL parameter. This allows to save space, and put about ~7500 bytes of kmsg data, in a V40 QR code. Linux distributions can customize the URL, and put a web frontend to directly open a bug report with the kmsg data.

1.5. Device Memory TCP for faster network device transfers

Device Memory TCP (devmem TCP) provides the ability to zero-copy receive TCP payloads to a DMABUF region of memory while packet headers land separately in normal kernel buffers

Today, the majority of the Device-to-Device data transfers to the network are implemented as the following low level operations: Device-to-Host copy, Host-to-Host network transfer, and Host-to-Device copy. The implementation is suboptimal, especially for bulk data transfers, and can put significant strains on system resources, such as host memory bandwidth, PCIe bandwidth, etc. One important reason behind the current state is the kernel’s lack of semantics to express device to network transfers.

Device Memory TCP (devmem TCP) attempts to optimize this use case by implementing socket APIs that enable the user to: 1. send device memory across the network directly, and 2. receive incoming network packets directly into device memory.

Recommended LWN article: Direct-to-device networking

Documentation: Device Memory TCP

1.6. Integrity Policy Enforcement to restrict execution to trusted binaries

Integrity Policy Enforcement is a new Linux security module that allows to restrict execution to only those binaries which come from integrity protected storage, e.g. fs-verity, dm-verity, or even initramfs.

Documentation: Integrity Policy Enforcement

1.7. perf ftrace profile, for better profiling

This release adds a 'perf ftrace profile' command to the perf tool that get function execution profiles using function-graph tracer so that users can see the total, average, max execution time as well as the number of invocations easily. The following is a profile for the perf_event_open syscall.

  $ sudo perf ftrace profile -G __x64_sys_perf_event_open -- \
    perf stat -e cycles -C1 true 2> /dev/null | head
  # Total (us)   Avg (us)   Max (us)      Count   Function
        65.611     65.611     65.611          1   __x64_sys_perf_event_open
        30.527     30.527     30.527          1   anon_inode_getfile
        30.260     30.260     30.260          1   __anon_inode_getfile
        29.700     29.700     29.700          1   alloc_file_pseudo
        17.578     17.578     17.578          1   d_alloc_pseudo
        17.382     17.382     17.382          1   __d_alloc
        16.738     16.738     16.738          1   kmem_cache_alloc_lru
        15.686     15.686     15.686          1   perf_event_alloc
        14.012      7.006     11.264          2   obj_cgroup_charge

1.8. ARM Permission Overlay Extension to support Memory Protection Keys

This release implements ARM support for Permission Overlay Extension, which allows to constrain permissions on memory regions. This can be used from userspace (EL0) without a system call or TLB invalidation. POE is used to implement the Memory Protection Keys syscall.

1.9. XFS support for block sizes larger than page size

This release adds VFS support for having block sizes larger than the page size (with XFS being the first filesystem that supports it)

commit, commit, commit, commit, [[https://git.kernel.org/

1.10. Smaller struct file

struct file, the data structure used to keep information about an open file in Linux, has been reduced from 232 bytes to 184 bytes (3 cachelines)

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

  • virtio_fs: add sysfs entries for queue information commit, commit

  • support set mac address from vdpa tool commit, commit

  • Support device passthrough when dom0 is PVH on Xen commit, commit, commit

  • KVM: Add a module param to allow enabling virtualization when KVM is loaded commit

8. Security

9. Networking

10. Architectures

11. Drivers

11.1. Graphics

11.2. Power Management

11.3. Storage

  • scsi: smartpqi: add new controller PCI IDs commit

  • nvme
    • nvmet-auth: allow to clear DH-HMAC-CHAP keys commit

    • Add 'tls_configured_key' sysfs attribute commit

    • Add 'tls_keyring' attribute commit

    • Add a newline to the 'tls_key' sysfs attribute commit

  • ufs: Add host capabilities sysfs group commit, commit

  • Allow platform drivers to update UIC command timeout commit

  • ibmvfc: Add max_sectors module parameter commit

  • scsi: smartpqi: Add new controller PCI IDs commit

11.4. Drivers in the Staging area

  • ks7010: Remove unused driver commit

  • media: starfive: Add the dynamic resolution support commit

  • media: meson: vdec: add GXLX SoC platform commit, commit

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

  • xpad: add support for MSI Claw A1M commit

  • xpad: add support for 8BitDo Ultimate 2C Wireless Controller commit

  • Add touch-keys support to the Zinitix touch driver commit, commit, commit

  • synaptics-rmi4: add support for querying DPM value (F12) commit

  • msc_touchkey: remove the driver commit

  • msc5000_ts: remove the driver commit

  • keypad-nomadik-ske: remove the driver commit

  • cyttsp4: remove driver commit

  • i8042: add TUXEDO Stellaris 15 Slim Gen6 AMD to i8042 quirk table commit

  • support i.MX95 SCMI BBM/MISC Extenstion commit, commit, commit, commit, commit, commit, commit

  • HID
    • lenovo: Add support for Thinkpad X1 Tablet Gen 3 keyboard commit

    • wacom: Support touchrings with relative motion commit

    • wacom: Support devices with two touchrings commit

    • wacom: Add preliminary support for high-resolution wheel scrolling commit

    • Add patch for sis multitouch format commit

    • intel-ish-hid: Add support for vendor customized firmware loading commit, commit, commit

    • hidraw: HIDIOCREVOKE introduction commit, commit, commit, commit

    • multitouch: Add support for Thinkpad X12 Gen 2 Kbd Portfolio commit

    • Add initial support for Goodix HID-over-SPI touchscreen commit, commit

    • multitouch: Add support for lenovo Y9000P Touchpad commit

11.8. TV tuners, webcams, video capturers

11.9. Universal Serial Bus

  • serial: option: add Telit FN920C04 MBIM compositions commit

  • serial: option: add support for Quectel EG916Q-GL commit

  • gadget: f_hid: Add GET_REPORT via userspace IOCTL commit

  • Add device links between tunneled USB3 devices and USB4 Host commit, commit, commit, commit

  • misc: onboard_usb_dev: add Microchip usb5744 SMBus support commit, commit

  • serial: pl2303: add device id for Macrosilicon MS3020 commit

11.10. Serial Peripheral Interface (SPI)

11.11. Watchdog

  • Add Watchdog Timer driver for Renesas RZ/V2H(P) SoC commit, commit

11.12. CPU Frequency scaling

  • Remove LATENCY_MULTIPLIER commit

11.13. Real Time Clock (RTC)

11.14. Pin Controllers (pinctrl)

11.15. Industrial I/O (iio)

11.16. Multi Function Devices (MFD)

11.17. Pulse-Width Modulation (PWM)

  • adp5585: Add Analog Devices ADP5585 support commit

11.18. Inter-Integrated Circuit (I2C + I3C)

11.19. Hardware monitoring (hwmon)

11.20. General Purpose I/O (gpio)

11.21. Leds

  • trigger: netdev: Add support for tx_err and rx_err notification with LEDs commit

  • leds-pca995x: Add support for NXP PCA9956B commit, commit

  • Add multicolor support to BlinkM LED driver commit

11.22. DMA engines

11.23. Cryptography hardware acceleration

11.24. PCI

11.25. Thunderbolt

11.26. Clock

11.27. Voltage, current regulators, power capping, power supply

11.28. Multi Media Card (MMC)

11.29. Memory Technology Devices (MTD)

11.30. PHY ("physical layer" framework)

11.31. EDAC (Error Detection And Correction)

  • Drop obsolete PPC4xx driver commit

11.32. Various

12. List of Pull Requests

13. Other news sites

KernelNewbies: LinuxChanges (last edited 2024-11-24 21:38:53 by diegocalleja)