KernelNewbies:

Changes done in each Linux kernel release. Other places to get news about the Linux kernel are LWN kernel status, H-Online, or the Linux Kernel mailing list (there is a web interface in www.lkml.org). 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.8 has been released on Sun, 2 Aug 2020.

Summary: This release adds: memory management changes to improve the behaviour of systems under thrashing situations; a event notification mechanism built on top of standard pipes that splices messages from the kernel into pipes opened by userspace; support for having different procfs mounts with different mount options each one; a Kernel Concurrency Sanitizer that helps to find data race bugs; make it possible to use pidfds with setns(2) for easier attachment to the namespaces of a process; support for Shadow Call Stack and Branch Target Identification in ARM64 to prevent security exploits; support for Inline Encryption hardware; new CAP_BPF and CAP_PERFMON capabilities for BPF and performance monitoring programs; and IPv6 MPLS support. As always, there are many other new drivers and improvements.

1. Prominent features

1.1. Better behavior in memory thrashing situations

The reclaim code that balances between swapping and cache memory reclaim tries to predict likely reuse of a memory page. When it fails it cannot detect when the cache is thrashing pathologically, or when the system is in the middle of a swap storm. This code has been tuned over time to a point where even in the presence of large amounts of cold anonymous memory and a capable swap device, the VM refuses to even seriously scan these pages, and can leave the page cache thrashing needlessly. The proliferation of fast random IO devices such as SSDs has made this undesirable behavior more noticeable.

This release sets out to address this. Since Linux 3.15, the kernel has exact tracking of refault IO - the ultimate cost of reclaiming the wrong pages. This allows to use an IO cost based balancing model that is more aggressive about scanning anonymous memory when the cache is thrashing, while being able to avoid unnecessary swap storms. This release base the LRU balance on the rate of refaults on each list, times the relative IO cost between swap device and filesystem (swappiness), in order to optimize reclaim for least IO cost incurred. The swapiness sysctl can also now be raised up to 200 to force the kernel to use swapping, which can be useful with in-memory swap, like zram or zswap.

1.2. Kernel Concurrency Sanitizer

The Kernel Concurrency Sanitizer (KCSAN) is a data race detector for the kernel. Key priorities in KCSAN's design are lack of false positives, scalability, and simplicity. KCSAN uses compile-time instrumentation to instrument memory accesses and it is supported in both GCC and Clang.

Documentation: The Kernel Concurrency Sanitizer (KCSAN)

Recommended LWN article: Concurrency bugs should fear the big bad data-race detector (part 1)

1.3. Kernel event notification mechanism

This release adds an event notification mechanism built on top of standard pipes, it splices notification messages from the kernel into pipes opened by userspace. The pipe is opened in a special mode, and its internal buffer is used to hold messages generated by the kernel, which are then read out by read(2). The owner of the pipe tells the kernel which sources it would like to watch through that pipe, and filters may also be emplaced on a pipe so that certain source types and subevents can be ignored if they’re not of interest. In this release, the only event source is for keys/keyrings, such as linking and unlinking keys and changing their attributes, which will be used by Gnome.

Documentation: General notification mechanism

Recommended LWN article: A kernel event notification mechanism

1.4. Private procfs instances

Procfs was historically tied to PID namespaces, this has the effect that all new procfs mounts are just a mirror of the internal one; any change, any mount option update, any new future introduction will propagate to all other procfs mounts in the same PID namespace.

This release allows to have several procfs mounts with different mounts options within the same PID namespace. The main aim of this work is to have on embedded systems one supervisor for apps. It also adds some convenient mount options that let a private procfs mount to show only ptraceable processes in the procfs, which allows to support lightweight sandboxes in Embedded Linux. Or a mount option that allows to hide non-pid inodes.

1.5. Using pidfds to attach to namespaces

This release makes it possible to use pidfds to attach to the namespaces of a process, i.e. they can be passed as the first argument to the setns(2) syscall. When a pidfd is passed, multiple namespace flags can be specified in the second argument and setns(2) will then attach the caller to all the specified namespaces all at once or to none of them. Eg: setns(pidfd, CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWNET);

These features support various use-cases where callers setns to a subset of namespaces to retain privilege, perform an action and then re-attach another subset of namespaces. Apart from reducing the number of syscalls needed to attach to all currently supported namespaces, this also allows to setns to a set of namespaces atomically, this is useful for a standard container manager interacting with a running container.

1.6. Shadow Call Stack and Branch Target Identification for improved security on ARM64

This release adds generic support for Clang's Shadow Call Stack on ARM64, which uses a shadow stack to protect function return control flow from buffer overruns on the main stack.

There is also support for ARMv8.5-BTI in both user- and kernel-space. This allows branch targets to limit the types of branch from which they can be called and additionally prevents branching to arbitrary code.

Recommended LWN article: Some near-term arm64 hardening patches

1.7. Support for Inline Encryption hardware

This release supports Inline Encryption in the block layer. Inline Encryption hardware allows software to specify an encryption context (an encryption key, crypto algorithm, data unit num, data unit size, etc.) along with a data transfer request to a storage device, and the inline encryption hardware will use that context to en/decrypt the data. The inline encryption hardware is part of the storage device, and it conceptually sits on the data path between system memory and the storage device.

Recommended LWN article: Inline encryption for filesystems

1.8. Introduce CAP_BPF and CAP_PERFMON security capabilities

Using BPF has required the CAP_SYS_ADMIN capability to run. This means that software that needs to use BPF needs that capability, which grants way too many privileges. This releases grants access to BPF functionality with a new CAP_BPF capability combined with CAP_PERFMON, CAP_NET_ADMIN and some of them kept under CAP_SYS_ADMIN. The user process has to have: CAP_BPF to create maps and do other sys_bpf() commands, CAP_BPF and CAP_PERFMON to load tracing programs, and CAP_BPF plus CAP_NET_ADMIN to load networking programs.

This release also adds the CAP_PERFMON capability for performance monitoring and observability.

Recommended LWN article: CAP_PERFMON — and new capabilities in general

1.9. IPv6 MPLS support

This release extends the Multi-Protocol Label Switching support to IPv6.

1.10. bridge: Add support for Media Redundancy Protocol (MRP)

This release adds support for the Media Redundancy Protocol is a data network protocol standardized by International Electrotechnical Commission as IEC 62439-2. It allows rings of Ethernet switches to overcome any single failure with recovery time faster than STP. It is primarily used in Industrial Ethernet applications.

2. Core (various)

3. File systems

4. Memory management

5. Block layer

  • loop: Add LOOP_CONFIGURE ioctl. This allows userspace to completely setup a loop device with a single ioctl, removing the in-between state where the device can be partially configured commit

  • Add support for Inline Encryption to the block layer. Inline Encryption hardware allows software to specify an encryption context (an encryption key, crypto algorithm, data unit num, data unit size, etc.) along with a data transfer request to a storage device, and the inline encryption hardware will use that context to en/decrypt the data. The inline encryption hardware is part of the storage device, and it conceptually sits on the data path between system memory and the storage device commit, commit, commit, commit, commit

  • Device Mapper
  • CEPH
  • bcache: asynchronous devices registration commit, commit

6. Tracing, perf and BPF

7. Virtualization

8. Cryptography

  • jitter: SP800-90B compliance commit

  • engine: support for parallel and batch requests commit, commit

9. Security

  • LSM: Add hook to set*gid syscalls commit

  • lockdown: Allow unprivileged users to see lockdown status commit

  • audit: log audit netlink multicast bind and unbind commit

  • apparmor: provides a /proc/self/attr/apparmor/ subdirectory. Enabling userspace to use the apparmor attributes without having to worry about collisions with selinux or smack on interface files in /proc/<pid>/attr commit

  • SELinux
    • A number of improvements to various SELinux internal data structures to help improve performance commit, commit, commit

    • Add a new SELinux policy version which allows for a more space efficient way of storing the filename transitions in the binary policy. Given the default Fedora SELinux policy with the unconfined module enabled, this change drops the policy size from ~7.6MB to ~3.3MB. The kernel policy load time dropped as well commit

10. Networking

11. Architectures

11.1. ARM

11.2. MIPS

11.3. X86

11.4. POWERPC

11.5. RISCV

11.6. S390

11.7. ARC

  • Allow users to specify -mcpu commit

  • Support loop buffer (LPB) disabling commit

11.8. M68K

  • mcf5441x: add support for esdhc mmc controller commit

11.9. SH

11.10. PARISC

  • Add sysctl file interface panic_on_stackoverflow commit

12. Drivers

12.1. Graphics

12.2. Power Management

12.3. Storage

12.4. Drivers in the Staging area

  • media: imx: imx7-mipi-csis: Add missing RAW formats commit, add support for 10-bit YUV 4:2:2 commit

  • atomisp: add support for different PMIC configurations commit

  • tegra-video: Add Tegra210 Video input driver commit

  • wfx: allow to join IBSS networks commit

  • wfx: add support for hardware revision 2 and further commit

12.5. Networking

12.6. Audio

12.7. Tablets, touch screens, keyboards, mouses

  • Add driver for the Cypress CY8CTMA140 touchscreen commit

  • Add support for Azoteq IQS269A commit

  • elan_i2c: add more hardware ID for Lenovo laptops commit

  • i8042: add Lenovo XiaoXin Air 12 to i8042 nomux list commit

  • mms114: add extra compatible for mms345l commit

  • synaptics: enable InterTouch for ThinkPad X1E 1st gen commit

  • Delete unused GP2AP002A00F driver commit

  • Remove msm-vibrator driver commit

  • HID
    • mcp2221: add GPIO functionality support commit

    • asus: Add support for multi-touch touchpad on Medion Akoya E1239T commit

12.8. TV tuners, webcams, video capturers

12.9. Universal Serial Bus

  • roles: Enable role-switch uevent reporting commit

  • chipidea: Enable user-space triggered role-switching commit

  • chipidea: introduce imx7d USB charger detection commit

  • chipidea: udc: add software sg list support commit

  • dwc3: gadget: Handle streams commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • dwc3: meson: add OTG support for GXL/GXM commit, commit, commit, commit, commit, commit, commit, commit

  • dwc3: Add support for DWC_usb32 IP commit

  • dwc3: pci: add support for the Intel Jasper Lake commit

  • dwc3: pci: add support for the Intel Tiger Lake PCH -H variant commit

  • gadget: tegra-xudc: Add Tegra194 support commit

  • Add XHCI, EHCI and OHCI support for Broadcom STB SoS's commit, commit, commit, commit

  • renesas-xhci: Add the renesas xhci driver commit

  • serial: ch341: add new Product ID for CH340 commit

  • serial: cypress_m8: enable Simply Automated UPB PIM commit

  • serial: option: add GosunCn GM500 series commit

  • serial: option: add Quectel EG95 LTE modem commit

  • serial: option: add Telit LE910C1-EUX compositions commit

  • serial: qcserial: add DW5816e QDL support commit

  • typec: mux: intel_pmc_mux: Support for static SBU/HSL orientation commit

  • xhci: Add support for Renesas controller with memory commit

12.10. Serial Peripheral Interface (SPI)

  • bcm-qspi: add support for MSPI sys clk 108Mhz commit

  • dw: Add Elkhart Lake PSE DMA support commit

  • dw: Add support for DesignWare DWC_ssi commit

  • dw: Add support for Intel Keem Bay SPI commit

  • dw-apb-ssi: Add Intel Keem Bay support commit

  • pxa2xx: Add support for Intel Tiger Lake PCH-H commit

  • spi-amd: Add AMD SPI controller driver support commit

  • spi-rockchip: add support for spi slave mode commit

  • spidev: Add support for Octal mode data transfers commit

  • stm32-qspi: Add pm_runtime support commit

12.11. Real Time Clock (RTC)

  • Add new VL flag for backup switchover commit

  • mt6397: Add support for the MediaTek MT6358 RTC commit

12.12. Pin Controllers (pinctrl)

  • intel: Add Intel Jasper Lake pin controller support commit

  • qcom: Add sm8250 pinctrl driver commit

  • sh-pfc: r8a7790: Add r8a7742 PFC support commit

12.13. Multi Media Card (MMC)

  • Export device/vendor ids from Common CIS for SDIO cards commit

  • Expose info about enhanced rpmb support commit

  • host: add Coldfire esdhc support commit

  • host: meson-mx-sdhc: new driver for the Amlogic Meson SDHC host commit

  • sdhci: arasan: Add support for Versal Tap Delays commit

  • sdhci-esdhc-imx: Add HS400 support for i.MX6SLL commit

  • sdhci-of-arasan: Add support for Intel Keem Bay commit

  • sdhci-of-dwcmshc: add suspend/resume support commit

  • sdhci-pci-gli: Add Genesys Logic GL9763E support commit

12.14. Memory Technology Devices (MTD)

  • MLC in SLC mode commit, commit, commit, commit, commit, commit, commit, commit

  • rawnand: Remove the cmx270 NAND controller driver commit

  • rawnand: arasan: Add new Arasan NAND controller commit

  • rawnand: arasan: Support the hardware BCH ECC engine commit

  • rawnand: brcmnand: support v2.1-v2.2 controllers commit

  • spi-nor: Add support for Cypress cy15x104q commit

  • spi-nor: Add support for s25fs128s1 commit

  • spi-nor: macronix: Add support for mx25l51245g commit

  • spi-nor: macronix: Add support for mx25u51245g commit

  • spi-nor: spansion: Enable dual and quad read for s25fl256s0 commit

12.15. Industrial I/O (iio)

  • Add SEMTECH SX9310/9311 sensor driver commit

  • accel: Add bma150 family support to bma180 commit, commit, commit, commit, commit, commit, commit

  • accel: st_sensors: add support for LIS2HH12 commit

  • adi-axi-adc,ad9647: Add support for AD9467 ADC commit, commit, commit, commit, commit, commit, commit, commit

  • adc: Add MAX1241 driver commit

  • adc: Add scaling support to exynos adc driver commit

  • adc: ad7476: Add AD7091 support commit

  • adc: mp2629: Add support for mp2629 ADC driver commit

  • bmg160: Add support for BMI088 chip commit

  • chemical: Add support for external Reset and Wakeup in CCS811 commit

  • chemical: add atlas-ezo-sensor initial support commit

  • chemical: atlas-sensor: add RTD-SM module support commit

  • imu: Add support for adis16475 commit

  • imu: inv_mpu6050: add debugfs register r/w interface commit

  • imu: st_lsm6dsx: Add sensor hub device LIS3MDL commit

  • light: cm32181: Add support for ACPI enumeration commit

  • light: cm32181: Add support for the CM3218 commit

  • magnetometer: ak8974: add Alps hscdtd008a commit

  • proximity: Add driver support for vcnl3020 proximity sensor commit

  • vcnl: Add interrupts support for VCNL4010/20 commit, commit, commit, commit, commit

12.16. Multi Function Devices (MFD)

  • Add Gateworks System Controller core driver commit

  • Add support for PMIC MT6360 commit

  • mp2629: Add support for mps battery charger commit

12.17. Pulse-Width Modulation (PWM)

  • Add support for Azoteq IQS620A PWM generator commit

  • jz4740: Add support for the JZ4725B commit

  • sun4i: Support direct clock output on Allwinner A64 commit

  • tegra: Support dynamic clock frequency configuration commit

12.18. Inter-Integrated Circuit (I2C + I3C)

  • Add Qualcomm CCI I2C driver commit

  • cadence: Added slave support commit

  • designware: Add Baikal-T1 System I2C support commit

  • designware: Allow slave mode for PCI enumerated devices commit

  • iproc: add support for SMBUS quick cmd commit

  • mediatek: Add i2c ac-timing adjust support commit

  • npcm7xx: Add Nuvoton NPCM I2C controller driver commit

  • npcm7xx: Add support for slave mode for Nuvoton commit

  • pxa: implement generic i2c bus recovery commit

  • slave-eeprom: add support for 24c512 EEPROMs commit

  • tegra: Add support for the VI I2C on Tegra210 commit

12.19. Hardware monitoring (hwmon)

  • Add amd_energy driver to report core and package energy sensors, based on RAPL MSR for AMD family 17h and above CPUs commit, commit

  • ina2xx: Implement alert functions commit

  • k10temp: Add AMD family 17h model 60h PCI match commit

  • lm70: Add support for ACPI commit

  • lm90: Add max6654 support to lm90 driver commit

  • nct7904: Add watchdog function commit

  • pmbus: Driver for Maxim MAX16601 commit

  • Add Gateworks System Controller support commit

  • hwmon: Add Baikal-T1 SoC Process, Voltage and Temp sensor support commit, commit

  • Add Baikal-T1 PVT sensor driver commit

12.20. General Purpose I/O (gpio)

  • gpio-f7188x: Add GPIO support for F81865 commit

  • Add GPIO Aggregator commit

12.21. Leds

  • Add aw2013 driver commit

  • Add sgm3140 driver commit

  • ariel: Add driver for status LEDs on Dell Wyse 3020 commit

12.22. DMA engines

  • idxd: export hw version through sysfs commit

12.23. Cryptography hardware acceleration

12.24. PCI

12.25. Non-Transparent Bridge (NTB)

  • intel: Add Icelake (gen4) support for Intel NTB commit

12.26. Thunderbolt

  • Add support for Intel Tiger Lake commit

12.27. Clock

  • Add Baikal-T1 SoC Clock Control Unit support commit, commit, commit, commit

  • Ingenic: Add CGU driver for X1830 commit

  • clk-si5341: Add support for the Si5345 series commit

  • intel: Add CGU clock driver for a new SoC commit

  • mediatek: Add MT6765 clock support commit

  • mmp2: Enable Audio and GPU on MMP2 and MMP3 commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • mmp2: Add audio clock controller driver commit

  • Add the missing clock drivers and dts nodes to enable the GPU on both SM8150 and SM8250
  • qcom: gcc-msm8939: Add MSM8939 Generic Clock Controller commit

  • qcom: gcc: Add GPU and NPU clocks for SM8150 commit

  • qcom: gcc: Add missing UFS clocks for SM8150 commit

  • Add GCC clock driver support commit, commit, commit

  • renesas: cpg-mssr: Add R8A7742 support commit

  • socfpga: agilex: add clock driver for the Agilex platform commit

  • tegra: Add custom CCLK implementation commit

  • tegra: Implement Tegra210 EMC clock commit

  • vc5: Add support for IDT VersaClock 5P49V6965 commit

  • timer-ti-dm: Add clockevent and clocksource support commit

12.28. PHY ("physical layer" framework)

  • Add driver for Qualcomm IPQ40xx USB PHY commit

  • cadence: salvo: add salvo phy driver commit

  • intel: Add driver support for ComboPhy commit

  • qcom-qmp: Add QMP V3 USB3 PHY support for SC7180 commit

  • qcom-qmp: Add SM8150 QMP USB3 PHY support commit

  • qcom-snps: Add SNPS USB PHY driver for QCOM based SOCs commit

  • ti: am654: add support for USB super-speed commit, show up in regmap debugfs commit

12.29. EDAC (Error Detection And Correction)

  • amd64: Add AMD family 17h model 60h PCI IDs commit

12.30. 1-Wire (W1)

  • w1_therm
    • Add alarm sysfs entry commit

    • Add bulk read support to trigger multiple conversion on bus commit

    • Add eeprom sysfs entry commit

    • Add ext_power sysfs entry commit

    • Add resolution sysfs entry commit

    • Add sysfs entry to output only temperature commit

12.31. Firmware

12.32. Various

  • habanalabs
    • Add GAUDI ASIC support. Similar to GOYA, GAUDI includes a set of eight TPC cores, a GEMM engine and DMA channels to move data between host and different memories of the ASIC. Each engine has a hardware queue manager (QMAN) attached to it, which exposes 4 streams to allow complex programs with control flows (in GOYA you had 1 stream per QMAN) commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

    • Add INFO IOCTL opcode for time sync information commit

    • Support hwmon_reset_history attribute commit

    • Add signal/wait to CS IOCTL operations commit, commit, commit, commit

    • Enable trace data compression (profiler) commit

  • Add Baikal-T1 SoC APB/AXI/L2 drivers commit, commit, commit, commit, commit

  • bus: Add driver for Integrator/AP logic modules commit

  • fpga: dfl: fme: add performance reporting support commit, commit

  • fpga: dfl: support multiple opens on feature device node commit

  • interconnect: Add imx support via devfreq commit, commit, commit, commit, commit

  • irqchip: Three Loongson irqchip support commit, commit, commit, commit, commit, commit

  • iommu: Add Allwinner H6 IOMMU driver commit

  • irqchip: RISC-V per-HART local interrupt controller driver commit

  • mailbox: Add support for Qualcomm IPCC commit

  • mailbox: imx: Support runtime PM commit

  • mailbox: qcom: Add ipq6018 apcs compatible commit

  • mailbox: sprd: Add Spreadtrum mailbox driver commit

  • mei: me: add tiger lake point device ids for H platforms commit

  • mfd: Add support for the MediaTek MT6358 PMIC commit

  • misc: pci_endpoint_test: Add Device ID for RZ/G2E PCIe controller commit

  • mptcp: add new sock flag to deal with join subflows commit

  • of: reserved-memory: Support lookup of regions by name commit

  • of: reserved-memory: Support multiple regions per device commit

  • opp: Add support for parsing interconnect bandwidth commit

  • opp: Expose bandwidth information via debugfs commit

  • pinctrl: imx: Add imx8dxl driver commit

  • ptp: Add adjphase function to support phase offset control commit

  • remoteproc: qcom: Add callbacks for remoteproc events commit, commit, commit

  • remoteproc: Add PAS and MSA based Modem support commit, commit, commit, commit, commit, commit, commit

  • remoteproc: Add support for runtime PM commit

  • remoteproc: ingenic: Added remoteproc driver commit

  • remoteproc: qcom: pas: Add SM8250 PAS remoteprocs commit

  • reset: hi6220: Add support for AO reset controller commit

  • reset: imx7: Add support for i.MX8MP SoC commit

  • scs: Add support for Clang's Shadow Call Stack (SCS) commit

  • spi: spidev_test: Add support for Octal mode data transfers commit

  • tee

13. List of Pull Requests

14. Other news sites

KernelNewbies: LinuxChanges (last edited 2020-08-03 18:31:03 by diegocalleja)