KernelNewbies:

Linux 5.3 was released on Sun, 15 Sep 2019.

Summary: This release includes support for AMD Navi GPUs; support for the umwait x86 instructions that let processes wait for short amounts of time without spinning loops; a 'utilization clamping' mechanism that is used to boost interactivity in the power-asymmetric CPUs used in phones; a new pidfd_open(2) system call that completes the work done to let users deal with the PID reuse problem; 16 millions of new IPv4 addresses in the 0.0.0.0/8 range are made available; support for Zhaoxin x86 CPUs; support Intel Speed Select for easier power selection in Xeon servers; and support for the lightweight hypervisor ACRN, built for embedded IoT devices. As always, there are many other new drivers and improvements.

1. Coolest features

1.1. New 'pidfd' functionality to help service managers to deal with PID reuse problems

To solve the issue of PID reuse in Unix systems, Linux 5.1 added the pidfd_send_signal(2), which let processes send signals to "pidfd" handles that are stable even after PID reuse. Linux 5.2 added the CLONE_PIDFD to clone(2), which let users to create PIDs that were usable with pidfd_send_signal(2). But there are many processes creates with fork() or clone() without CLONE_PIDFD, which can cause problems for the Android's low memory killer (LMK) or service managers such as systemd. To complete the functionality needed to deal with the PID reuse issue, this release adds the pidfd_open(2) syscall: It allows a caller to retrieve pollable pidfd's for a process which did not get created using the CLONE_PIDFD clone(2) flag.

Additionally, this release adds polling support for pidfds. This allows process managers to know when a (non-parent) process dies in a race-free way. The notification mechanism used follows the same logic that is currently used when the parent of a task is notified of a child's death. With this patchset it is possible to put pidfds in an {e}poll loop and get reliable notifications for process (i.e. thread-group) exit.

Recommended LWN article: New system calls: pidfd_open() and close_range()

1.2. Utilization clamping support in the task scheduler

This release adds utilization clamping support to the task scheduler. This is a refinement of the energy aware scheduling framework for power-asymmetric systems (like ARM big.LITTLE) added in Linux 5.0. Utilization clamping is a mechanism that allows to enforce a minimum and/or maximum frequency range, depending on which tasks are currently active on a CPU. The main use-cases for utilization clamping are: a) boost tasks which are directly affecting the user experience by running them at least at a minimum "requested" frequency, b) cap low priority tasks not directly affecting the user experience by running them only up to a maximum "allowed" frequency. Per-task clamping attributes can be set through sched_setattr(2). This feature intends to replace the hacks that Android had developed to achieve the same result.

Recommended LWN article: Scheduler utilization clamping

1.3. Support for AMD Navi GPUs

This release adds initial support for the AMD Navi GPUs in the amdgpu driver, these are the new AMD RX5700 GPUs that just recently became available. This released adds support for the core driver, displays (DCN2), GFX and compute (GFX10), System DMA (SDMA 5), Multimedia decode and encode (VCN2) and Power management.

1.4. Support for Zhaoxin x86 CPUs

This release adds support for Zhaoxin x86 Processors. Zhaoxin is a company created in 2013 as a joint venture between VIA Technologies and the Shanghai Municipal Government. The architecture of the ZX family of processors is a continuation of VIA's Centaur Technology x86-64 Isaiah design.

1.5. Support Intel Speed Select for easier power tuning

This release adds support for Intel Speed Select, a feature only supported on specific Xeon servers. It is a power management technology that lets users to configure their servers for throughput and per-core performance settings, allowing the prioritization of performance for certain workloads running on specific cores by sacrificing the performance of other cores.

1.6. Power efficient userspace waiting with the umwait x86 instructions

If an application needs to wait very short times they have to have a spinning loop, which consume power and hurt its thread siblings in a core with hyperthreads. This release enables userspace to use three new instructions that will be added to the upcoming Intel "Tremont" chips: umonitor, umwait and tpause; they let a userspace process wait for short amounts of time without spinning loops, thus letting applications to do those short waits spending less power and not impacting the performance of other hypertreads.

Recommended LWN article: Short waits with umwait

1.7. A few millions of new IPv4 addresses

This release contains a trivial, but impacting change: The 0.0.0.0/8 IPv4 range will be accepted by Linux (despite not being declared as such in standards) as a valid address range, allowing for 16 million new IPv4 addresses.

The IPv4 address space includes hundreds of millions of addresses reserved for obscure, or obsolete reasons, or for "future use". Instead of leaving these IP addresses unused, a IPv4 Cleanup Project has been have started to make them usable, generally. For more details, see this Potential IPv4 Unicast expansions talk.

1.8. Add the IoT ACRN supervisor

This release adds support of the ACRN hypervisor. ACRN is a flexible, lightweight reference hypervisor, built with real-time and safety-criticality in mind, optimized to streamline embedded development through an open source platform. It is built for embedded IoT with small footprint and real-time features. More details can be found in https://projectacrn.org/

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Cryptography

9. Security

10. Networking

11. Architectures

11.1. ARM

11.2. x86

11.3. PowerPC

11.4. S390

11.5. ARC

11.6. C-SKY

11.7. PA-RISC

11.8. RISC-V

11.9. UML

12. Drivers

12.1. Graphics

12.2. Storage

12.3. Drivers in the Staging area

12.4. Networking

12.5. Audio

12.6. Tablets, touch screens, keyboards, mouses

12.7. TV tuners, webcams, video capturers

12.8. Universal Serial Bus (USB)

12.9. Serial Peripheral Interface (SPI)

12.10. Watchdog

12.11. Serial

12.12. ACPI, EFI, cpufreq, thermal, Power Management

12.13. Real Time Clock (RTC)

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

12.15. Pin Controllers (pinctrl)

12.16. Multi Media Card (MMC)

12.17. Memory Technology Devices (MTD)

12.18. Industrial I/O (iio)

12.19. Multi Function Devices (MFD)

12.20. Pulse-Width Modulation (PWM)

12.21. Inter-Integrated Circuit (I2C + I3C)

12.22. Hardware monitoring (hwmon)

12.23. General Purpose I/O (gpio)

12.24. Leds

12.25. DMA engines

12.26. Hardware Random Number Generator (hwrng)

12.27. Cryptography hardware acceleration

12.28. PCI

12.29. Clock

12.30. PHY ("physical layer" framework)

12.31. EDAC (Error Detection And Correction)

12.32. Non-Transparent Bridge (NTB)

12.33. Various

13. List of merges

14. Other news sites

KernelNewbies: Linux_5.3 (last edited 2019-11-25 21:02:00 by diegocalleja)