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.15 was released on Sunday, 31 Oct 2021.

Summary: This release adds a new NTFS read-write implementation; support for putting all the processes within a cgroup in the SCHED_IDLE scheduling class; Btrfs support for fs-verity and id mapping; support for the DAMON, which allows to monitor memory access patterns of specific processes; a new in-kernel SMB 3 server; a new process_mrelease(2) system call to let service managers release process resources faster; support for migrating memory pages to persistent memory instead of discarding them; support in the Device Mapper for IMA-based remote attestation; support for avoiding scheduling 32 bits tasks on 64-bit only CPUS in systems with mixed CPUs. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. New NTFS file system implementation

The Linux kernel already has a NTFS implementation, but it has severe limitations (like being read-only), which is why Linux users usually use the userspace ntfs-3g implementation. This release incorporates a new and fully functional NTFS implementation contributed by Parangon Software. This implementation supports NTFS file system versions up to 3.1, normal/compressed/sparse files and journal replaying, plus other features that will be added in the future.

1.2. ksmbd, a in-kernel SMB 3 server

ksmbd is a new kernel module which implements the server-side of the SMB 3 protocol. The target is to provide optimized performance, GPLv2 SMB server, and better lease handling (distributed caching). The bigger goal is to add new features more rapidly (e.g. RDMA aka "smbdirect", and recent encryption and signing improvements to the protocol).

This is not meant to replace Samba, which is much broader in scope -tools, security services, LDAP, Active Directory Domain Controller, cross-platform support- but rather be an extension to allow better optimizing for Linux and have better performance and feature integration in some cases.

1.3. Migrate memory pages to persistent memory in lieu of discard

In systems with some DRAM and persistent memory, once DRAM fills up, reclaim will start and some of the DRAM contents will be thrown out. In this release, pages are migrated to persistent memory instead of just being dropped, which improves performance in many benchmarks run in these kind of systems.

Recommended LWN article: Top-tier memory management

1.4. Btrfs support for fs-verity and id mapping

In this release, Btrfs has added support for fs-verity, a generic layer already support by ext4 and F2FS which provides transparent integrity and authenticity protection of read-only files.

It also adds support for id-mapped mounts, which provides the ability to map the user and group id of one mount to another, and some performance improvements.

1.5. DAMON, a data access monitor

DAMON, which stands for Data Access MONitor, is a mechanism to monitor the memory access pattern of specific user-space processes. That is, it can tell you which parts of the memory of a process are being accessed all the time,and which ones are not being used at all. It is lightweight, both in terms of memory usage and CPU usage while analyzing the target process. It is one of the pieces of a project called Data Access-aware Operating System.

DAMON aims to be used by other parts of the kernel that may be merged in the future, but it also can provide information to userspace. You can use it to profile a program and obtain its access heathmap, using the complementary tool damo, find out how your program actually behaves in the real world, and identify the dynamic hotness of your data. You can use this information simply to profile what a process is actually doing, but you can also use it to optimize your program's memory behavior by using mlock() or madvise() with MADV_WILLNEED to lock hot data which you known is going to be used, and/or madvise() with MADV_PAGEOUT to make the system reclaim cold data as soon as possible.

1.6. Introduce process_mrelease(2) system call

In modern systems it's not unusual to have a component monitoring memory conditions of the system and tasked with keeping system memory pressure under control, and killing non-essential processes to free up memory for more important ones. Examples of this are Facebook's OOM killer daemon called oomd and Android's low memory killer daemon called lmkd.

Killing and freeing the resources of a process can be delayed for a long time for various reasons. The new process_mrelease(2) system call allows to release the memory of a dying process from the context of the caller. This way the memory is freed in a more controllable way with CPU affinity and priority of the caller. The workload of freeing the memory will also be charged to the caller.

Recommended LWN article: Hastening process cleanup with process_mrelease()

1.7. Real-time locking progress

The merge of the real-time set of patches continues making progress in every release. In this release, one of the most important pieces, the bulk of the locking code, has been merged. When PREEMPT_RT is enabled, the following locking primitives are substituted by RT-Mutex based variants: mutex, ww_mutex, rw_semaphore, spinlock and rwlock.

The SLUB slab allocator has also been modified to better deal with PREEMPT_RT.

1.8. cgroup support for SCHED_IDLE

This release adds support for putting all the tasks within an entire cgroup under the SCHED_IDLE class of the task scheduler, which means that they will only run if there are not other tasks waiting to run. A key difference with normal tasks set individually to SCHED_IDLE is that tasks within a cgroup set to SCHED_IDLE maintain their relative weights.

1.9. Device Mapper IMA-based remote attestation

This release adds the necessary infrastructure for IMA-based remote attestation. These changes are the basis for deploying DM-based storage in a remote "cloud" that must validate configurations end-users run to maintain trust. It allows supported DM targets' configurations to be measured via IMA. But the policy and enforcement (of which configurations are valid) is managed by something outside the kernel (e.g. Keylime). For more details see the Documentation

1.10. Support for asymmetric scheduling affinity

Some architectures, in particular ARM, have configurations where some CPUs support legacy 32 bits apps, but some CPUs are 64-bit only. This release adds support for scheduling 32 bits tasks exclusively in the CPUs that support legacy 32 bits tasks.

2. Core (various)

3. File systems

4. Memory management

5. Block Devices

6. Tracing, perf and BPF

be matched in synthetic events. There is one limitation - an event probe can not be attached to kprobe, uprobe or another event probe commit, commit, commit, commit, commit, commit, commit, commit, commit

7. Virtualization

8. Security

  • hardening: Introduce CONFIG_ZERO_CALL_USED_REGS which enables register zeroing on function exit commit

  • IMA: restrict the accepted digest algorithms for the security.ima xattr commit, commit, commit, commit, commit, commit

9. Networking

10. Architectures

10.1. x86

  • Conditionally flush the L1D cache commit, commit, commit, commit, commit, commit, commit

  • PCI
    • Add support for the ALi M1487 (IBC) PIRQ router commit

    • Add support for the Intel 82374EB/82374SB (ESC) PIRQ router commit

    • Add support for the Intel 82426EX PIRQ router commit

    • Add support for 0x22/0x23 port I/O configuration space commit

  • platform
    • msi: extend msi_irqs sysfs entries to platform devices commit

    • Add Alder Lake PCH-S support to PMC core driver commit, commit, commit

    • BIOS SAR driver for Intel M.2 Modem commit

    • acer-wmi: Add Turbo Mode support for Acer PH315-53 commit

    • Add meraki-mx100 platform driver commit

    • asus-nb-wmi: Allow configuring SW_TABLET_MODE method with a module option commit

    • gigabyte-wmi: add support for B450M S2H V2 commit

    • gigabyte-wmi: add support for B550I Aorus Pro AX commit

    • gigabyte-wmi: add support for X570 GAMING X commit

    • lg-laptop: Support for battery charge limit on newer models commit

    • think-lmi: add debug_cmd commit

    • asus-wmi: Support for ASUS egpu, dpgu disable, panel overdrive commit, commit, commit

    • asus-wmi: Add support for platform_profile commit

  • powercap: Add Power Limit4 support for Alder Lake SoC commit

  • KVM
  • perf
  • crypto: Introduce x86 assembler accelerated implementation for SM4 algorithm commit, commit, commit, commit

  • hwmon: k10temp Add support for yellow carp commit

10.2. ARM

10.3. ARC

10.4. S390

  • Add HWCAP_S390_PCI_MIO to ELF hwcaps commit

  • Add support for KFENCE commit

  • Enable KCSAN commit

  • cio: add dev_busid sysfs entry for each subchannel commit

  • debug: add early tracing support commit

  • ftrace: implement hotpatching commit

  • qeth: remove OSN support commit

  • Remove xpram device driver commit

  • Report more CPU capabilities commit

10.5. PowerPC

  • Book3S HV: XIVE: Add support for automatic save-restore commit

  • Add MSI IRQ domains to PCI drivers commit, commit, commit, commit, commit

  • pseries: Add support for FORM2 associativity commit

  • ptdump: Convert powerpc to GENERIC_PTDUMP commit

  • Retire sbc8548 board support commit

  • Retire sbc8641d board support commit

10.6. RISC-V

  • Enable Undefined Behavior Sanitizer UBSAN commit

  • Improve stack randomisation on RV64 commit

  • Support allocating gigantic hugepages using CMA commit

  • Add support for hugepage migration commit

  • kprobes: implement the auipc instruction commit and the branch instructions commit

10.7. MIPS

  • Retire MACH_PISTACHIO commit

  • Allow generating FIT image for Marduk board commit

10.8. M68K

  • m5441x: add flexcan support commit

11. Drivers

11.1. Graphics

11.2. Power management

  • ACPI: iASL: Add support for the AEST table (data compiler) commit

  • ACPI: Add LoongArch support for ACPI_PROCESSOR/ACPI_NUMA commit

  • ACPI: SPCR: Add support for the new 16550-compatible Serial Port Subtype commit

  • thermal
    • intel: Allow processing of HWP interrupt commit

    • rcar_gen3_thermal: Add support for hardware trip points commit

    • tegra: Add driver for Tegra30 thermal sensor commit

    • intel: Add TCC cooling support for AlderLake platform commit

    • qcom: Add support for LMh driver commit

11.3. Storage

  • nvmem: nintendo-otp: Add new driver for the Wii and Wii U OTP commit

  • SCSI
    • ufs: Add Host Performance Booster Support commit, commit, commit

    • ufs: Add fault injection support commit

    • ufs: Add lu_enable sysfs node commit

    • lpfc: add support the Congestion Management Framework (CMF) commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

    • lpfc: Add PCI ID support for LPe37000/LPe38000 series adapters commit

    • lpfc: Add 256 Gb link speed support commit

    • target: tcmu: Add new feature KEEP_BUF commit

    • smartpqi: Add PCI IDs for H3C P4408 controllers commit

    • smartpqi: Add PCI IDs for new ZTE controllers commit

    • smartpqi: Add PCI ID for new ntcom controller commit

    • smartpqi: Add SCSI cmd info for resets commit

    • mpt3sas: Add io_uring iopoll support commit

    • mpt3sas: Use firmware recommended queue depth commit

    • mpt3sas: Introduce sas_ncq_prio_supported sysfs sttribute commit

    • qedi: Add support for fastpath doorbell recovery commit

    • qla2xxx: Changes to support kdump kernel commit

    • qla2xxx: Changes to support kdump kernel for NVMe BFS commit

    • sd_zbc: Support disks with more than 2**32 logical blocks commit

  • libata: Introduce ncq_prio_supported sysfs attribute commit

  • nvme: allow user toggling hmb usage commit

11.4. Drivers in the Staging area

  • rtl8723bs: add get_channel cfg80211 implementation commit

  • mfd: hi6421-spmi-pmic: move driver from staging commit

  • r8188eu: add newer/better RTL8188eu driver commit, commit, commit, commit, commit, commit, commit

  • media: hantro: Add support for the Rockchip PX30 commit

  • media: hantro: Add H.264 support for Rockchip VDPU2 commit, commit

  • media: imx: add a driver for i.MX8MQ mipi csi rx phy and controller commit

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

  • mms114: support MMS134S commit

  • ixp4xx-beeper: delete driver commit

  • Remove dead CSR Prima2 PWRC driver commit

  • HID
    • amd_sfh: Add command response to check command status commit

    • amd_sfh: Add support for PM suspend and resume commit

    • cmedia: add support for HS-100B mute button commit

    • logitech-hidpp: battery: provide CAPACITY property for newer devices commit

    • magicmouse: high-resolution scroll threshold commit

    • sony: support for the ghlive ps4 dongles commit

    • wacom: Add new Intuos BT (CTL-4100WL/CTL-6100WL) device IDs commit

11.8. TV tuners, webcams, video capturers

  • Intra-refresh period control commit, commit, commit

  • TDA1997x: enable EDID support commit

  • ccs: Implement support for manual LP control commit

  • dvbsky: add support for MyGica T230C2_LITE and T230A commit

  • i2c: Add imx335 camera sensor driver commit

  • i2c: Add imx412 camera sensor driver commit

  • i2c: Add ov9282 camera sensor driver commit

  • rc: introduce Meson IR TX driver commit

  • ti-vpe: cal: add embedded data support commit

  • venus: venc: add support for V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM control commit

11.9. Universal Serial Bus

  • dwc3: pci: add support for AMD's newer generation platform commit

  • gadget: f_uac1: add volume and mute support commit

  • gadget: f_uac2: add volume and mute support commit

  • gadget: u_audio: add bi-directional volume and mute support commit

  • serial: cp210x: add ID for GW Instek GDM-834x Digital Multimeter commit

  • serial: option: add Telit LN920 compositions commit

  • serial: option: add device id for Foxconn T99W265 commit

  • serial: option: add Telit LE910Cx composition 0x1204 commit

  • serial: option: add prod. id for Quectel EG91 commit

  • serial: option: add Quectel EC200S-CN module support commit

  • serial: qcserial: add EM9191 QDL support commit

  • xhci-mtk: support option to disable usb2 ports commit

  • host: remove dead EHCI support for on-chip PMC MSP71xx USB controller commit

11.10. IOMMU

11.11. Serial Peripheral Interface (SPI)

  • mediatek: add tick_delay support commit

  • rockchip-sfc: add rockchip serial flash controller commit

  • sprd: Add ADI r3 support commit

  • spi-altera-dfl: support n5010 feature revision commit

11.12. Watchdog

  • bd70528 drop bd70528 support commit

  • mediatek: mt8195: add wdt support commit

11.13. Serial

  • amba-pl011: add RS485 support commit

  • samsung: Add Exynos850 SoC data commit

11.14. CPU frequency scaling

  • qcom-cpufreq-hw: Add dcvs interrupt support commit

  • mediatek-hw: Add support for CPUFREQ HW commit

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

  • power
    • supply: PCHG: Peripheral device charger commit

    • supply: max17042_battery: Add support for MAX77849 Fuel-Gauge commit

    • supply: mt6360_charger: add MT6360 charger support commit

    • reset: linkstation-poweroff: add new device commit

    • supply: rn5t618: Add voltage_now property commit

    • supply: smb347-charger: Implement USB VBUS regulator commit

    • reset: Add TPS65086 restart driver commit

  • regulator
    • da9063: Add support for full-current mode commit

    • bd718x7: Suopport configuring UVP/OVP state commit

    • rt6752: Add support for Richtek RTQ6752 commit

    • rtq2134: Add support for Richtek RTQ2134 SubPMIC commit

11.16. Real Time Clock (RTC)

  • rx8025: implement RX-8035 support commit

11.17. Pin controllers (pinctrl)

  • Add Intel Keem Bay pinctrl driver commit

  • Ingenic: Add pinctrl driver for X2100 commit

  • imx8ulp: Add pinctrl driver support commit

  • pinctrl-zynq: Add support for 'power-source' parameter commit

  • qcom: Add MDM9607 pinctrl driver commit

  • qcom: pinctrl: Add pinctrl driver for sm6115 commit

  • renesas: Add RZ/G2L pin and gpio controller driver commit

  • renesas: r8a77995: Add bias pinconf support commit

  • samsung: Add Exynos850 SoC specific data commit

  • stm32: Add STM32MP135 SoC support commit

11.18. Multi Media Card (MMC)

  • dw_mmc: Add data CRC error injection commit

  • pwrseq: sd8787: add support for wilc1000 commit

11.19. Memory Technology Devices (MTD)

  • spinand: macronix: Add Quad support for serial NAND flash commit

  • rfd_ftl: add discard support commit

11.20. Industrial I/O (iio)

  • Support reading extended name as label commit

  • accel: bmc150: Add support for BMC156 commit

  • adc: Add driver for Renesas RZ/G2L A/D converter commit

  • adc: rockchip_saradc: add support for rk3568 saradc commit

  • chemical: Add driver support for sgp40 commit

  • adc: ingenic: add JZ4760 support to the sadc driver commit

  • adc: ingenic: add JZ4760B support to the sadc driver commit

  • potentiometer: Add driver support for AD5110 commit

  • proximity: vcnl3020: add periodic mode commit

11.21. Multi Function Devices (MFD)

  • Add Renesas Synchronization Management Unit (SMU) support commit

  • intel-lpss: Add Intel Cannon Lake ACPI IDs commit

  • tqmx86: Add support for TQMx110EB and TQMxE40x commit

  • tqmx86: Add support for TQ-Systems DMI IDs commit

11.22. Inter-Integrated Circuit (I2C + I3C)

  • virtio: add a virtio i2c frontend driver commit

  • Remove dead PMC MSP TWI/SMBus/I2C driver commit

11.23. Hardware monitoring (hwmon)

  • Add driver for Aquacomputer D5 Next commit

  • Add support for SB-RMI power module commit

  • axi-fan-control: Support temperature vs pwm points commit

  • intel-m10-bmc-hwmon: add n5010 sensors commit

  • k10temp: support Zen3 APUs commit

  • pmbus/bpa-rs600: Support BPD-RS600 commit

11.24. General Purpose I/O (gpio)

  • Add virtio-gpio driver commit

  • rockchip: add driver for rockchip gpio commit

  • rockchip: support next version gpio controller commit

11.25. LEDs

  • leds-core: Implement the retain-state-shutdown property commit

  • pwm: add support for default-state device property commit

  • pca955x: Implement the default-state property commit == DMA engines ==

  • idxd: Add wq occupancy information to sysfs attribute commit

  • idxd: Set defaults for GRPCFG traffic class commit

  • idxd: add software command status commit

  • idxd: create dmaengine driver for wq 'device' commit

  • idxd: create user driver for wq 'device' commit

  • Add support for AMD PTDMA controller driver commit, commit, commit

  • sh: Add DMAC driver for RZ/G2L SoC commit

11.26. Hardware Random Number Generator (hwrng)

  • Add Arm SMCCC TRNG based driver commit

11.27. Cryptography hardware acceleration

  • hisilicon: support runtime PM for accelerator device commit

  • hisilicon: using 'debugfs_create_file' instead of 'debugfs_create_regset32' commit

  • ccp: Add support for new CCP/PSP device ID commit

11.28. PCI

11.29. Clock

  • rockchip: Add support for hclk_sfc on rk3036 commit

  • qcom: gpucc-sm8150: Add SC8180x support commit

  • qcom: a53-pll: Add MSM8939 a53pll support commit

  • qcom: Add Global Clock Controller driver for MSM8953 commit

  • qcom: Add Global Clock controller (GCC) driver for SM6115 commit

  • qcom: mmcc-msm8994: Add MSM8992 support commit

  • qcom: Add msm8994 MMCC driver commit

  • qcom: rpmh: Add support for RPMH clocks on SM6350 commit

  • qcom: Add SM6350 GCC driver commit

11.30. PHY ("physical layer" framework)

  • phy-mtk-tphy: add support mt8195 commit

  • qcom-qmp: Add sc8180x PCIe support commit

  • qcom-qmp: Add support for SM6115 UFS phy commit

  • qcom-qmp: add USB3 PHY support for IPQ6018 commit

  • qcom: qmp: Add SC8180x USB/DP combo commit

  • renesas: phy-rcar-gen3-usb2: Add USB2.0 PHY support for RZ/G2L commit

  • samsung-ufs: support exynosauto ufs phy driver commit

11.31. EDAC (Error Detection And Correction)

  • i10nm: Retrieve and print retry_rd_err_log registers commit

  • mc: Add new HBM2 memory type commit

11.32. Various

12. List of pull requests

13. Other news sites

KernelNewbies: LinuxChanges (last edited 2021-11-11 15:29:14 by diegocalleja)