Linux 5.0 has been released
Summary: This release includes support for energy-aware scheduling which wakes up tasks to the more energy-efficient CPUs in phones; it also includes adiantum file system encryption for low power devices; it adds support in the amdgpu driver for AMD Freesync (variable refresh rate); it adds support for Receive Offload and MSG_ZEROCOPY
New version 5.0
This release increases the major version number to 5. This change does not mean anything and does not affect programs in any way, it just makes Linus happy.
Energy-aware Scheduling for Arm big.LITTLE
This release includes the energy-aware scheduling feature, which lets the task scheduler to take scheduling decisions that will result in lower power usage on asymmetric SMP platforms - such as waking up tasks to the more energy-efficient CPUs first. This feature is important to achieve better power management in phones using Arm's big.LITTLE CPUs. This feature is a simplified version of the energy-aware scheduling that is currently part of the AOSP Common Kernel.
Recommended LWN article: Energy-aware scheduling on asymmetric systems
Code: commit
Adiantum file system encryption for low power devices
This release adds support for the Adiantum encryption. Note that this encryption mode is not added to ecryptfs but to fscrypt, the kernel funcionality which filesystems (currently ext4, f2fs and ubifs) can hook into to support transparent encryption of files and directories.
Adiantum was developed to provide filesystem encryption for low-end Android devices that lack AES instructions. On ARM Cortex-A7, on 4096-byte messages Adiantum encryption is about 4 times faster than AES-256-XTS encryption; decryption is about 5 times faster. See the google security blog
Recommended LWN article: Adiantum: encryption for the low end
Code: commit
Support for AMDGPU FreeSync
This release adds support for FreeSync
Variable refresh rate capable displays can dynamically adjust their refresh rate by extending the duration of their vertical front porch until page flip or timeout occurs. This can reduce or remove stuttering and latency in scenarios where the page flip does not align with the vblank interval. An example scenario would be an application flipping at a constant rate of 48Hz on a 60Hz display. The page flip will frequently miss the vblank interval and the same contents will be displayed twice. This can be observed as stuttering for content with motion. If variable refresh rate was active on a display that supported a variable refresh range from 35Hz to 60Hz no stuttering would be observable for the example scenario.
Code: commit
UDP Generic Receive Offload and MSG_ZEROCOPY support
This release adds support of GRO (Generic Receive Offload) in the UDP implementation. A new sockopt ({{{UDP_GRO}}}) has been added to enable GRO support. Future enachements will enable UDP GSO offload on more virtual devices eventually even on forwarded packets.
This release also expands {{{MSG_ZEROCOPY}}} support for UDP. Recommended LWN article: Zero-copy networking
Code: GRO commit
Support cpuset resource controller in cgroupv2
The cpuset controller provides a mechanism for constraining the CPU and memory node placement of tasks to only the resources specified in the cpuset interface files in a task's current cgroup. This is especially valuable on large NUMA systems where placing jobs on properly sized subsets of the systems with careful processor and memory placement to reduce cross-node memory access and contention can improve overall system performance.
This release enables cpuset controller in cgroup v2, with a minimal set of features.
Code: commit
Btrfs swap file support
Btrfs removed support for swap files a decade ago. However, now the proper restrictions are in place, Btrfs can support swap files. The swap file must be fully allocated as "nocow" with no compression on one device.
Code: commit
binderfs, a binder filesystem to run multiple instances of Android
This release includes binderfs, a pseudo-filesystem for the Android Binder IPC driver. Each ipc namespace will mount a new binderfs instance. It is backwards compatible, and it allows to run multiple of Android. Each binderfs mount initially only contains a binder-control device. It can be used to dynamically allocate new binder IPC devices via ioctls.
Code: commit
ARM pointer authentication
The ARMv8.3 Pointer Authentication extension adds primitives that can be used to mitigate certain classes of attack where an attacker can corrupt the contents of some memory (e.g. the stack). The extension uses a Pointer Authentication Code (PAC) to determine whether pointers have been modified unexpectedly. A PAC is derived from a pointer, another value (such as the stack pointer), and a secret key held in system registers.
The extension adds instructions to insert a valid PAC into a pointer, and to verify/remove the PAC from a pointer. The PAC occupies a number of high-order bits of the pointer, which varies dependent on the configured virtual address size and whether pointer tagging is in use. A subset of these instructions have been allocated from the HINT encoding space. In the absence of the extension (or when disabled), these instructions behave as NOPs. Applications and libraries using these instructions operate correctly regardless of the presence of the extension.
For more details see the documentation: Documentation/arm64/pointer-authentication.txt
Code: commit