KernelNewbies:

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

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

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

7. Core (various)

8. File systems

9. Memory management

10. Block layer

11. Tracing, perf and BPF

12. Virtualization

13. Cryptography

14. Security

15. Networking

16. Architectures

17. ARM

18. POWERPC

19. S390

20. X86

21. ARC

22. CSKY

23. Drivers

24. Graphics

25. Storage

26. Drivers in the Staging area

27. Networking

28. Audio

29. Tablets, touch screens, keyboards, mouses

30. TV tuners, webcams, video capturers

31. Universal Serial Bus

32. Serial Peripheral Interface (SPI)

33. Watchdog

34. Serial

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

36. Real Time Clock (RTC)

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

38. Pin Controllers (pinctrl)

39. Multi Media Card (MMC)

40. Memory Technology Devices (MTD)

41. Industrial I/O (iio)

42. Multi Function Devices (MFD)

43. Pulse-Width Modulation (PWM)

44. Inter-Integrated Circuit (I2C + I3C)

45. Hardware monitoring (hwmon)

46. General Purpose I/O (gpio)

47. Leds

48. DMA engines

49. Hardware Random Number Generator (hwrng)

50. Cryptography hardware acceleration

51. PCI

52. Clock

53. PHY ("physical layer" framework)

54. EDAC (Error Detection And Correction)

55. Non-Transparent Bridge (NTB)

56. Various

57. List of merges

58. Other news sites

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