Linux 5.3 changelog.

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

Aditionally, 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()

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

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.

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.

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.

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

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

8. Core (various)

9. File systems

10. Memory management

11. Block layer

12. Tracing, perf and BPF

13. Virtualization

14. Cryptography

15. Security

16. Networking

17. Architectures

18. ARM


20. S390

21. X86

22. ARC

23. CSKY

24. Drivers

25. Graphics

26. Storage

27. Drivers in the Staging area

28. Networking

29. Audio

30. Tablets, touch screens, keyboards, mouses

31. TV tuners, webcams, video capturers

32. Universal Serial Bus

33. Serial Peripheral Interface (SPI)

34. Watchdog

35. Serial

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

37. Real Time Clock (RTC)

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

39. Pin Controllers (pinctrl)

40. Multi Media Card (MMC)

41. Memory Technology Devices (MTD)

42. Industrial I/O (iio)

43. Multi Function Devices (MFD)

44. Pulse-Width Modulation (PWM)

45. Inter-Integrated Circuit (I2C + I3C)

46. Hardware monitoring (hwmon)

47. General Purpose I/O (gpio)

48. Leds

49. DMA engines

50. Hardware Random Number Generator (hwrng)

51. Cryptography hardware acceleration

52. PCI

53. Clock

54. PHY ("physical layer" framework)

55. EDAC (Error Detection And Correction)

56. Non-Transparent Bridge (NTB)

57. Various

58. List of merges

59. Other news sites

KernelNewbies: Linux_5.3 (last edited 2019-09-15 17:52:02 by diegocalleja)