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.3 was released on Sunday, 23 Apr 2023.

Summary: This release includes improved Btrfs performance and fragmentation improvements, support for non-executable memfds, eBPF support for HID devices, support for IPv4 Big TCP, new ids to the rseq system call, support AMD QoS new features, specifications for the netlink protocol, more secure NFS encryption, and multi-actuator support in the BFQ I/O sched. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. Btrfs performance and fragmentation improvements

This release places a number of heuristics in the block allocator to place files with different fragmentation characteristics together and separated from other types. This can help to avoid fragmentation in some cases, in particular this may help during balance.

There are also a few notable performance improvements: the send functionality now caches caches directory utimes and only emit the command when necessary, which can speed up send up to 10x. The fiemap ioctl can be now up to 3x faster when extents are shared, and there are some microoptimizations that can speed up file creation in synthetic benchmarks up to 10%.

1.2. eBPF support for HID devices, and other BPF enhancements

As usual, this release includes a number of enhancements, like a rbtree data structure that follows the recently-added linked-list. Because of previous limitation, BPF users had to use the BPF map structures (hash, array) for data structures that don't fit well in these structures. With the introduction of kfuncs, kptrs, and the any-context BPF allocator, it is now possible to implement this rbtree data structure that can expose red-black tree structures inside the kernel more naturally.

This release also includes a somewhat exotic use of BPF: using eBPF programs as a way to add small features and tweaks to existing Input HID drivers. For example, as joystick gets older, it is common to see it wobbling around its neutral point. This is usually filtered at the application level by adding a dead zone for this specific axis. With HID-BPF, it is possible to add a filter in the kernel directly so userspace does not get woken up when nothing else is happening on the input controller.

Another use would be to add a feature that requires a new kernel API, morph a device into something else and control that from userspace, or prevent users from accessing a feature (eg. broken firmware feature), or simply tracing HID events.

Recommended LWN article: [[|https://lwn.net/Articles/909109/BPF for HID drivers]]

1.3. Non-executable memfds

memfds (which are file descriptors that just refer to an area of anonymous process memory, instead of a file system). This release adds some flags to allow disabling the executability of these files, and it's also possible to seal them.

Recommended LWN article: Enabling non-executable memfds

1.4. Support IPv4 big TCP (TSO frames larger than 64kB)

This is an IPv4 implementation of BIG TCP, which allow biggers TSO/GRO packet sizes for IPv4 traffic. Reducing number of packets traversing networking stack usually improves performance. This is similar to the IPv6 BIG TCP feature but for the v4 family.

Recommended LWN article: Going big with TCP packets

1.5. Add new ids to the rseq system call for faster and more efficient memory allocators

The rseq(2) system call (alias for "restartable sequences") was added in Linux 4.18 to provide a safe way to do concurrency updates without using locks or atomic instructions. But it also provided a method for a thread to get the CPU id number where it runs, in a way that is faster than getcpu(2).

This release extends the rseq(2) system call to also expose other identification numbers that provide some heavy-lifting needed by eg. memory allocators to allow them to use per-cpu data structures more efficiently:

  • NUMA node id: This allows to gather the NUMA node id more efficiently than getcpu(2), which allows memory allocators such as tcmalloc to take advantage of this fast access to perform NUMA-aware memory allocation. It can also be useful for implementing fast-paths for NUMA-aware user-space mutexes, and even allows implementing getcpu(2) purely in user-space.
  • Per-memory map concurrency ID. This concurrency ID is within the possible cpus range, and is temporarily (and uniquely) assigned to a memory map while threads are actively running within it. If a memory map has fewer threads than cores, or is limited to run on few cores concurrently through sched affinity or cgroup cpusets, the concurrency IDs will be values close to 0, thus allowing efficient use of user-space memory for per-cpu data structures.
  • NUMA-aware concurrency id: It is similar to the concurrency ID, except that it provides the NUMA node ids with which each concurrency id has been associated, and it is guaranteed to never change NUMA node unless a kernel-level NUMA configuration change happens. This makes possible to create per-cpu structures in environments where a process or a set of processes belonging to cpuset are pinned to a set of cores which belong to a subset of the system's NUMA nodes. In those situations, it is possible to benefit from the compactness of concurrency IDs over CPU ids, while keeping NUMA locality, for indexing a per-cpu data structure which takes into account NUMA locality.

1.6. Support AMD QoS new features

Support for AMD QoS new features: Slow Memory Bandwidth Allocation (SMBA) and Bandwidth Monitoring Event Configuration (BMEC). These extensions are intended to provide for the monitoring of the usage of certain system resources by one or more processors and for the separate allocation and enforcement of use limits:

  1. Slow Memory Bandwidth Allocation (SMBA): With this feature, the QOS enforcement policies can be applied to the external slow memory connected to the host. Currently, CXL.memory is the only supported "slow" memory device.
  2. Bandwidth Monitoring Event Configuration (BMEC). The bandwidth monitoring events mbm_total_event and mbm_local_event are set to count all the total and local reads/writes respectively.

Official site: AMD64 Technology Platform Quality of Service Extensions

The netlink protocol is a networking protocol used to communicate user space programs with the kernel. For example, it is used to configure and gather information about wireless devices. Adding new communication endpoints require manually adding them to userspace libraries. This release adds machine readable netlink protocol descriptions in YAML. The expectation is that the spec can be used to either dynamically translate between whatever types the high level language likes. Currently only genetlink is supported.

1.8. More secure NFS encryption

This release improve/harden the security provided by the Linux kernel's RPCSEC GSS Kerberos 5 mechanism (used by NFS). This release disables DES-based enctypes by default, provides a mechanism for disabling SHA1-based enctypes, and introduces two modern AES-SHA2-based enctypes that do not use deprecated crypto algorithms.

1.9. Multi-actuator support in the BFQ I/O scheduler

Some traditional hard drives have more than one arm. In order to optimize performance, the I/O scheduler must attempt to keep both arms busy. This release adds some support for such multi-actuator drives to the BFQ I/O scheduler.

2. Core

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Security

9. Networking

10. Architectures

10.1. ARM

10.2. x86

10.3. LoongArch

10.4. RISC-V

10.5. PowerPC

10.6. S390

10.7. Alpha

10.8. IA-64

  • Remove Intel compiler support commit

10.9. M68k

  • Add kernel seccomp support commit

10.10. MIPS

  • BCM47XX: Add support for Linksys E2500 V3 commit

10.11. UM

11. Drivers

11.1. Graphics

11.2. Power Management

  • cpuidle: teo: Introduce util-awareness commit, commit

  • efi/earlycon: Speed up scrolling by disregarding empty space commit

  • efi: zboot: Use EFI protocol to remap code/data with the right attributes commit

  • efi: Enable BTI for EFI runtimes services commit, commit, commit

  • efi: Support ESRT under Xen commit, commit, commit, commit, commit

  • utils: Add Cezanne to the list for forcing StorageD3Enable commit

  • ACPI: tables: Add support for NBFT commit

  • tools/power turbostat: Introduce support for EMR commit

  • thermal
    • intel: Introduce Intel TCC library commit

    • tsens: Support using nvmem cells for calibration data commit

    • tsens: Support using nvmem cells for msm8974 calibration commit

    • imx_sc_thermal: Add iMX8QM sensors commit

    • intel: intel_pch: Add support for Wellsburg PCH commit

    • mtk: Add support for MT7986 and MT7981 commit

    • intel: int340x: Add production mode attribute commit

    • intel: powerclamp: Use powercap idle-inject feature commit

    • intel: powerclamp: Add two module parameters commit

    • rcar_gen3: Add support for R-Car V4H commit

    • mediatek: Add the Low Voltage Thermal Sensor driver commit

    • st: Remove syscfg based driver commit

11.3. Storage

11.4. Drivers in the Staging area

  • r8188eu: delete driver commit

  • media: meye: remove this deprecated driver commit

  • media: stkwebcam: remove deprecated driver commit

  • media: cpia2: remove deprecated driver commit

  • media: fsl-viu: remove deprecated driver commit

  • media: vpfe_capture: remove deprecated davinci drivers commit

  • media: zr364xx: remove deprecated driver commit

  • media: tm6000: remove deprecated driver commit

  • media: atomisp: ov2680: Add exposure and gain controls commit

  • media: atomisp: ov2680: Drop custom ATOMISP_IOC_S_EXPOSURE support commit

  • media: remove davinci vpfe_capture driver commit

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

11.8. TV tuners, webcams, video capturers

11.9. Serial

11.10. Universal Serial Bus

  • dwc3: pci: add support for the Intel Meteor Lake-M commit

  • dwc3: pci: add support for the Intel Meteor Lake-S commit

  • fotg210-udc: Implement VBUS session commit

  • gadget: Add support for RZ/V2M USB3DRD driver commit

  • gadget: add WebUSB landing page support commit

  • gadget: remove s3c24xx drivers commit

  • gadget: tegra-xudc: Add Tegra234 support commit

  • gadget: udc: add Renesas RZ/N1 USBF controller support commit

  • gadget: udc: renesas_usb3: Add role switch support for RZ/V2M commit

  • host: xhci-plat: Add reset support commit

  • host: xhci-tegra: Add Tegra234 XHCI support commit

  • misc: onboard_usb_hub: add Genesys Logic GL852G hub support commit

  • misc: onboard_usb_hub: add VIA LAB VL817 hub support commit

  • msunxi: add support for the F1C100s MUSB controller commit

  • phy: remove phy-isp1301-omap driver commit

  • Remove ohci-tmio driver commit

  • serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs commit

  • serial: option: add Quectel RM500U-CN modem commit

  • serial: option: add Telit FE990 compositions commit

  • serial: option: add support for VW/Skoda "Carstick LTE" commit

  • typec: hd3ss3220: Add polling support commit

  • typec: ucsi: Register USB Power Delivery Capabilities commit

  • xhci: host: Add Renesas RZ/V2M SoC support commit

  • xhci: tegra: USB2 pad power controls commit

  • Add device-tree support for Cypress CYPD4226 commit, commit, commit, commit, commit

  • usb: tps6598x: Add wakeup property commit, commit

  • Add XU support to UVC Gadget commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • UVC Gadget: Extend color matching support commit, commit, commit, commit, commit, commit, commit

  • typec: altmodes/displayport: Add hpd sysfs attribute commit

  • typec: pd: Remove usb_suspend_supported sysfs from sink PDO commit, commit

11.11. Serial Peripheral Interface (SPI)

  • intel: Add support for controllers commit

  • bcm63xx-hsAdd prepend mode support commit

  • bcmbca-hsAdd driver for newer HSSPI controller commit

  • spidev: Add Silicon Labs EM3581 device compatible commit

  • spidev: Add Silicon Labs SI3210 device compatible commit

  • spi-geni-qcom: Add support for SE DMA mode commit

  • bcm63xx-hsAdd polling mode support commit

  • Remove omap 100K driver commit

  • Remove s3c24xx driver commit

11.12. Watchdog

  • Report options in sysfs commit

  • Report fw_version in sysfs commit

11.13. CPU Frequency scaling

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

  • power
    • supply: Introduce Qualcomm PMIC GLINK power supply commit

    • reset: add Odroid Go Ultra poweroff driver commit

    • supply: bq25890: Add HiZ mode support commit

    • supply: bq25890: Support boards with more then one charger IC commit

    • supply: bq25890: Add new linux,iinlim-percentage property commit

    • supply: bq25890: Add support for having a secondary charger IC commit

    • reset: syscon-reboot: Add support for specifying priority commit

    • supply: rt9471: Add Richtek RT9471 charger driver commit

    • supply: rt9467: Add Richtek RT9467 charger driver commit

    • Remove s3c adc battery driver commit

    • Remove tosa_battery driver commit

    • Remove z2_battery driver commit

    • Remove pda_power supply driver commit

  • regulator: Introduce Maxim MAX20411 Step-Down converter commit

11.15. Real Time Clock (RTC)

  • abx80x: Add nvmem support commit

  • rv3028: add ACPI support commit

  • rv3032: add ACPI support commit

  • bbnsm: Add the bbnsm rtc support commit

  • pcf85363: add support for the quartz-load-femtofarads property commit

  • Remove v3020 driver commit

11.16. Pin Controllers (pinctrl)

  • qcom: add the tlmm driver sa8775p platforms commit

  • qcom: pinctrl-sm8550-lpass-lpi: add SM8550 LPASS commit

  • qcom: Introduce IPQ5332 TLMM driver commit

  • add mt7981 pinctrl driver commit

  • starfive: Add StarFive JH7110 aon controller driver commit

  • starfive: Add StarFive JH7110 sys controller driver commit

  • intel: Add ~4k bias support commit

  • qcom: Add QDU1000/QRU1000 pinctrl driver commit

  • qcom: Add SM8550 pinctrl driver commit

  • qcom: spmi-gpio: add support for pm8550 & pmr735d gpio control commit

  • qcom: Add support for i2c specific pull feature commit

  • Remove s3c24xx driver commit

11.17. Multi Media Card (MMC)

  • sdhci-of-dwcmshc: enable host V4 support for BlueField-3 SoC commit

  • sdhci-pxav2: add initial support for PXA168 V1 controller commit

  • jz4740: Add support for vqmmc power supply commit

  • starfive: Add sdio/emmc driver support commit

  • Remove tmio_mmc driver commit

  • Remove s3cmci driver commit

  • Remove cns3xxx driver commit

11.18. Memory Technology Devices (MTD)

  • ubi: fastmap: Add fastmap control support for module parameter commit

  • remove tmio_nand driver commit

  • spinand: Add support for AllianceMemory AS5F34G04SND commit

  • nand: ecc-mtk: Add ECC support fot MT7986 IC commit

11.19. Industrial I/O (iio)

  • accel: st_accel: Add LSM303C commit

  • adc: add ADC driver for the TI LMP92064 controller commit

  • adc: add imx93 adc support commit

  • adc: ti-ads7924: add Texas Instruments ADS7924 driver commit

  • dac: ad5686: Add support for AD5337 commit

  • dac: add support for max5522 commit

  • imu: st_lsm6dsx: add 'mount_matrix' sysfs entry to gyro channel commit

  • light: vcnl4000: Add interrupt support for vcnl4040 commit

  • magnetometer: add ti tmag5273 driver commit

  • magnetometer: st_magn: Add LSM303C commit

11.20. Multi Function Devices (MFD)

  • fpga: m10bmc-sec: Add support for N6000 commit

  • intel-m10-bmc: Add PMCI driver commit

  • ocelot: add external ocelot switch control commit

  • Remove htc-pasic3 driver commit

  • Remove toshiba tmio drivers commit

  • Remove toshiba tmio drivers commit

  • Remove ucb1400 support commit

11.21. Inter-Integrated Circuit (I2C + I3C)

  • Add GXP SoC I2C Controller commit

  • cht-wc: Add charger-chip info for the Lenovo Yoga Tab 3 YT3-X90F commit

  • designware: add a new bit check for IC_CON control commit

  • gpio: Add support on ACPI-based system commit

  • ls2x: Add driver for Loongson-2K/LS7A I2C controller commit

  • xiic: Add SCL frequency configuration support commit

11.22. Hardware monitoring (hwmon)

  • aquacomputer_d5next: Add Aquacomputer Aquaero sensors commit, commit, commit, commit, commit, commit

  • aquacomputer_d5next: Add support for Aquacomputer Aquastream Ultimate commit

  • aquacomputer_d5next: Add support for Aquacomputer Poweradjust 3 commit

  • aquacomputer_d5next: Add support for reading calculated Aquaero sensors commit

  • asus-ec-sensors: add zenith ii extreme alpha commit

  • ftsteutates: Add support for fanX_fault attributes commit

  • gxp-fan-ctrl: Add GXP fan controller commit

  • Add initial NXP MC34VR500 PMIC monitoring support commit

  • intel-m10-bmc-hwmon: Add N6000 sensors commit

  • it87: Add new chipset IT87952E commit

  • ltc2945: Allow setting shunt resistor commit

  • nct6775: B650/B660/X670 ASUS boards support commit

  • nzxt-smart2: Add device id commit

  • oxp-sensors: Add AYANEO AIR and AIR Pro commit

  • pmbus/max16601: Add support for MAX16600 commit

  • pmbus/mpq7932: Add a support for mpq7932 Power Management IC commit

  • pmbus/tda38640: Add driver for Infineon TDA38640 Voltage Regulator commit

  • remove s3c driver commit

11.23. General Purpose I/O (gpio)

11.24. Leds

11.25. DMA engines

11.26. Hardware Random Number Generator (hwrng)

  • starfive: Add TRNG driver for StarFive SoC commit

11.27. Cryptography hardware acceleration

11.28. PCI

11.29. Thunderbolt

11.30. Clock

  • imx: add clk-gpr-mux driver commit

  • mediatek: add MT7981 clock support commit

  • clk: qcom: Add clocks for the QDU1000 and QRU1000 SoCs commit, commit

  • clk: qcom: Add support for SM8550 commit, commit, commit, commit, commit

  • clock: add QCOM SM6350 camera clock bindings commit, commit

  • clk: qcom: Add DISPCC driver for SM8550 commit, commit, commit

  • clk: qcom: msm8996: add support for the CBF clock commit, commit, commit, commit

  • qcom: add support for sa8775p-ride
  • qcom: add the GCC driver for sa8775p commit

  • qcom: add the driver for the MSM8996 APCS clocks commit

  • renesas: r8a779g0: Add CAN-FD clocks commit

  • vc5: Add support for 5P49V60 commit

  • Remove davinci dm3xx drivers commit

  • Remove s3c24xx driver commit

  • samsung: remove s3c24xx specific pll bits commit

11.31. PHY ("physical layer" framework)

11.32. EDAC (Error Detection And Correction)

  • zynqmp: Add EDAC support for Xilinx ZynqMP OCM commit

  • i10nm: Add driver decoder for Sapphire Rapids server commit

  • Intel EDAC driver updates for "near" memory and new CPUs commit, commit, commit, commit, commit

11.33. Various

12. List of Pull Requests

13. Other news sites

KernelNewbies: LinuxChanges (last edited 2023-05-09 20:34:22 by diegocalleja)