Linux 4.18 has been released on 12 August, 2018.
Summary: This release includes the new "Restartable sequences" system call, which makes easier to write scalable userspace code; support for unprivileged mounts; the beginning of bpfilter project that aims to provide netfilter functionality using BPF; a zero-copy TCP receive API; a new AF_XDP address family for high performance networking; support for the future AMD ATI Vega20; support for the qualcomm Snapdragon 845 SoC; and many new drivers and other improvements.
Contents
- Prominent features
- Core (various)
- File systems
- Memory management
- Block layer
- Tracing and perf
- Virtualization
- Cryptography
- Security
- Networking
- Architectures
-
Drivers
- Graphics
- Storage
- Drivers in the Staging area
- Networking
- Audio
- Tablets, touch screens, keyboards, mouses
- TV tuners, webcams, video capturers
- Universal Serial Bus
- Serial Peripheral Interface (SPI)
- ACPI, EFI, cpufreq, thermal, Power Management
- Real Time Clock (RTC)
- Voltage, current regulators, power capping, power supply
- Pin Controllers (pinctrl)
- Multi Media Card (MMC)
- Memory Technology Devices (MTD)
- Industrial I/O (iio)
- Pulse-Width Modulation (PWM)
- Inter-Integrated Circuit (I2C)
- Hardware monitoring (hwmon)
- Leds
- Cryptography hardware acceleration
- PCI
- Clock
- Various
- List of merges
- Other news sites
1. Prominent features
1.1. Restartable sequences for easier lockless concurrency in user space
Synchronizing per-cpu operations from user-space is hard, because processes are liable to be pre-empted or change cpus at any time. Adding safety to the user-space code (atomic operations) is expensive, and disabling preemption in user space is not an option.
Restartables sequences allow user-space to perform update operations on per-cpu data without requiring heavy-weight atomic operations. Each thread is allowed to register one userspace memory area that should be run by the same CPU; if the thread is preempted the thread can restart the operation. Using rseq with per-cpu memory pools in jemalloc at Facebook improved the production workload response-time 1-2% gain avg. latency, and the P99 overall latency drops by 2-3%.
Recommended LWN article: Restartable sequences
Slides: LPC - PerCpu Atomics.pdf
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
1.2. Support for unprivileged mounts
In this release, root users inside a private namespace (eg. container) are allowed to mount file systems.
Recommended LWN article: Unprivileged file system mounts
Code: commit, commit, commit, commit, commit, commit, commit
1.3. bpfilter, BPF based networking filtering
The bpfilter project aims to implement netfilter compatible functionality using the BPF machinery. This release adds the first skeleton of kernel code.
Recommended LWN article: BPF comes to firewalls
1.4. Zero-copy TCP receive API
Linux 4.14 added support for zero-copy of data when sending to the network, this release adds a zero-copy API for the receiving side.
Recommended LWN article: Zero-copy TCP receive, A reworked TCP zero-copy receive API
Code: commit, commit, commit, commit, commit, commit
1.5. AF_XDP for high performance networking
Introduce AF_XDP support, a new address family that is optimized for high performance packet processing and zero-copy semantics. Programs using AF_XDP sockets will now receive RX packets without any copies and can also transmit packets without incurring any copies.
Recommended LWN article: Accelerating networking with AF_XDP
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit zero-copy commit, commit, commit, commit, commit, commit, commit, commit, commit
1.6. Support for the future AMD ATI Vega20
This release includes support for the future Vega 20.
1.7. Qualcomm Snapdragon 845 support
The convergence between vendor Android kernel code and the mainline kernel is improving; as proof of that this release adds support for Qualcomm SDM845, a.k.a Snapdragon 845, an 4+4-core Kryo 385/845 (Cortex-A75/A55 derivative) SoC that's one of the current high-end mobile SoCs. A lot of peripherals are not yet in the DTs but driver support for USB, GPU and other pieces are starting to trickle in. It also adds support for the MTP development board
Code: commit
2. Core (various)
(FEATURED) Add support for restartable sequences commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
(FEATURED) Asynchronous I/O: add workqueue based fsync offload commit, commit, commit, commit, commit, commit, commit
(FEATURED) Add support for unprivileged mounts commit, commit, commit, commit, commit, commit, commit
task scheduler: Stagger NUMA balancing scan periods for new threads commit
scripts: Add SPDX checker script commit
Align the seccomp logging behavior for both audited and unaudited processes. It also emits an audit record, if auditing is enabled, when the kernel.seccomp.actions_logged sysctl is written to so that there's a paper trail when entire actions are quieted commit, commit, commit
Add support to collect hardware logs in crash recovery kernel commit, commit, commit
signalfd: Add support for SIGSYS commit
connector: add parent pid and tgid to coredump and exit events commit
3. File systems
- BTRFS
Add support for the FS_IOC_FSGETXATTR ioctl commit
Allow users to enumerate subvolumes with 3 new unprivileged ioctls commit, commit, commit
Allow empty subvol= again commit
dedupe_file_range ioctl: remove 16MiB restriction commit
Allow rmdir(2) to delete an empty subvolume commit
send: improved speed when dealing with a large removed directory, measurements show decrease from 2000 minutes to 2 minutes on a directory with 2 million entries commit
Pre-commit check of superblock to detect a mysterious in-memory corruption commit
sysfs: Add entry which shows if rmdir can work on subvolumes commit
- XFS
Add mount delay debug option, similar to log_recovery_delay, this delay occurs between the VFS superblock being initialised and the xfs_mount being fully initialised commit
Support fallocated swapfiles commit
Ability to relabel mounted filesystems commit
Implement the metadata repair ioctl flag commit
Use FUA for pure data O_DSYNC DIO writes commit
- CIFS
- AFS
- UDF
- FSCRYPT
Add Speck128/256 support commit
- F2FS
Add fsync_mode=nobarrier for non-atomic files commit
4. Memory management
Restructuration of struct page, to give more contiguous usable space to users who have allocated a struct page for their own purposes. Recommended LWN article: Willy's memory-management to-do list. commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
memcg: introduce the memory.min interface. It works very similarly to memory.low (sharing the same hierarchical behavior), except that it's not disabled if there is no more reclaimable memory in the system commit
memcg: allow lowering memory.swap.max below the current usage commit
memcg: implement memory.swap.events. Add swap max and fail events so that userland can monitor and respond to running out of swap commit, commit
shmem: make stat.st_blksize return huge page size if THP is on commit
Reduce the number of TLB shootdowns commit
Take better advantage of general huge page clearing optimization commit
5. Block layer
Add sysfs entry for fua support commit
dm: add writecache target. The writecache target caches writes on persistent memory or SSD. It is intended for databases or other programs that need extremely low commit latency commit
loop: Add LOOP_SET_BLOCK_SIZE in compat ioctl commit
zram: zram memory tracking. It provides a debugfs /sys/kernel/debug/zram/zram0/block_state to represent each block's state so admin can investigate what memory is cold|incompressible|same page with using pagemap once the pages are swapped out commit, commit, commit, commit
6. Tracing and perf
Support perf annotate --group for non-explicit recorded event "groups", showing multiple columns, one for each event, just like when dealing with explicit event groups commit
perf buildid-cache: Support --list option option to list all valid cached files commit
perf buildid-cache: Support --purge-all option to remove all files from cache commit
perf script: Show symbol offsets by default commit
perf script: Show virtual addresses instead of offsets commit
perf stat: Add --interval-clear option to clear the screen before next interval commit
perf stat: Add --table option to display time of each run commit
perf stat: Display user and system time commit
Add infrastructure to help in writing eBPF C programs to be used with '-e name.c' type events in tools such as 'record' and 'trace', with headers for common constructs and an examples directory that will get populated as we add more such helpers and the 'perf bpf' commit, commit, commit, commit, commit
tracing: Allow writing to the trace_markers file initiate triggers defined in tracefs/ftrace/print/trigger file. This will allow of user space to trigger the same type of triggers (including histograms) that the trace events use commit
7. Virtualization
Enable virtio_net to act as a standby for a passthru device. The main motivation for this patch is to enable cloud service providers to provide an accelerated datapath to virtio-net enabled VMs in a transparent manner with no/minimal guest userspace changes. This also enables hypervisor controlled live migration to be supported with VMs that have direct attached SR-IOV VF devices commit, commit, commit, commit, commit
xen-front: Add support for Xen para-virtualized frontend display driver commit
virtio_pci: support enabling VFs commit
xen: add IOCTL_PRIVCMD_MMAP_RESOURCE, a new HYPERVISOR_memory_op to support direct priv-mapping of certain guest resources (such as ioreq pages, used by emulators) by a tools domain, rather than having to access such resources via the guest P2M commit
xen-front: Add Xen sound para-virtualized frontend driver commit, commit, commit, commit, commit
8. Cryptography
zstd: Add zstd support commit
aegis: Add the AEGIS family of AEAD algorithms (AEGIS-128, AEGIS-128L, and AEGIS-256) commit
9. Security
apparmor: add support for mapping between the secid and the label, and along with it a basic ability to provide secctx conversion commit
apparmor: add the ability to get a task's secid commit
EVM: Allow runtime modification of the set of verified xattrs commit
integrity: Add an integrity directory in securityfs commit
allocation overflow detection helpers commit
Remove open-coded multiplication from memory allocation arguments commit, commit
10. Networking
- TCP
(FEATURED) Add zero copy receive commit, commit, commit, commit, commit, commit
Implement SACK compression commit, commit, commit, commit, commit, commit
Default RACK loss recovery (implements the features correspond to the draft-ietf-tcpm-rack-03 version of the RACK draft) commit, commit, commit, commit, commit, commit, commit
Tracking TCP data delivery and ECN stats commit, commit, commit, commit
Add the TCP_INQ socket option to TCP. When this socket option is set, recvmsg() relays the number of bytes available on the socket for reading to the application via the TCP_CM_INQ control message. This way applications with many concurrent connections, high variance in receive queue length and tight memory bounds can allocate worst-case buffer size to drain sockets. Knowing the size of receive queue length, applications can optimize how they allocate buffers to read from the socket commit
Extend tcp_tw_reuse sysctl to enable loopback only optimization commit
- UDP:
Generic Segmentation Offload support. Segmentation offload reduces cycles/byte for large packets by amortizing the cost of protocol stack traversal. A process can concatenate and submit multiple datagrams to the same destination in one send call by setting socket option SOL_UDP/UDP_SEGMENT with the segment size, or passing an analogous cmsg at send time commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Enable UDP checksum offload for ESP commit
- BPF
(FEATURED) Add skeleton of bpfilter kernel module: it builds experimental bpfilter framework that is aiming to provide netfilter compatible functionality via BPF commit, commit
Introduce BTF: BPF Type Format. It is the meta data format which describes the data types of BPF program/map. Hence, it basically focus on the C programming language which the modern BPF is primary using. The first use case is to provide a generic pretty print capability for a BPF map commit, commit, commit, commit, commit, commit, commit, commit, commit
Introduce BTF ID - an ID for each loaded BTF program commit, commit, commit, commit, commit, commit
Enhancements for multi-function programs commit, commit, commit, commit, commit, commit, commit, commit
Introduce seg6local End.BPF action with the corresponding new BPF program type BPF_PROG_TYPE_LWT_SEG6LOCAL commit, commit, commit, commit, commit, commit
Hooks for sys_sendmsg similar to existing hooks for sys_bind and sys_connect commit, commit, commit, commit
Allows the BPF loader to figure out the btf_key_id and btf_value_id from a map's name by using BPF_ANNOTATE_KV_PAIR commit, commit
Allow map helpers access to map values directly commit
Introduce bpf subcommand BPF_TASK_FD_QUERY to show which bpf program is attached to which tracepoint/kprobe/uprobe commit, commit, commit, commit, commit
Support offload of bpf_event_output() commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
(FEATURED) Introducing AF_XDP support, a new address family that is optimized for high performance packet processing and zero-copy semantics. Programs using AF_XDP sockets will now receive RX packets without any copies and can also transmit packets without incurring any copies commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit zero-copy commit, commit, commit, commit, commit, commit, commit, commit, commit
- Wireless (802.11)
- packet scheduler
cls_flower: Support multiple masks per priority commit
ipconfig: NTP server support commit, commit, commit, commit, commit, commit, commit, commit
IPv4/v6: extends ip route get to match on sport and dport commit, commit
IPv6: send netlink notifications for manually configured addresses commit
Introduce adaptive TX interrupt moderation to net Dynamic Interrupt Moderation library commit, commit
routing: Add address attribute (IFA_RT_PRIORITYto control metric of prefix route. For use cases such as VRR (Virtual Router Redundancy) interface managers want efficient control over the order of prefix routes when multiple interfaces have addresses with overlapping/duplicate subnets commit, commit, commit, commit, commit, commit, commit
Add a generic infrastructure to offload TLS crypto to a network devices. It enables the kernel TLS socket to skip encryption and authentication operations on the transmit side of the data path. Leaving those computationally expensive operations to the NIC commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
IPv6 GRE tunnel: Add GRO support, significantly improves performance in case GRO in native interface is disabled commit
- netfilter
Add NAT support for shifted portmap ranges commit
ipvs: Implement the Google's Maglev hashing algorithm as a IPVS scheduler. Basically it provides consistent hashing but offers some special features about disruption and load balancing commit, commit, commit
nf_tables: add support for native socket matching commit
nf_tables: Add audit support to log statement commit
nf_tables: add connlimit support commit
nf_tables: initial support for extended ACK reporting commit
Add support for map lookups to numgen, random and hash expressions commit, commit, commit
Extend availability of PHY statistics commit, commit, commit, commit, commit, commit, commit, commit
bridge: add support for port isolation. Isolated ports cannot communicate between each other, but they can still communicate with non-isolated ports commit
Distributed Switch Architecture: adds PHYLINK support to DSA which is necessary to support more complex PHY and pluggable modules setups commit, commit, commit, commit, commit, commit, commit, commit, commit
virtual routing and forwarding: add CRC32c offload to device features commit
tun: allow ethtool to change tun link settings commit
qrtr: Expose tunneling endpoint to user space commit
SCTP: allow unsetting sockopt MAXSEG commit
TIPC: Confifuration of MTU for media UDP commit, commit, commit
TIPC: introduce ioctl for fetching node identity commit
rfkill: Create rfkill-none LED trigger commit
- Infiniband
Add verbs flow counters support. It allows user space applications to monitor real time traffic activity and events of the verbs objects it manages, e.g.: ibv_qp, ibv_wq, ibv_flow commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
MPLS and GRE flow specifications commit, commit, commit, commit, commit, commit, commit
- SMC
11. Architectures
- ARM
- Device Tree Sources
SoC: Amlogic Meson 8M2 SoC, a.k.a. S812. A quad Cortex-A9 SoC used in some set top boxes and other products commit
SoC: Mediatek MT7623A, which is a flavor of the MT7623 family with other on-chip ethernet options commit
(FEATURED) SoC: Qualcomm SDM845, a.k.a Snapdragon 845, an 4+4-core Kryo 385/845 (Cortex-A75/A55 derivative) SoC that's one of the current high-end mobile SoCs. A lot of peripherals are not yet in the DTs but driver support for USB, GPU and other pieces are starting to trickle in. Add also support for the MTP development board
- Device Tree Sources