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.16 was released on Sun, 9 Jan 2022.

Summary: This release adds a new futex_waitv syscall that can speeds up games by letting them wait for multiple futexes with a single system call; a file system health reporting API baed on fanotify; introduction of the concept of "memory folios", which speeds up some memory management areas significantly; support in the task scheduler for CPU "clusters" that share some L2/L3 cache; support for Intel AMX instructions; support for DAMON-based proactive memory reclamation and improved write congestion management. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. New futex_waitv() system call for faster game performance

This release adds a new system call, futex_waitv(2), which allows to wait on multiple futexes with a single system call. The main use case is emulating Windows' WaitForMultipleObjects call, which allows software like Proton to improve the performance of Windows Games. Native Linux games can also benefit from this interface as this is a common wait pattern for this kind of applications.

Recommended LWN article: Short subjects: Realtime, Futexes, and ntfs3

Documentation: Documentation/userspace-api/futex2.rst

1.2. File system health reporting through fanotify

This release adds a new FAN_FS_ERROR fanotify event type for file system-wide error reporting. It is meant to be used by file system health monitoring daemons, which listen for these events and take actions (notify sysadmin, start recovery) when a file system problem is detected. It tries to report only the first error that occurred for a file system since the last notification, and it simply counts additional errors. This ensures that the most important pieces of information are never lost. Right now, the only file system that supports this interface is Ext4.

Documentation: Documentation/admin-guide/filesystem-monitoring.rst

1.3. Memory folios infrastructure for a faster memory management

To manage the system's memory, the available RAM is split into small units, called pages. The size of these pages vary depending on the architecture, but on x86 systems it's KB. In modern systems with several tens of GB, such small page size equals to a vast amount of pages, which are difficult to manage. To solve this problem, the Linux kernel developed the concept of compound pages, which are page structures that can contain more than one physical page. But the way these compound pages work is not clear, and it has bug-prone APIs that also introduce some overhead all across the kernel.

This release introduces the concept of page folios, which are like compound pages, but with better semantics. Using page folios in some core parts of the kernel brings some performance improvements in common workloads. This release will include the core infrastructure of page folios and converts some parts of the core memory management subsystem and the page cache. Future releases will convert some file systems and introduce multi-page folios.

Recommended LWN articles: Clarifying memory management with page folios, and The folio pull-request pushback

1.4. Add cluster scheduler support to the task scheduler

Some machines have a level of hardware topology in which some CPU cores, typically 4 cores, share L3 tags (e.g. ARM's Kunpeng 920) or L2 cache (e.g. x86's Jacobsville). Awareness of this special topology can drastically improve the task scheduling decisions: spreading those tasks between clusters will bring more memory bandwidth and decrease cache contention (but this isn't always a win: packing tasks might help decrease the latency of cache synchronization). This release adds support for cluster typologies to the task scheduler.

1.5. Add support for AMX instructions

This release adds support for Intel's Advanced Matrix Extensions (AMX). These extensions will be shipping on servers soon. AMX consists of configurable TMM "TILE" registers plus new CPU instructions that operate on them. TMUL (Tile matrix MULtiply) is the first operator to take advantage of the new registers, and additional instructions will be added in the future.

Because of the size that this new extension would add to the signal stack of each task, it requires using a new arch_prctl(2) mechanism to read the supported features and request permission for dynamically enabling it for the calling process and its children.

1.6. DAMON-based proactive memory reclamation, operation schemes and physical memory monitoring

Following up the merge of DAMON in Linux 5.15, this release adds support for a few DAMON-based features:

  • DAMON_RECLAIM, which is based on DAMON and finds cold memory regions and reclaims those immediately. It is intended to be used as proactive lightweight reclamation logic for light memory pressure. To avoid it consuming too much CPU for the paging out operation, a speed limit can be configured, and for heavy memory pressure, it is possible to configure it to disable itself and fall back to the traditional page-scanning based reclamation. Documentation: Documentation/admin-guide/mm/damon/reclaim.rst.

  • Data Access Monitoring-based Operation Schemes (DAMOS). In short, this feature allows applying a defined madvise() operation to a memory region that has a specific access frequency for a specified time. This is done by writing a line to a schemes file in the debugfs filesystem. For example, the configuration # echo "4096 8192    0 5    10 20    2" > schemes means "If a memory region of size in [4KiB, 8KiB] is showing accesses per aggregate interval in [0, 5] for aggregate interval in [10, 20], apply the madvise MADV_PAGEOUT operation". Documentation: Documentation/admin-guide/mm/damon/usage.rst.

  • Add support for Physical Memory Address Space Monitoring. Recent versions only supported monitoring virtual memory addresses.

1.7. Improve write congestion

When a process writes lots of data and the disk can't keep up (i.e. it's "congested"), the process must not be allowed to continue making more write requests until the current write requests are completed. The mechanisms used to signal when congestion is happening is completely broken and is being replaced with a new approach.

Recommended LWN article: Replacing congestion_wait()

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Cryptography

  • engine: Add KPP Support to Crypto Engine commit

9. Security

10. Networking

  • Introduce a new socket option SO_RESERVE_MEM. This socket option provides a mechanism for users to reserve a certain amount of memory for the socket to use. When this option is set, kernel charges the user specified amount of memory to memcg. This amount of memory is not reclaimable and is available for this socket. With this socket option set, the networking stack spends less cycles doing forward alloc and reclaim, which should lead to better system performance, with the cost of an amount of pre-allocated and unreclaimable memory, even under memory pressure commit, commit, commit

  • Add support for Automatic Multicast Tunneling (RFC 7450), a protocol for delivering multicast traffic from sources in a multicast-enabled network to receivers that lack multicast connectivity to the source network. The protocol uses UDP encapsulation and unicast replication to provide this functionality commit, commit, commit, commit, commit

  • ARP: introduce arp_evict_nocarrier sysctl. When set (default) the ARP cache will be cleared on a NOCARRIER event commit

  • ndisc: introduce ndisc_evict_nocarrier sysctl which can be disabled by a wireless supplicant during a roam. This allows packets to be sent after a roam immediately without having to wait for neighbor discovery commit

  • Add the netlink interface for CAN-FD Transmitter Delay Compensation (TDC) commit, commit, commit, commit, commit, commit

  • 802.11:
    • AP mode driver offload for FILS association crypto commit

    • Add support for multiple BSSID and enhanced multi-BSSID advertisements for AP mode commit, commit

    • Add support for 6GHZ STA for various modes : LPI, SP and VLP commit, commit, commit

  • devlink
  • dsa
  • ethtool: Add ability to control transceiver modules' power mode commit, commit, commit, commit, commit

  • Packet scheduler
    • implement r Low Latency, Low Loss, Scalable Throughput (L4S) for fd_codel commit, commit

  • hsr: Add support for redbox supervision frames as defined in the IEC-62439-3:2018 commit

  • IPv6
  • ipvs: add sysctl run_estimation to support disable estimation commit

  • MCTP
  • Managed Neighbor Entries: Introduce managed neighbor entries - added by control plane and resolved by the kernel for use in acceleration paths (BPF / XDP right now, HW offload users will benefit as well) commit, commit, commit, commit

  • Netfilter
    • Support classifying packets with netfilter on egress commit, commit, commit, commit

    • Add NFT_META_IFTYPE to match on the interface type either from ingress or egress commit

    • Allow matching on and modifying inner headers / payload data commit

  • phy: supported interfaces bitmap commit, commit, commit

  • phylink: Support disabling autonegotiation for PCS commit

  • smc
  • TLS
    • Getsockopt supports complete algorithm list commit

    • Support SM4 CCM algorithm commit

    • Support SM4 GCM/CCM algorithm commit

  • UDP6: allow SO_MARK ctrl msg to affect routing commit

  • xsk: introduces a batched interface for Rx buffer allocation in AF_XDP buffer pool commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • Bluetooth
    • Add offload feature under experimental flag commit

    • Add support for HCI_Enhanced_Setup_Synchronous_Connection command commit

    • Add support for Read Local Supported Codecs commit

    • Add support for msbc coding format commit

    • Allow setting of codec for HFP offload use case commit

    • Configure codec for HFP offload use case commit

    • hci_sock: Add support for BT_{SND,RCV}BUF commit

  • NFC: add necessary privilege flags in netlink layer commit

  • bridge: mcast: add and enforce query interval minimum commit and startup query interval minimum commit

11. Architectures

11.1. ARM

  • Device Tree Sources
    • Qualcomm
      • Gains support for Snapdragon 690 (aka SM6350) commit as well as SM7225 commit

      • Add device tree for Fairphone 4 commit

      • Add support for LG G Watch R commit

      • Add device tree for Sony Xperia 10 III commit

      • Add device tree for Samsung Galaxy S4 Mini Value Edition commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

      • msm8996: Add support for the Xiaomi MSM8996 platform, supporting the devices Mi 5 (gemini), Mi Note 2 (scorpio), Mi 5s (capricorn), Mi Mix (lithium), Mi 5s Plus (natrium) commit, and Xiaomi Mi 5 commit

      • msm8998: Introduce support for Sony Yoshino platform, supporting phones Sony Xperia XZ1 (codename Poplar), Sony Xperia XZ1 Compact (codename Lilac), and Sony Xperia XZ Premium (codename Maple) commit

      • Add support for MSM8998 F(x)tec Pro1 QX1000 commit

      • sc7280: Add Herobrine commit

      • Add sc7180-trogdor-homestar commit

      • Add IPQ8074 family ID-s commit

      • Implement SPM/SAW for MSM8998 and SDM6xx commit, commit, commit, commit, commit

      • Add SMP support for MSM8226 commit

      • Add Sleep stats driver commit

    • Microchip
    • Samsung gains support for ExynosAutov9 SoC, an automotive version of their smartphone SoC commit, commit

    • Aspeed supports two additional server boards using their AST2600 as BMC: TYAN S7106 BMC machine commit, Inventec Transformers BMC commit

    • Rockchip
      • Add RK3566 support commit

      • Add RK3399 ROCK Pi 4A+ board commit

      • Add RK3399 ROCK Pi 4B+ board commit

      • Add support for Firefly ROC-RK3328-PC commit

      • Add support for Firefly ROC-RK3399-PC-PLUS commit

      • Dumo, another variant of Scarlet, also known as the ASUS Chromebook Tablet CT100 commit

      • Add basic dts for Pine64 Quartz64-A commit

    • Two NAS boxes are added using the ARMv4 based Gemini platform: SSI 1328 commit and edimax NS2502 commit

    • Intel Arria SoC FPGA family: Add support for the Mercury+ AA1 module commit

    • Marvell
      • Add the device tree for a Netgear GS110EMX switch featuring 8 Gigabit ports and 2 Multi-Gig ports (100M/1G/2.5G/5G/10G). An 88E6390X switch sits at its core connecting to two 88X3310P 10G PHYs. The control plane is handled by an 88F6811 Armada 381 SoC commit

      • Add Globalscale MOCHAbin 7040 development board commit

    • NXP
      • Add support for the S32G2 automotive SoC commit

      • Add devicetree for e-reader Kobo Libra H2O commit

      • Add devicetree for e-reader Tolino Vision 5 commit

      • Add NXP S32G2's Evaluation Board (S32G-VNP-EVB) and Reference Design 2 Board (S32G-VNP-RDB2) commit

    • STmicroelectronics: add STM32MP13 SoCs support. It adds machine support and device tree diversity to support the whole stm32mp13 family (STM32MP131/STM32MP133/STM32MP135) commit, commit, commit, commit, commit

    • Renesas
      • Add Renesas R8A779M0 SoC support commit

      • Add Renesas R8A779M2 SoC support commit

      • Add Renesas R8A779M4 SoC support commit

      • Add Renesas R8A779M5 SoC support commit

      • Add Renesas R8A779M6 SoC support commit

      • Add Renesas R8A779M7 SoC support commit

      • Add Renesas R8A779M8 SoC support commit

      • Add support for Salvator-XS with R-Car M3Ne-2G commit

      • Identify more R-Car Gen3e SoCs commit

    • Broadcom
      • Add support for a number of Cisco Meraki wireless controllers commit, commit

      • BCM5301X: Add DT for Asus RT-AC88U commit

      • Add Raspberry Pi Compute Module 4 IO Board commit

      • Add Raspberry Pi Compute Module 4 commit

    • Colibri iMX6ULL 1GB commit

    • Toshiba adds one board for the Visconti family commit, commit

    • Xilinx
      • Add support for Xilinx Kria SOM board commit

      • Add support for zcu102-rev1.1 board commit

    • Amlogic
      • Add support for Radxa Zero commit

      • Add support for JetHub D1 commit

      • Add support for JetHub H1 commit

    • Add Netronix E70K02 board common file commit

    • Add device tree for the LX2160A on the NXP BlueBox3 board commit

    • TI
      • Add support for J721E SK commit

      • iot2050: Add support for product generation 2 boards commit

    • tegra: Add Tegra186 ARI driver commit

    • amlogic: meson-gx-socinfo: Add S905Y2 ID for Radxa Zero commit

    • fsl: dpio: add Net DIM integration commit

    • fsl: dpio: add support for irq coalescing per software portal commit

    • imx: add i.MX8M blk-ctrl driver commit

    • mediatek: mmsys: Add reset controller support commit

    • samsung: exynos-chipid: Add Exynos850 support commit

    • samsung: exynos-chipid: add exynosautov9 SoC support commit

    • qcom: smd-rpm: Add QCM2290 compatible SoC support commit

    • qcom: smd-rpm: Add compatible for MSM8953 SoC commit

    • soc: aspeed: Add UART routing support commit

  • Add Coresight support for RB5 board commit

  • coresight: cpu-debug: Control default behavior via Kconfig commit

  • Support THREAD_INFO_IN_TASK commit, commit, commit, commit, commit

  • perf arm-spe: Add snapshot mode support commit, commit, commit

  • perf arm-spe: Track pid/tid for Arm SPE samples commit, commit, commit, commit

  • ARM64

11.2. x86

11.3. RISC-V

  • perf annotate: Add riscv64 support commit

11.4. S390

  • ap: new module option ap.useirq commit

  • ftrace: add HAVE_DYNAMIC_FTRACE_WITH_ARGS support commit

  • ptrace: add function argument access API commit

  • DYNAMIC_FTRACE_WITH_DIRECT_CALL support commit, commit, commit, commit

  • Implement livepatch on PPC32
  • Add support for BEAR enhancement facility commit

  • Allow multiple processes to access /dev/hwc commit

  • make command line configurable commit, commit

  • KVM: Add a routine for setting userspace CPU state commit

  • Add support for ftrace direct multi sample commit

11.5. MIPS

11.6. PA-RISC

11.7. PowerPC

  • Activate CONFIG_STRICT_KERNEL_RWX by default commit

  • perf: Add support to expose instruction and data address registers as part of extended regs commit

  • pseries/dma: Add support for 2M IOMMU page size commit

  • Add support for out-of-line static calls commit

12. Drivers

12.1. Graphics

12.2. Power Management

12.3. Storage

  • nvme: add nvme map queues support (for qla2xxx) commit, commit

  • nvme: support unique discovery controller commit, commit, commit, commit, commit, commit, commit

  • nvme: Discovery controller discovery support commit, commit, commit

  • nvme: generate uevent once a multipath namespace is operational again commit

  • Add AHCI support for ASM1062+JBM575 cards commit

  • ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile commit

  • scsi
    • qla2xxx: Add support for mailbox passthru commit

    • smartpqi: Add 3252-8i PCI id commit

    • smartpqi: Add extended report physical LUNs commit

    • target: cxgbit: Enable Delayed ACK commit

    • ufs: core: Add debugfs attributes for triggering the UFS EH commit

12.4. Drivers in the Staging area

  • PCI: mt7621: Add MediaTek MT7621 PCIe host controller driver commit

  • media: cedrus: hevc: Add support for scaling lists commit

  • media: hantro: Add scaling lists feature commit

  • media: rkvdec: Support dynamic resolution changes commit

  • Remove Netlogic XLP network driver commit

12.5. Networking

12.6. Audio

12.7. Tablets, touch screens, keyboards, mouses

  • cypress-sf: add Cypress StreetFighter touchkey driver commit

  • goodix: add support for controllers without flash commit

  • tm2-touchkey: allow changing keycodes from userspace commit

  • ili210x: add ili251x firmware update support commit

  • ili210x: export ili251x version details via sysfs commit

  • cap11xx: add support for cap1206 commit

  • HID

12.8. TV tuners, webcams, video capturers

12.9. Universal Serial Bus

  • qmi_wwan: add Telit 0x1070 composition commit

  • lan78xx: add Allied Telesis AT29M2-AF commit

  • gadget: storage: add support for media larger than 2T commit

  • host: ehci-atmel: Add support for HSIC phy commit

  • phy: tegra: Support OTG mode programming commit

  • serial: option: add Fibocom FM101-GL variants commit

  • serial: option: add Telit LE910S1 0x9200 composition commit

  • typec: tipd: Add support for Apple CD321X commit

  • rndis_host: support Hytera digital radios commit

12.10. Serial Peripheral Interface (SPI)

  • Add sc7280 support commit

  • Add Ingenic JZ47xx driver commit

  • bcm-qspi: Add mspi spcr3 32/64-bits xfer mode commit

  • bcm-qspi: add support for 3-wire mode for half duplex transfer commit

  • cadence-quadspi: Add OSPI support for Xilinx Versal SoC commit

  • cadence-quadspi: Add Xilinx Versal external DMA support commit

  • cadence: add support for Cadence XSPI controller commit

12.11. Watchdog

  • meson_gxbb_wdt: add timeout parameter commit

  • meson_gxbb_wdt: add nowayout parameter commit

  • sunxi_wdt: Add support for D1 commit

  • remove dead iop watchdog timer driver commit

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

  • qcom-rpmh: Add PM6350 regulators commit

  • tps80031: Remove driver commit

12.13. Real Time Clock (RTC)

  • Add a new ioctl interface allowing to get and set extended parameters on RTCs. While its main goal is to support backup switch mode, it also intends to fix a long time issue. Until now, it was not possible to know what features were supported by an RTC before actually trying to make use of it and see that succeed or fail. In order to make tests more reliable and allow userspace to take the correct decision, the features are now exposed commit, commit, commit, commit, commit, commit, commit

  • Add support for the MSTAR MSC313 RTC commit

  • pcf8523: add BSM support commit

  • tps80031: Remove driver commit

12.14. Pin Controllers (pinctrl)

  • Add pinctrl/GPIO driver for Apple SoCs commit

  • mediatek: add rsel setting on MT8195 commit, commit

  • mediatek: add support for MT7986 SoC commit

  • qcom: Add QCM2290 pinctrl driver commit

  • qcom: Add SM6350 pinctrl driver commit

  • qcom: spmi-mpp: add support for hierarchical IRQ chip commit

  • qcom: ssbi-mpp: add support for hierarchical IRQ chip commit

  • samsung: support ExynosAutov9 SoC pinctrl commit

  • tegra: Add pinmux support for Tegra194 commit

  • uniphier: Add UniPhier NX1 pinctrl driver commit

12.15. Multi Media Card (MMC)

  • sdhci-of-arasan: Add intel Thunder Bay SOC support to the arasan eMMC driver commit

  • mtk-sd: Add HS400 online tuning support commit

  • sdhci-esdhc-imx: add NXP S32G2 support commit

12.16. Memory Technology Devices (MTD)

  • rawnand: hynix: Add support for H27UCG8T2ETR-BC MLC NAND commit

  • block2mtd: add support for an optional custom MTD label commit

12.17. Industrial I/O (iio)

12.18. Multi Function Devices (MFD)

  • da9063: Add support for latest EA silicon revision commit

  • intel-lpss: Add support for MacBookPro16,2 ICL-N UART commit

  • rk808: Add support for power off on RK817 commit

  • sprd: Add support for SC2730 PMIC commit

  • ti_am335x_tscadc: Add ADC1/magnetic reader support commit

  • tps80031: Remove driver commit

12.19. Inter-Integrated Circuit (I2C + I3C)

12.20. Hardware monitoring (hwmon)

  • Add Maxim MAX6620 hardware monitoring driver commit

  • dell-smm: Add support for fanX_min, fanX_max and fanX_target commit

  • lm90: Add basic support for TI TMP461 commit

  • mlxreg-fan: Add support for multiply PWM and extend the maximum number of tachometers commit, commit, commit

  • nct6683: Add another customer ID for NCT6683D sensor chip on some ASRock boards commit

  • nct6775: Add additional ASUS motherboards commit

  • nct6775: Support access via Asus WMI commit

  • nct6775: add Pro WS X570-ACE commit

  • nct6775: add ProArt X570-CREATOR WIFI commit

  • nct7802: Make temperature/voltage sensors configurable commit

  • occ: Provide the SBEFIFO FFDC in binary sysfs commit

  • pmbus/ibm-cffps: Add mfg_id debugfs entry commit

  • pmbus/lm25066: Support configurable sense resistor values commit

  • tmp401: Drop support for TMP461 commit

12.21. General Purpose I/O (gpio)

  • tegra186: Support multiple interrupts per bank commit

  • modepin: Add driver support for modepin GPIO controller commit

  • virtio: Add IRQ support commit

12.22. Leds

12.23. DMA engines

  • qcom: bam_dma: Add "powered remotely" mode commit

12.24. Cryptography hardware acceleration

  • hisilicon/qm: support the userspace task resetting commit

  • keembay-ocs-ecc: Add Keem Bay OCS ECC Driver commit

12.25. PCI

12.26. FRU Support Interface (FSI)

  • sbefifo: Add sysfs file indicating a timeout error commit

12.27. Clock

  • imx: Add clock driver for imx8ulp commit

  • imx: Add the pcc reset controller support on imx8ulp commit

  • qcom: Add Global Clock Controller driver for QCM2290 commit

  • qcom: Add lpass clock controller driver for SC7280 commit

  • qcom: camcc: Add camera clock controller driver for SC7280 commit

  • qcom: gcc-msm8994: Add proper msm8992 support commit

  • qcom: gdsc: enable optional power domain support commit

  • qcom: smd-rpm: Add QCM2290 RPM clock support commit

  • renesas: r8a779a0: Add RPC support commit

  • renesas: rzg2l: Add SDHI clk mux support commit

  • samsung: Introduce Exynos850 clock driver commit

  • clk: samsung: add common support for CPU clocks commit

  • uniphier: Add NX1 clock support commit

  • ux500: Add driver for the reset portions of PRCC commit

12.28. PHY ("physical layer" framework)

  • HiSilicon: Add driver for Kirin 970 PCIe PHY commit

  • cadence-torrent: Add support to output received reference clock commit

  • qcom-qmp: Add QCM2290 USB3 PHY support commit

  • stm32: add phy tuning support commit

12.29. Various

13. List of Pull Requests

14. Other news sites

KernelNewbies: LinuxChanges (last edited 2022-01-09 22:55:57 by diegocalleja)