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 5.18 was released on Sunday, 22 May 2022.

Summary: This release includes support for user events, which allow processes to create and write to trace events that are isolated from kernel trace level events and will only provide trace information when the trace is enabled; support for Intel Indirect Branch Tracking on Intel CPUs, which helps to prevent some kinds of exploits; stricter memcpy() compile-time bounds checking, better process scheduling performance on AMD Zen processors; support for fprobe, which allows faster probing of function calls; some preparation work for header rearchitecting that will provide faster compilation times; support for Btrfs encoded I/O, cross-mount reflink/dedupe and performance improvements; and switch to the C11 standard. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. Support for Indirect Branch Tracking on Intel CPUs

Indirect Branch Tracking is a feature found in Intel CPUs that attempts to improve security by forcing that functions called with indirect calls start with a specific ENDBR instruction. The instruction by itself does nothing, but if the code being called lacks it, the CPU will refuse to run it. The compiler inserts the required instructions where necessary to make this happen. This makes harder for a exploit (and proprietary modules) to call some random function.

Recommended LWN article: Indirect branch tracking for Intel CPUs

1.2. User events

Linux already has a method that allows tracing user space processes with the kernel tracing tools (uprobes). This release adds a new ABI that allow processes to create and write to trace events that are isolated from kernel trace level events. This enables a faster path for tracing from user mode data as well as opens managed code to participate in trace events, where stub locations are dynamic.

Processes often want to trace only when it's useful. A process can register an event describing the format of the event to the kernel. The kernel will create the event. The process will then receive a byte in a page mapping from a mapped tracefs file that it can check against. A privileged task can enable that event, which will change the mapped byte to true. The process can then start writing the event to the tracing buffer.

Links: Documentation, Example.

1.3. Better process scheduling performance on AMD Zen

Some CPUs, like AMD Zen, have multiple Last Level Caches per node with local memory channels and due to the allowed imbalance, it's far harder to tune some workloads to run optimally than it is on hardware that has 1 LLC per node. This release adjusts the imbalance on multi-LLC machines to allow an imbalance up to the point where LLCs should be balanced between nodes, which improves significantly the performance in some workloads.

1.4. fprobe, for probing multiple functions with a single probe handler

Linux already provices ways to probe function calls. This release includes a new one, fprobe, which is based on ftrace. The reasons why this new probe API exists is that it doesn't use the ftrace full features, it just provides a way to attach callbacks on function entry and exit. Unlike kprobes and kretprobes, fprobe gives faster+instrumentation for multiple functions with single handler.

Documentation: Fprobe - Function entry/exit probe

1.5. Headers rearchitecturing preparations for faster compilation times

A major rearchitecting of the kernel headers for significantly faster builds has been proposed; this release introduces some of these changes in the task scheduler.

1.6. Btrfs: Encoded I/O, cross-mount reflink/dedupe and performance improvements

The Btrfs file system supports transparent compression. When using send/receive, the sending side decompresses the data and the receiving side recompresses it before writing it out. This release lets user space tools avoid the extra decompression/compression by letting send/receive read and write compressed extents directly.

This release also adds support for cross-mount reflink/dedupe support, and several substantial performance improvements, especially for fsync-based workloads. There also are some preparations for the future extent tree v2 changes.

1.7. Stricter memcpy() compile-time bounds checking

This release implements stricter (no struct member overflows) bounds checking for memcpy(), memmove(), and memset() under CONFIG_FORTIFY_SOURCE. In order to eliminate a large class of common buffer overflow flaws that continue to persist in the kernel, these changes perform bounds checking of the destination struct member when they have a known size. This would have caught all of the memcpy()-related buffer write overflow flaws identified in at least the last three years

Recommended LWN article: Strict memcpy() bounds checking for the kernel

1.8. Switch to C11

The Linux kernel has relied until now on the C89 for various reasons. This release will switch to the C11 standard.

Recommended LWN article: https://lwn.net/Articles/885941/

2. Core (various)

  • locking: Enable RT_MUTEXES by default on PREEMPT_RT commit

  • Allow to collect all CPUs backtraces during a panic event and also to enable "panic_print" in a kdump event commit, commit, commit

  • Scheduler
    • (FEATURED) Adjust NUMA imbalance for multiple LLCs (AMD Zen CPUs) commit, commit

    • Fix NUMA topology for systems with CPU-less nodes commit, commit

  • io_uring
    • Add support for ring messages. A new IORING_OP_MSG_RING command allows an SQE to signal another ring. That allows either waking up someone waiting on the ring, or even passing a 64-bit value via the user_data field in the CQE commit, commit

    • Lots of workloads use multiple threads, in which case the file table is shared between them, getting and putting the ring file descriptor for each io_uring_enter(2) system call is more expensive, as it involves an atomic get and put for each call. Similarly to how io_uring allows registering normal file descriptors to avoid this overhead, this release adds support for an io_uring_register(2) API that allows to register the ring fds themselves (IORING_REGISTER_RING_FDS and IORING_UNREGISTER_RING_FDS commands) commit

    • Support for NAPI poll on sockets commit

    • Make statx API stable commit

  • Allow cross-vfsmount reflink/dedupe commit, commit

  • rseq: Remove broken uapi field layout on 32-bit little endian commit

  • kcov: improve mmap processing commit, commit

  • userfaultfd: provide unmasked address on page-fault commit

  • docs: add two texts covering regressions commit, commit, commit

  • kbuild

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Cryptography

  • Introduce a new Linux kernel keyring containing the TPM's Machine Owner Keys (MOK) called machine. In the mok side, the MokListTrustedRT UEFI variable can be set, from which kernel knows that MOK keys are kernel trusted keys and they are populated to the machine keyring. This keyring linked to the secondary trusted keyring, which means that can be used like any kernel trusted keys. This keyring of course can be used to hold other MOK'ish keys in other platforms in future. See instructions here. commit, commit, commit, commit, commit, commit, commit, commit

  • HMAC: disallow keys < 112 bits in FIPS mode commit, commit

  • dh: infrastructure for NVM in-band auth and FIPS conformance commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • KEYS: encrypted: Instantiate key with user-provided decrypted data commit

  • KEYS: remove support for asym_tpm keys commit

9. Security

  • Random: Changes to the RNG's crypto, the intent for 5.18 has been to shore up the existing design as much as possible with modern cryptographic functions and proven constructions, rather than actually changing up anything fundamental to the RNG's design. So it's still the same old RNG at its core as before: it still counts entropy bits, and collects from the various sources with the same heuristics as before, and so forth. However, the cryptographic algorithms that transform that entropic data into safe random numbers have been modernized
    • Use SipHash as interrupt entropy accumulator commit

    • Use RDSEED when we can rather than using RDRAND, and make sure RDRAND/RDSEED input always goes through the mixer rather than being xor'd into our state directly, in part in order to prevent ridiculous hypothetical cpu backdoors commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

    • Use computational hash for entropy extraction commit, commit, commit, commit, commit

    • Treat bootloader trust toggle the same way as cpu trust toggle commit

    • Give sysctl_random_min_urandom_seed a more sensible value commit

    • Do not allow user to keep crng key around on stack commit

  • (FEATURED) Strict compile-time buffer size checking under FORTIFY_SOURCE for the memcpy()-family of functions commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • audit: log AUDIT_TIME_* records only from rules commit

  • overflow: Implement size_t saturating arithmetic helpers commit

  • usercopy: Disable CONFIG_HARDENED_USERCOPY_PAGESPAN (will be replaced) commit

10. Networking

11. Architectures

11.1. ARM

11.2. X86

11.3. RISCV

11.4. MIPS

11.5. POWERPC

11.6. S390

  • KVM: Check keys when emulating instructions and let user space do key checked accesses. User space can do so via an extension of the MEMOP IOCTL commit, commit, commit, commit, commit, commit, commit, commit, commit

  • Enable sysfs attribute scans to force AP bus rescan commit

  • nospec: add an option to use thunk-extern commit

  • zcrypt
    • CEX8S exploitation support commit

    • Support CPRB minor version T7 commit

    • Handle checkstopped cards with new state commit

    • Raise minimum supported machine generation to z10 commit

11.7. XTENSA

  • Add kernel ABI selection to Kconfig commit

  • Make secondary reset vector support conditional commit

  • Enable GCC plugin support commit

11.8. PARISC

11.9. UM

  • Allow setting path to port-helper using UML_PORT_HELPER envvar commit

11.10. NDS32

  • Remove architecture, no longer maintained commit

12. Drivers

12.1. Graphics

12.2. Power Management

12.3. Storage

  • nvmem
    • Add driver for OCOTP in Sunplus SP7021 commit

    • Add driver for Layerscape SFP (Security Fuse Processor) commit

    • sunxi_sid: Add support for D1 variant commit

  • scsi
    • pmcraid: Remove the PMCRAID_PASSTHROUGH_IOCTL ioctl implementation commit

    • ufs: ufs-pci: Add support for Intel MTL commit

    • mvsas: Add PCI ID of RocketRaid 2640 commit

    • qla2xxx: Add ql2xnvme_queues module param to configure number of NVMe queues commit

    • smartpqi: Add PCI IDs commit

    • smartpqi: Enable SATA NCQ priority in sysfs commit

    • smartpqi: Speed up RAID 10 sequential reads commit

12.4. Drivers in the Staging area

  • meson: vdec: add VP9 support to GXM commit

  • iio:adc:ad7280a: Move out of staging commit

  • media: hantro: Add support for i.MX8MM Hantro-G1 commit

  • media: hantro: jpeg: Various improvements commit, commit, commit, commit, commit, commit, commit

  • media: imx: imx7-media-csi: add support for imx8mq commit

  • media: staging: media: zoran: add debugfs commit, rename debug module parameter commit, remove procfs commit

  • media: staging: tegra-vde: De-stage driver commit, Remove legacy UAPI support commit, Support V4L stateless video decoder API commit

  • pi433: add debugfs interface commit

  • Remove ashmem commit

  • wfx: allow new PDS format commit

  • drop fpgaboot driver commit

12.5. Networking

12.6. Audio

12.7. Tablets, touch screens, keyboards, mouses

  • Add Imagis touchscreen driver commit

  • mt6779-keypad: add MediaTek keypad driver commit

  • mtk-pmic-keys: add support for MT6358 commit

  • soc_button_array: add support for Microsoft Surface 3 (MSHW0028) buttons commit, commit

  • synaptics: enable InterTouch on ThinkPad T14/P14s Gen 1 AMD commit

  • tsc200x: add axis inversion and swapping support commit

  • HID
    • Add driver for Razer Blackwidow keyboards commit

    • Add SiGma Micro driver commit

    • apple: Add fn mapping for MacBook Pros with Touch Bar commit

    • apple: Add necessary IDs and configuration for T2 Macs commit

    • apple: Add support for keyboard backlight on certain T2 Macs commit

    • apple: Magic Keyboard first generation and 2015 FN key mapping commit, commit, commit

    • apple: Report Magic Keyboard 2021 battery over USB commit

    • apple: Report Magic Keyboard 2021 with fingerprint reader battery over USB commit

    • google: Add support for vivaldi to hid-hammer commit

    • uclogic: Support Huion 13th frame button commit

    • uclogic: Support Huion tilt reporting commit

    • uclogic: Support multiple frame input devices commit

12.8. TV tuners, webcams, video capturers

12.9. Universal Serial Bus

  • quirks: add a Realtek card reader commit

  • serial: cp210x: add PIDs for Kamstrup USB Meter Reader commit

  • serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions commit

  • serial: option: add support for Cinterion MV32-WA/MV32-WB commit

  • serial: pl2303: add IBM device IDs commit

  • serial: simple: add Nokia phone driver commit

  • dwc3: drd: Add support for usb-conn-gpio based usb-role-switch commit

  • i.MX8MP: more USB3 glue layer feature support commit, commit, commit, commit

  • dwc3: pci: Add support for Intel Alder Lake commit

  • ehci: add pci device support for Aspeed platforms commit

  • gadget: Add configfs HS/SS bInterval
  • gadget: f_uac2: Add HS/SS bInterval to configfs commit, commit, commit, commit

  • gadget: f_mass_storage: Make CD-ROM emulation work with Mac OS-X commit

  • gadget: audio: Multiple rates, notify commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • gadget: f_uac1: allow changing interface name via configfs commit

  • gadget: f_uac2: allow changing interface name via configfs commit

  • misc: eud: Add driver support for Embedded USB Debugger(EUD) commit

  • typec: Support the WUSB3801 port controller commit

  • typec: rt1719: Add support for Richtek RT1719 commit

  • ulpi: Add debugfs support commit

  • xhci-mtk: add support ip-sleep wakeup for mt8195 commit

  • xhci and hub features commit, commit, commit, commit, commit, commit, commit, commit, commit

  • serial: option: add Fibocom L610 modem commit

  • serial: option: add Fibocom MA510 modem commit

  • serial: qcserial: add support for Sierra Wireless EM7590 commit

  • serial: pl2303: add device id for HP LM930 Display commit

  • serial: pl2303: add device id for HP LM930 Display commit

12.10. Serial Peripheral Interface (SPI)

12.11. Watchdog

  • aspeed: add nowayout support commit

  • ixp4xx: Implement restart commit

  • max77620: Add support for the max77714 variant commit

  • orion_wdt: support pretimeout on Armada-XP commit

  • renesas_wdt: Add R-Car Gen4 support commit

  • sp5100_tco: Enable Family 17h+ CPUs commit

12.12. Serial

12.13. CPU Frequency scaling

  • qcom-hw: Add support for per-core-dcvs commit

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

12.15. Real Time Clock (RTC)

  • Add new RTC_FEATURE_ALARM_WAKEUP_ONLY feature commit

  • max77686: Add MAX77714 support commit

  • optee: add RTC driver for OP-TEE RTC PTA commit

  • sun6i: Add Allwinner H616 support commit

  • sun6i: Add support for broken-down alarm registers commit

  • sun6i: Add support for linear day storage commit

12.16. Pin Controllers (pinctrl)

  • Add driver for Sunplus SP7021 commit

  • Add pinctrl driver on mt8186 commit

  • alderlake: Add Intel Alder Lake-N pin controller support commit

  • alderlake: Add Raptor Lake-S ACPI ID commit

  • bcm: add driver for BCM4908 pinmux commit

  • icelake: Add Ice Lake-N PCH pin controller support commit

  • imx93: Add pinctrl driver support commit

  • nuvoton: Add driver for WPCM450 commit

  • ocelot: Add support for ServalT SoC commit

  • qcom-pmic-gpio: Add support for pm8450 commit

  • qcom: Introduce sc8280xp TLMM driver commit

  • qcom: sm8450: Add egpio support commit

  • qcom: spmi-mpp: Add PM8226 compatible commit

  • renesas: Initial R8A779F0 PFC support commit

12.17. Multi Media Card (MMC)

  • Add driver for LiteX's LiteSDCard interface commit

  • sdhci-tegra: Enable wake on SD card event commit

  • sdhci_am654: Add Support for TI's AM62 SoC commit

  • sunxi-mmc: Add D1 MMC variant commit

12.18. Memory Technology Devices (MTD)

12.19. Industrial I/O (iio)

  • afe: add temperature rescaling support commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • accel: add ADXL367 driver commit

  • accel: adxl345: Add ACPI HID table commit

  • accel: st_accel: Add support for Silan SC7A20 commit

  • amplifiers: ada4250: add support for ADA4250 commit

  • dac: add support for ltc2688 commit

  • frequency: admv1014: add support for ADMV1014 commit

  • frequency: admv4420.c: Add support for ADMV4420 commit

  • humidity: hdc100x: Add ACPI HID table commit

  • potentiometer: ds1803: Add support for Maxim DS3502 commit

  • pressure: dps310: Add ACPI HID table commit

  • proximity:sx9324: Add SX9324 support commit

  • proximity:sx9360: Add sx9360 support commit

  • temperature: iqs620at-temp: Add support for V3 silicon commit

12.20. Multi Function Devices (MFD)

  • ab8500: Drop debugfs module commit

  • arizona-spi: Add Android board ACPI table handling commit

  • intel-lpss: Add Intel Raptor Lake PCH-S PCI IDs commit

  • max77714: Add driver for Maxim MAX77714 PMIC commit

  • rk808: Add reboot support to rk808.c commit

12.21. Pulse-Width Modulation (PWM)

  • jz4740: Add support for X1000 SoC commit

12.22. Inter-Integrated Circuit (I2C + I3C)

  • Introduce common module to instantiate CCGx UCSI commit

  • designware: Add AMD PSP I2C bus support commit

  • i3c: support dynamically added i2c devices commit

  • i801: Add support for Intel Raptor Lake PCH-S commit

  • i801: Add support for the Process Call command commit

  • mediatek: Add i2c compatible for Mediatek MT8168 commit

  • piix4: Enable EFCH MMIO for Family 17h+ commit

  • rcar: Add R-Car Gen4 support commit

12.23. Hardware monitoring (hwmon)

  • Add "label" attribute commit

  • adm1275: Add sample averaging binding support commit

  • aquacomputer_d5next: Add support for Aquacomputer Farbwerk 360 commit

  • asus-ec-sensors: Add Crosshair VIII Hero WiFi commit

  • asus-ec-sensors: add CPU core voltage commit

  • asus-ec-sensors: add driver for ASUS EC commit

  • asus_wmi_ec_sensors: Support T_Sensor on Prime X570-Pro commit

  • asus_wmi_sensors: add ASUS ROG STRIX B450-F GAMING II commit

  • sch5627: Add pwmX_auto_channels_temp attributes commit, commit

  • Add driver for Texas Instruments TMP464 and TMP468 commit

  • Deprecate asis_wmi_ec_sensors driver commit

  • sy7636a: Add temperature driver for sy7636a commit

  • lm70: Add ti,tmp125 support commit

  • max6639: Add regulator support commit

  • mlxreg-fan: Use pwm attribute for setting fan speed low limit commit

  • nct6775: add ASUS Pro B550M-C/PRIME B550M-A commit

  • nct6775: add ASUS ROG STRIX Z390/Z490/X570-* / PRIME X570-P commit

  • occ: Add various poll response data in sysfs commit, commit, commit, commit

  • pmbus: Add support for pli1209bc commit, commit

  • pmbus/lm25066: Add regulator support commit

  • powr1220: Add support for Lattice's POWR1014 power manager IC commit

  • tc654: Add thermal_cooling device support commit

  • xdpe12284: Add regulator support commit

  • xdpe12284: Add support for xdpe11280 commit

12.24. General Purpose I/O (gpio)

  • Add Delta TN48M CPLD GPIO driver commit

  • Add support for Airoha EN7523 GPIO controller commit

12.25. Leds

  • pca955x: Allow zero LEDs to be specified commit

12.26. DMA engines

12.27. Hardware Random Number Generator (hwrng)

  • Introduce rng_quality sysfs attribute commit

12.28. Cryptography hardware acceleration

  • atmel: add support for AES and SHA IPs available on lan966x SoC commit

  • atmel-tdes: Add support for the TDES IP available on sama7g5 SoC commit

  • hisilicon/sec: add the register configuration for HW V3 commit

  • octeontx2: add synchronization between mailbox accesses commit

  • qat: enable power management for QAT GEN4 commit

  • xilinx: Add Xilinx SHA3 driver commit

12.29. PCI

  • P2PDMA: Add Intel 3rd Gen Intel Xeon Scalable Processors to whitelist commit

  • Support BAR sizes up to 8TB commit

  • aardvark: Add support for PME interrupts commit

  • aardvark: Enable MSI-X support commit

  • fu740: Force 2.5GT/s for initial device probe commit

  • Extends pci-bridge-emul driver to emulate PCI Subsystem Vendor ID capability and PCIe extended capabilities. And then implement in pci-mvebu.c driver support for PCI Subsystem Vendor IDs, PCIe AER registers, support for legacy INTx interrupts, configuration for X1/X4 mode and usage of new PCI child_ops API commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • qcom: Add SM8450 PCIe support commit

  • Introduce UniPhier NX1 PCI endpoint controller support commit, commit

12.30. FRU Support Interface (FSI)

12.31. Clock

  • clk-apple-nco: Add driver for Apple NCO commit

  • clocksource: Add a Kconfig option for WATCHDOG_MAX_SKEW commit

  • cs2000-cp: add dynamic mode and more features commit, commit, commit, commit, commit, commit, commit, commit, commit

  • imx: Add imx8dxl clk driver commit

  • imx: Add initial support for i.MXRT1050 clock driver commit

  • Add i.MX93 clk bindings and driver commit, commit, commit, commit, commit

  • imx: pll14xx: Support dynamic rates commit, commit, commit, commit, commit, commit, commit, commit

  • microchip: Add driver for Microchip PolarFire SoC commit

  • qcom: Add GPU clock controller driver for SM6350 commit

  • qcom: Add MSM8226 Multimedia Clock Controller support commit

  • qcom: Add SDX65 APCS clock controller support commit

  • qcom: Add display clock controller driver for QCM2290 commit

  • qcom: Add display clock controller driver for SM6125 commit

  • qcom: Add display clock controller driver for SM6350 commit

  • qcom: gcc-ipq806x: add CryptoEngine clocks commit

  • qcom: rpmhcc: add sc8280xp support to the RPMh clock controller commit

  • renesas: rzg2l-cpg: Add support for RZ/V2L SoC commit

  • rs9: Add Renesas 9-series PCIe clock generator driver commit

  • samsung: fsd: Add initial clock support commit

  • starfive: Add JH7100 audio clock driver commit

  • sunxi-ng: Add support for the sun6i RTC clocks commit

  • sunxi-ng: sun6i-rtc: Add support for H6 commit

12.32. PHY ("physical layer" framework)

  • Add support for the Layerscape SerDes 28G commit

  • cadence: Add Cadence D-PHY Rx driver commit

  • cadence: Sierra: Add support for skipping configuration commit

  • qcom-qmp: add sc8280xp UFS PHY commit

  • qcom-qusb2: Add compatible for MSM8953 commit

  • qcom-snps: Add sc8280xp support commit

  • qcom: Add support for eDP PHY on sc7280 commit

  • rockchip: add naneng combo phy for RK3568 commit

  • sun4i-usb: Add D1 variant commit

  • usb: Add "wake on" functionality for newer Synopsis XHCI controllers commit

12.33. EDAC (Error Detection And Correction)

  • altera: Add SDRAM ECC check for U-Boot commit

  • Add new register offset support and related changes commit

12.34. Various

13. List of Pull Requests

14. Other news sites

KernelNewbies: LinuxChanges (last edited 2022-05-22 20:56:42 by diegocalleja)