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

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

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

6. Core (various)

7. File systems

8. Memory management

9. Block layer

10. Tracing, perf and BPF

11. Virtualization

12. Cryptography

13. Security

14. Networking

15. Architectures

16. ARM

17. POWERPC

18. S390

19. X86

20. ARC

21. CSKY

22. Drivers

23. Graphics

24. Storage

25. Drivers in the Staging area

26. Networking

27. Audio

28. Tablets, touch screens, keyboards, mouses

29. TV tuners, webcams, video capturers

30. Universal Serial Bus

31. Serial Peripheral Interface (SPI)

32. Watchdog

33. Serial

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

35. Real Time Clock (RTC)

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

37. Pin Controllers (pinctrl)

38. Multi Media Card (MMC)

39. Memory Technology Devices (MTD)

40. Industrial I/O (iio)

41. Multi Function Devices (MFD)

42. Pulse-Width Modulation (PWM)

43. Inter-Integrated Circuit (I2C + I3C)

44. Hardware monitoring (hwmon)

45. General Purpose I/O (gpio)

46. Leds

47. DMA engines

48. Hardware Random Number Generator (hwrng)

49. Cryptography hardware acceleration

50. PCI

51. Clock

52. PHY ("physical layer" framework)

53. EDAC (Error Detection And Correction)

54. Non-Transparent Bridge (NTB)

55. Various

56. List of merges

57. Other news sites

KernelNewbies: Linux_5.3 (last edited 2019-09-01 22:20:16 by diegocalleja)