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.1 was released on Sun, 11 December 2022.

Summary: This release includes initial support for the Rust programming language; an optional MGLRU memory management algorithm that provides better memory management performance; a kernel memory sanitizer for improved memory safety debugging; memory tiering improvements; allow processes to voluntary collapse memory into a transparent hugepage; new BPF features such as a panic helper; better Btrfs performance overall; a Maple tree data structure with better algorithmic properties than red-black trees; support for per-cgroup Pressure Stall Information and a new IRQ/SoftIRQ PSI indicator. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. Initial support for the Rust programming language

This release adds support for the Rust programming language. Rust aims to provide a modern system programming language with provable memory safety, without the use of a garbage collector, thus eliminating an entire class of bugs, which are the most common source of security vulnerabilities.

This release includes some initial support for Rust, which will be improved in later releases.

Recommended LWN article

1.2. Multi-generational LRU for better memory management

When programs try to use more memory than what it's available, the Linux kernel needs to take a decision about which parts of memory, and from which program(s), move to swap or evict from memory. This process decides the kernel’s caching policy and ability to overcommit memory.

The current memory management subsystem in Linux attempts to make the right decision by keeping LRU (Least Recently Used) lists of pages. However, this method does not always make the best decisions. The multi-generation LRU is an alternative LRU implementation that optimizes page reclaim and improves performance under memory pressure. This implementation does not replace the current memory management scheme, it can be configured at compilation time.

Recommended LWN article

Another recommended LWN article

Admin guide

Design documentation

1.3. KMSAN, a kernel memory sanitizer

KMSAN is a dynamic error detector aimed at finding uses of uninitialized values. It is based on compiler instrumentation, and is quite similar to the userspace MemorySanitizer tool.

An important note is that KMSAN is not intended for production use, because it drastically increases kernel memory footprint and slows the whole system down.

Documentation

Recommended LWN article

1.4. Support for KCFI, a forward-edge control-flow integrity scheme

Add support for KCFI, a forward-edge control-flow integrity scheme in the upcoming Clang 16 release, which is more suitable for kernel use than the existing CFI scheme used by CONFIG_CFI_CLANG. KCFI doesn't require LTO, doesn't alter function references to point to a jump table, and won't break function address equality. This replaces the current arm64 CFI implementation with KCFI and adds support for x86_64.

1.5. Memory tiering improvements

In modern systems, RAM can be distributed in several chips that can be accessed at a faster or slightly slower speed depending on the CPU accessing it. Modern systems are adding even more RAM tiers. This means that placement of a memory page that belongs to one node or another can severly impact performance.

This release includes a couple of improvements to the memory management subsystem. The first one is a new algorithm that helps to identify which pages are "hot" in a node so the system can promote/demote hot/cold pages to the appropriate nodes. The second change makes the tiering information available to userspace, and lets users configure it.

Recommended LWN article

1.6. BPF features: panic helper, PKCS#7 signature verification, memory allocator

As usual, this release includes a few BPF features:

  • Some debugging techniques require a memory dump, this release allows to trigger a panic from eBPF so that the memory state can be dumped at the right moment Recommended LWN article

  • Because some type of BPF programs can attach to kprobe and fentry, they can run in unknown context where calling plain kmalloc() might not be safe. For this reason a small buffer of memory is reserved to allow allocation in these contexts Recommended LWN article

  • There also other features, like functions PKCS#7 signature verification or an user-space-publisher ring buffer map type.

1.7. Maple trees, a more efficient tree data structure

The maple tree is an RCU-safe range based B-tree designed to use modern processor cache efficiently. There are a number of places in the kernel that a non-overlapping range-based tree would be beneficial, especially one with a simple interface. Users of an rbtree with other data structures to improve performance or an interval tree to track non-overlapping ranges will benefit the most from maple trees.

Recommended LWN article

1.8. Allow a process to induce collapsing of memory into transparent hugepages

This release provides a mechanism for userspace to induce a collapse of eligible ranges of memory into transparent hugepages in process context, thus permitting users to more tightly control their own hugepage utilization policy at their own expense. The proposed interface adds a new madvise(2) mode, MADV_COLLAPSE, and leverages the new process_madvise(2) call.

Recommended LWN article

1.9. PSI improvements: per-cgroup PSI, IRQ/SoftIRQ PSI, optimizations

The Pressure Stall Information provides a detailed view of the current resource usage in the system. This release includes support for optional per-cgroup PSI accounting (with some overhead), a new PSI_IRQ to IRQ/SOFTIRQ pressure, and some optimizations

1.10. Btrfs performance improvements

This release incorporates a few changes that will make Btrfs much faster when doing asynchronous buffered I/O using io_uring, also improved performance during normal buffered I/O, drastically faster lseek and FIEMAP (extent mapping information), preparations for a separate block group tree that will speed up mount times, improved inode logging (+25% faster dbench performance, -21% max latency), and other changes

2. Core (various)

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. RISCV

10.5. POWERPC

  • Stolen time accounting for VIRT_CPU_ACCOUNTING_GEN commit, commit, commit, commit

  • Support execute-only memory on the Radix MMU commit

  • microwatt: Add LiteX MMC driver commit

  • Add support for early debugging via Serial 16550 console commit

  • Enable KFENCE on book3s64 commit

10.6. S390

10.7. MIPS

  • Allow firmware to pass RNG seed to kernel commit

10.8. M68K

  • Allow kexec on M68KCLASSIC with MMU enabled only commit

10.9. MICROBLAZE

  • Add support for error injection commit

10.10. UM

10.11. XTENSA

  • Add FDPIC and static PIE support for noMMU commit

10.12. ALPHA

  • Add full ioread64/iowrite64 implementation commit

11. Drivers

11.1. Graphics

  • amdgpu
  • Intel
    • Expose per-gt RPS defaults in sysfs commit

    • Meteorlake and later support DP 2.0 commit

    • Support for version reduced and multiple firmware files commit

    • Add new ADL-S pci id commit

    • Meteorlake enablement
  • msm
    • Add fault-injection support commit

  • ingenic
    • Add support for the JZ4760(B) commit

  • radeon
    • Drop legacy MST support commit

  • mediatek
  • vkms
  • rcar-du
  • rockchip
  • ast
    • Add resolution support for 1152x864@75 commit

  • bridge
    • anx7625: Support HDMI_I2S audio format commit

    • ti-sn65dsi86: Support DisplayPort (non-eDP) mode commit

  • panfrost
    • Add support for devcoredump commit

  • dyndbg: add drm.debug style (drm/parameters/debug) bitmap support commit

  • fourcc
  • hdmi: Add audio_infoframe packing for DP commit

  • panel

11.2. Power Management

  • EFI
  • ACPI
    • AMBA: Add ARM DMA-330 controller to the supported list commit

    • resource: Add ASUS model S5402ZA to quirks commit

    • video: Add Apple GMUX brightness control detection commit

    • video: Add Nvidia WMI EC brightness control detection commit

  • pm-graph v5.10 commit

  • tools/power turbostat
    • Add support for MeteorLake platforms commit

    • Add support for RPL-S commit

  • intel-speed-select: Release v1.13 commit

11.3. Storage

11.4. Drivers in the Staging area

  • fwserial: delete the driver commit

  • media: atomisp: Remove watchdog timer commit

  • media: av7110: move to staging/media/deprecated/saa7146 commit

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

  • Add ABS_PROFILE to uapi and documentation commit

  • Add IBM Operation Panel driver commit

  • adc-joystick: add polled input device support commit

  • adp5588-keys refactor and fw properties support
  • adp5588-keys: add regulator support commit

  • adp5588-keys: add support for fw properties commit

  • mt6779-keypad: support double keys matrix commit

  • mtk-pmic-keys: add support for MT6331 PMIC keys commit

  • pinephone-keyboard: add PinePhone keyboard driver commit

  • rt5120: add power key support commit

  • synaptics: enable InterTouch for the ThinkPad P1 G3 commit

  • xpad: Add X-Box Adaptive Controller support commit, commit, commit

  • xpad: add support for XBOX One Elite paddles commit

  • xpad: add supported devices as contributed on github commit

  • HID
    • Add driver for PhoenixRC Flight Controller commit

    • Add driver for VRC-2 Car Controller commit

    • XP-PEN Deco Pro S support commit, commit, commit, commit, commit, commit, commit, commit

    • logitech-hidpp: Detect hi-res scrolling support commit

    • playstation: add initial DualSense Edge controller support commit, commit

    • playstation: stop DualSense output work on remove commit

    • saitek: add madcatz variant of MMO7 mouse device ID commit

    • topre: Add driver fixing report descriptor commit

    • wacom: Add new Intuos Pro Small (PTH-460) device IDs commit

11.8. TV tuners, webcams, video capturers

11.9. Universal Serial Bus

  • chipidea: Add support for VBUS control with PHY commit

  • dwc3: pci: Add PCIe device ID for USB3 controller on CPU sub-system for Alder Lake P commit

  • dwc3: xilinx: add power management ops support commit

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

  • host: npcm: Add NPCM8XX support commit

  • serial: ftdi_sio: add support for HP and HA devices commit

  • serial: ftdi_sio: assume hi-speed type commit

  • serial: option: add Sierra Wireless EM9191 commit

  • serial: option: add u-blox LARA-L6 modem commit

  • serial: option: add u-blox LARA-R6 00B modem commit

  • serial: qcserial: add new usb-id for Dell branded EM7455 commit

  • typec: tcpci_rt1711h: Add compatible with rt1715 commit, commit, commit, commit, commit, commit, commit

  • typec: tcpci_mt6370: Add MediaTek MT6370 tcpci driver commit

11.10. Serial Peripheral Interface (SPI)

  • npcm-pspi: Add NPCM845 peripheral SPI support commit

  • microchip-core-qspi: Add support for microchip fpga qspi controllers commit

  • intel: Add support for second flash chip commit

11.11. Watchdog

  • Exar/MaxLinear XR28V38x driver commit

  • imx93: add watchdog timer on imx93 commit

  • rzg2l_wdt: Add rzv2m support commit

  • s3c2410_wdt: support exynosautov9 watchdog commit

  • sp5100_tco: Add "action" module parameter commit

  • w83627hf_wdt: add bootstatus support commit

  • Add tracing events for the most usual watchdog events commit

11.12. Serial

  • Deassert Transmit Enable on probe in driver-specific way commit

  • atmel: Make the driver aware of the existence of GCLK commit

11.13. CPU Frequency scaling

  • Add support for precision boost hardware control for AMD processors commit, commit, commit, commit, commit

  • amd-pstate: add amd-pstate driver parameter for mode selection commit

  • intel_pstate: Add Tigerlake support in no-HWP mode commit

  • tegra194: Add support for Tegra239 commit

  • qcom-cpufreq-hw: Add cpufreq qos for LMh commit

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

  • power
    • supply: mt6370: Add MediaTek MT6370 charger driver commit

    • supply: Add charger driver for Rockchip RK817 commit

    • reset: qcom-pon: add support for qcom, pmk8350-pon compatible string commit

    • supply: bq25890: Add support for setting IINLIM commit

  • regulator
    • Add driver for MT6332 PMIC regulators commit

    • qcom_smd: Add PM6125 RPM regulators commit

    • qcom_spmi: Add support for LDO_510 and FTSMPS commit

    • qcom_spmi: Add PM6125 PMIC support commit

    • Add driver for MT6331 PMIC regulators commit

    • Add TI TPS65219 PMIC regulators support commit

    • qcom_spmi: Add support for HFSMPS regulator type commit

11.15. Pin Controllers (pinctrl)

  • Add Cypress cy8c95x0 support commit

  • cy8c95x0: support ACPI device found on Galileo Gen1 commit

  • mediatek: add mt8188 driver commit

  • qcom: Add sc8280xp lpass lpi pinctrl driver commit

  • qcom: Add sm8450 lpass lpi pinctrl driver commit

  • qcom: spmi-gpio: add support for LV_VIN2 and MV_VIN3 subtypes commit

  • rockchip: Add RV1126 pinctrl support commit

11.16. Multi Media Card (MMC)

  • mtk-sd: Add support for MT6795 Helio X10 commit

  • meson-gx: add SDIO interrupt support commit

11.17. Memory Technology Devices (MTD)

  • ubi: fastmap: Add fastmap control support for 'UBI_IOCATT' ioctl commit

  • parsers: add Broadcom's U-Boot parser commit

  • Add ECC error accounting for each read request commit

  • mtdchar: add MEMREAD ioctl commit

  • rawnand: brcmnand: Add individual glue driver selection commit

11.18. Industrial I/O (iio)

11.19. Multi Function Devices (MFD)

  • mt6370: Add MediaTek MT6370 support commit

  • ocelot: Add support for the vsc7512 chip via spi commit

  • qcom-spmi-pmic: Add support for PMP8074 commit

  • rk808: Add Rockchip rk817 battery charger support commit

  • rt5120: Add Richtek PMIC support commit

11.20. Inter-Integrated Circuit (I2C + I3C)

  • cadence: Add standard bus recovery support commit

  • microchip: pci1xxxx: Add driver for I2C host controller in multifunction endpoint of pci1xxxx switch commit

  • mlxbf: add multi slave functionality commit

  • mlxbf: support BlueField-3 SoC commit

  • mlxbf: support lock mechanism commit

  • rk3x: Add rv1126 support commit

11.21. Hardware monitoring (hwmon)

  • Add max31760 fan speed controller driver commit

  • aquacomputer_d5next: Add support for Aquacomputer High Flow Next commit

  • aquacomputer_d5next: Add support for reading virtual temp sensors commit

  • corsair-psu: Add USB id of the new HX1500i psu commit

  • corsair-psu: add USB id of new revision of the HX1000i psu commit

  • corsair-psu: add reporting of rail mode via debugfs commit

  • emc2305: add support for EMC2301/2/3/5 RPM-based PWM Fan Speed Controller commit

  • max31790: add fanN_enable commit

  • mr75203
    • Add VM active channel support commit

    • Add VM pre-scaler x2 support commit

    • Add debugfs to read and write temperature coefficients commit

    • Add support for series 6 temperature equation commit

  • pmbus: Add driver for the TEXAS TPS546D24 Buck Converter commit

  • asus_wmi_ec_sensors: remove driver commit

11.22. General Purpose I/O (gpio)

  • gpio-f7188x: Add GPIO support for Nuvoton NCT6116 commit

  • imx-scu: add imx-scu GPIO driver commit

  • pca953x: Add support for PCAL6534 commit

  • pca953x: introduce support for nxp,pcal6408 commit

  • gpio-adp5588: drop the driver commit

11.23. Leds

  • simatic-ipc-leds-gpio: add new model 227G commit

11.24. DMA engines

11.25. Cryptography hardware acceleration

11.26. PCI

  • qcom: Add support for SA8540P commit

  • qcom: Add support for SC8280XP commit

  • aardvark: Add support for PCI Bridge Subsystem Vendor ID on emulated bridge commit

  • imx6: Add i.MX8MP PCIe support commit

  • qcom-ep: Add support for SM8450 SoC commit

11.27. Thunderbolt

11.28. Clock

  • Renesas versaclock7 ccf device driver commit

  • bcm: rpi: Add support HEVC clock commit

  • bcm: rpi: Add support for VEC clock commit

  • mediatek: Add MediaTek Helio X10 MT6795 clock drivers commit

  • mediatek: add driver for MT8365 SoC commit

  • microchip: add PolarFire SoC fabric clock support commit

  • microchip: mpfs: add reset controller commit

  • qcom
  • rockchip: Add clock controller support for RV1126 SoC commit

  • sprd: Add clocks support for UMS512 commit

  • vc5: Add support for IDT/Renesas VersaClock 5P49V6975 commit

11.29. PHY ("physical layer" framework)

  • Add RGMII support on lan966x commit

  • lan966x: add support for QUSGMII commit

  • rockchip: Support PCIe v3 commit

  • rockchip: add support for the rk356x variant to rockchip-inno-csidphy commit

  • rockchip: inno-dsidphy: Add support for rk3568 commit

  • ti: gmii-sel: Add support for CPSW5G GMII SEL in J7200 commit

  • ti: phy-j721e-wiz.c: Add usxgmii support in wiz driver commit

  • usb: Add USB2.0 phy driver for Sunplus SP7021 commit

11.30. EDAC (Error Detection And Correction)

  • ie31200: Add Skylake-S support commit

  • i10nm: Add driver decoder for Ice Lake and Tremont CPUs commit

  • sb_edac: Add row column translation for Broadwell commit

  • skx_common: Add ChipSelect ADXL component commit

11.31. Various

  • counter: Add support for Counter array components commit, commit, commit, commit, commit

  • extcon: usbc-tusb320: Add USB TYPE-C support commit

  • firmware/psci: Add debugfs support to ease debugging commit

  • firmware: xilinx: add support for sd/gem config commit

  • fpga: dfl-pci: Add IDs for Intel N6000, N6001 and C6100 cards commit

  • habanalabs
    • gaudi2: Add secured attestation info uapi commit

    • gaudi2: New API to control engine cores running mode commit

    • Add uapi to retrieve engines status commit

    • Expose device security status through sysfs commit

    • Expose device security status using info ioctl commit

  • hwtracing: hisi_ptt: Add trace and tune function support for HiSilicon PCIe Tune and Trace device commit, commit

  • irqchip: Add IMX MU MSI controller driver commit

  • mei: debugfs: add pxp mode to devstate in debugfs commit

  • memory: brcmstb_memc: Add Broadcom STB memory controller driver commit

  • memory: mtk-smi: mt8188: Add SMI Support commit

  • misc: microchip: pci1xxxx: load auxiliary bus driver for the PIO function in the multi-function endpoint of pci1xxxx device commit

  • parport: add support for Netmos device 9900 commit

  • pcmcia: remove AT91RM9200 Compact Flash driver commit

  • pcmcia: remove VR41XX PCMCIA driver commit

  • regmap: Support accelerated noinc operations commit

  • regmap: mmio: Support accelerared noinc operations commit

  • remoteproc: Introduce rproc features commit

  • remoteproc: Support attach recovery after rproc crash commit

  • reset: add polarfire soc reset support commit

  • speakup-dummy: Add support for PUNCT variable commit

  • speakup_soft: Add direct module parameter commit

  • vDPA: allow userspace to query features of a vDPA device commit

  • vdpa: device feature provisioning commit, commit, commit

  • watchdog: Add tracing events for the most usual watchdog events commit

  • iio: Add new event type gesture and use direction for single and double tap commit

  • iio: core: Introduce _zeropoint for differential channels commit

12. List of Pull Requests

13. Other news sites

KernelNewbies: LinuxChanges (last edited 2022-12-12 23:01:40 by diegocalleja)