Linux 4.6 was released on Sun, 15 May 2016.
Summary: This release adds support for USB 3.1 SuperSpeedPlus (10 Gbps), the new distributed file system OrangeFS, a more reliable out-of-memory handling, support for Intel memory protection keys, a facility to make easier and faster implementations of application layer protocols, support for 802.1AE MAC-level encryption (MACsec), support for the version V of the BATMAN protocol, a OCFS2 online inode checker, support for cgroup namespaces, support for the pNFS SCSI layout, and many other improvements and new drivers.
Contents
-
Prominent features
- USB 3.1 SuperSpeedPlus (10 Gbps) support
- Improve the reliability of the Out Of Memory task killer
- Support for Intel memory protection keys
- OrangeFS, a new distributed file system
- Kernel Connection Multiplexor, a facility for accelerating application layer protocols
- 802.1AE MAC-level encryption (MACsec)
- BATMAN V protocol
- dma-buf: new ioctl to manage cache coherency between CPU and GPU
- OCFS2 online inode checker
- Support for cgroup namespaces
- Add support for the pNFS SCSI layout
- Core (various)
- File systems
- Memory management
- Block layer
- Cryptography
- Security
- Tracing and perf tool
- Virtualization
- Networking
- Architectures
-
Drivers
- Graphics
- Storage
- Staging
- Networking
- Audio
- Tablets, touch screens, keyboards, mouses
- TV tuners, webcams, video capturers
- USB
- Serial Peripheral Interface (SPI)
- Watchdog
- Serial
- ACPI, EFI, cpufreq, thermal, Power Management
- Real Time Clock (RTC)
- Voltage, current regulators, power capping, power supply
- Rapid I/O
- Pin Controllers (pinctrl)
- Memory Technology Devices (MTD)
- Multi Media Card
- Industrial I/O (iio)
- Multi Function Devices (MFD)
- Inter-Integrated Circuit (I2C)
- Hardware monitoring (hwmon)
- General Purpose I/O (gpio)
- Clocks
- PCI
- Various
- List of merges
- Other news sites
1. Prominent features
1.1. USB 3.1 SuperSpeedPlus (10 Gbps) support
USB 3.1 specification includes a new SuperSpeedPlus protocol supporting up to 10Gbps speeds. USB 3.1 devices using the new SuperSpeedPlus protocol are called USB 3.1 Gen2 devices (note that USB 3.1 SuperSpeedPlus is not the same as Type-C or power delivery).
This release adds support for the USB 3.1 SuperSpeedPlus 10 Gbps speeds for USB core and xHCI host controller, meaning that a USB 3.1 mass storage connected to a USB 3.1 capable xHCI host should work with 10 Gbps speeds.
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
1.2. Improve the reliability of the Out Of Memory task killer
In previous releases, the OOM killer (which tries to kill a task to free memory) tries to kill a single task in a good hope that the task will terminate in a reasonable time and frees up its memory. In practice, it has been shown that it's easy to find workloads which break that assumption, and the OOM victim might take unbounded amount of time to exit because it might be blocked in the uninterruptible state waiting for an event which is blocked by another task looping in the page allocator. This release adds a specialized kernel thread oom_reaper that tries to reclaim memory by preemptively reaping the anonymous or swapped out memory owned by the OOM victim, under an assumption that such a memory won't be needed when its owner is killed anyway.
Recommended LWN article: Toward more predictable and reliable out-of-memory handling
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit
1.3. Support for Intel memory protection keys
This release adds support for a memory protection hardware feature that is available in upcoming Intel CPUs: protection keys. Protection keys allow the encoding of user-controllable permission masks in the page table entries (pte). Instead of having a fixed protection mask in the pte (which needs a system call to change and works on a per page basis), the user can map a handful of protection mask variants. User space can then manipulate a new user-accessible, thread-local register, (PKRU) with two separate bits (Access Disable and Write Disable) for each mask. This makes possible to dynamically switch the protection bits of very large amounts of virtual memory by just manipulating a CPU register, without having to change every single page in the affected virtual memory range.
It also allows more precise control of MMU permission bits: for example the executable bit is separate from the read bit. This release adds the infrastructure for that, plus it adds a high level API to make use of protection keys. If a user-space application calls: mmap(..., PROT_EXEC) or mprotect(ptr, sz, PROT_EXEC) (note PROT_EXEC-only, without PROT_READ/WRITE), the kernel will notice this special case, and will set a special protection key on this memory range. It also sets the appropriate bits in the PKRU register so that the memory becomes unreadable and unwritable. So using protection keys the kernel is able to implement 'true' PROT_EXEC: code that can be executed, but not read, which is a small security advantage (but note that malicious code can manipulate the PKRU register too). In the future, there will further work around protection keys that will offer more high level call APIs to manage protection keys.
Recommended LWN article: Memory protection keys
Code: (merge)
1.4. OrangeFS, a new distributed file system
OrangeFS is an LGPL scale-out parallel storage system. Oiginally called PVFS, it was first developed in 1993 by Walt Ligon and Eric Blumer as a parallel file system for Parallel Virtual Machine as part of a NASA grant to study the I/O patterns of parallel programs. It is ideal for large storage problems faced by HPC, BigData, Streaming Video, Genomics, Bioinformatics. OrangeFS can be accessed through included system utilities, user integration libraries, MPI-IO and can be used by the Hadoop ecosystem as an alternative to the HDFS filesystem.
Applications often don't require Orangefs to be mounted into the VFS, but the Orangefs kernel client allows Orangefs filesystems to be mounted as a VFS. The kernel client communicates with a userspace daemon which in turn communicates with the Orangefs server daemons that implement the file system. The server daemons (there's almost always more than one) need not be running on the same host as the kernel client. Orangefs filesystems can also be mounted with FUSE.
Recommended LWN article: The OrangeFS distributed filesystem
Documentation: Documentation/filesystems/orangefs.txt
Website: http://www.orangefs.org/
Code: fs/orangefs
1.5. Kernel Connection Multiplexor, a facility for accelerating application layer protocols
This release adds Kernel Connection Multiplexor (KCM), a facility that provides a message-based interface over TCP for accelerating application layer protocols. The motivation for this is based on the observation that although TCP is byte stream transport protocol with no concept of message boundaries, a common use case is to implement a framed application layer protocol running over TCP. Most TCP stacks offer byte stream API for applications, which places the burden of message delineation, message I/O operation atomicity, and load balancing in the application.
With KCM an application can efficiently send and receive application protocol messages over TCP using a datagram interface. The kernel provides necessary assurances that messages are sent and received atomically. This relieves much of the burden applications have in mapping a message based protocol onto the TCP stream. KCM also make application layer messages a unit of work in the kernel for the purposes of steerng and scheduling, which in turn allows a simpler networking model in multithreaded applications. In order to delineate message in a TCP stream for receive in KCM, the kernel implements a message parser based on BPF, which parses application layer messages and returns a message length. Nearly all binary application protocols are parseable in this manner, so KCM should be applicable across a wide range of applications.
For development plans, benchmarks and FAQ, see the merge
Recommended LWN article: The kernel connection multiplexer
API documentation: Documentation/networking/kcm.txt
Code: commit, commit, commit, commit, commit, commit, commit
1.6. 802.1AE MAC-level encryption (MACsec)
This release adds support for MACsec IEEE 802.1AE, a standard that provides encryption over ethernet. It encrypts and authenticate all traffic in a LAN with GCM-AES-128. It can protect DHCP traffic and VLANs, prevent tampering on ethernet headers. MACsec is designed to be used with the MACsec Key Agreement protocol extension to 802.1X, which provides channel attribution and key distribution to the nodes, but can also be used with static keys getting fed manually by an administrator.
Media: DevConf.cz video about MACsec
Code: commit
1.7. BATMAN V protocol
B.A.T.M.A.N. (Better Approach To Mobile Adhoc Networking) adds support for the V protocol, successor of the IV protocol. The new protocol splits the OGM protocol into two subcomponents: ELP (Echo Location Protocol), in charge of dealing with the neighbour discovery and link quality estimation; and a new OGM protocol, OGMv2, which implements the algorithm that spreads the metrics around the network and computes optimal paths. The biggest change introduced with B.A.T.M.A.N. V is the new metric: the protocol won't rely on packet loss anymore, but the estimated throughput.
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
1.8. dma-buf: new ioctl to manage cache coherency between CPU and GPU
Userspace might need some sort of cache coherency management e.g. when CPU and GPU domains are being accessed through dma-buf at the same time. To circumvent this problem there are begin/end coherency markers, that forward directly to existing dma-buf device drivers vfunc hooks. Userspace can make use of those markers through the DMA_BUF_IOCTL_SYNC ioctl.
Recommender article: Sharing CPU and GPU buffers on Linux
Code: commit
1.9. OCFS2 online inode checker
OCFS2 is often used in high-availaibility systems. OCFS2 usually converts the filesystem to read-only when encounters an error, but this decreases availability and is not always necessary. OCFS2 has the mount option (errors=continue), which returns the EIO error to the calling process, it doesn't remount the filesystem to read-only, and the problematic file's inode number is reported in the kernel log. This release adds a very simple in-kernel inode checker that can be used to check and reset the inode. Note that this feature is intended for very small issues which may hinder day-to-day operations of a cluster filesystem by turning the filesystem read-only, it is not suited for complex checks which involve dependency of other components of the filesystem. In these cases, the offline fsck is recommended.
The scope of checking/fixing is at the file level, initially only for regular files. The way this file checker is by writting the inode number, reported in dmesg, to /sys/fs/ocfs2/devname/filecheck/check, then read the output of that file to know what kind of error it has. If you determine to fix this inode, write the inode number to /sys/fs/ocfs2/devname/filecheck/fix, then read the file to know if the inode was able to be fixed or not. For more details see the documentation
Code: commit, commit, commit, commit, commit
1.10. Support for cgroup namespaces
This release adds support for cgroup namespaces, which provides a mechanism to virtualize the view of the /proc/$PID/cgroup file and cgroup mounts. A new clone flag, CLONE_NEWCGROUP, can be used with clone(2) and unshare(2) to create a new cgroup namespace. For a correctly setup container this enables container-tools (like libcontainer, lxc, lmctfy, etc.) to create completely virtualized containers without leaking system level cgroup hierarchy.
Without cgroup namespace, the /proc/$PID/cgroup file shows the complete path of the cgroup of a process. In a container setup where a set of cgroups and namespaces are intended to isolate processes the /proc/$PID/cgroup file may leak potential system level information to the isolated processes.
Documentation https://git.kernel.org/torvalds/c/d4021f6cd41f03017f831b3d40b0067bed54893d
Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
1.11. Add support for the pNFS SCSI layout
This release adds NFSv4.1 support for parallel NFS SCSI layouts in the Linux NFS server, a variant of the block layout which uses SCSI features to offer improved fencing and device identification. With pNFS SCSI layouts, the NFS server acts as Metadata Server for pNFS, which in addition to handling all the metadata access to the NFS export, also hands out layouts to the clients so that they can directly access the underlying SCSI LUNs that are shared with the client. See draft-ietf-nfsv4-scsi-layout for more details
To use pNFS SCSI layouts, the exported file system needs to support the pNFS SCSI layouts (currently just XFS), and the file system must sit on a SCSI LUN that is accessible to the clients in addition to the MDS. As of now the file system needs to sit directly on the exported LUN, striping or concatenation of LUNs on the MDS and clients is not supported yet. On a server built with CONFIG_NFSD_SCSI, the pNFS SCSI volume support is automatically enabled if the file system is exported using the "pnfs" option and the underlying SCSI device support persistent reservations. On the client make sure the kernel has the CONFIG_PNFS_BLOCK option enabled, and the file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1.
Code: commit, commit, commit, commit
2. Core (various)
Futex scalability improvements: remove page lock use for shared futex get_futex_key(), which speeds up 'perf bench futex hash' benchmarks by over 40% on a 60-core Westmere. This makes anon-mem shared futexes perform close to private futexes commit
Allow to restrict the default irq affinity mask with the command line option irqaffinity commit
- Process scheduler
Make scheduler statistics a runtime tunable that is disabled by default. As most distributions enable CONFIG_SCHEDSTATS due to its instrumentation value, this is a nice performance enhancement. The way to enable it at runtime is using the sched_schedstats sysctl, or at boot time with the schedstats kernel option commit
Add deadline scheduler bandwidth ratio to /proc/sched_debug commit
NUMA: Spread memory on nodes according to CPU and memory use commit
- timers
Add /proc/<pid>/timerslack_ns. This file allows controlling processes to set the timerslack value on other processes. After setting the slack value on a bash process to 10 seconds, the command sleep 1 will last 10 seconds. This functionality is used by power/performance management software, they set the timer slack for other threads according to its policy (such as when the thread is designated foreground vs. background activity) in order to save power by avoiding wakeups (something Android does currently via out-of-tree patches) commit, commit
Support for cross clock domain timestamps, and a new PTP_SYS_OFFSET_PRECISE PTP ioctl interface: Currently, network/system cross-timestamping is performed in the PTP_SYS_OFFSET ioctl, which represents a best effort where the latency between the capture of system time (getnstimeofday()) and the device time (gettime64() driver callback), but at best, the precision of this cross timestamp is on the order of several microseconds due to software latencies, abd sub-microsecond precision is required for industrial control and some media applications. The getcrosststamp() callback and corresponding PTP_SYS_OFFSET_PRECISE ioctl allows the driver to perform better device/system correlation when for example cross timestamp hardware is available (modern Intel systems can do this for onboard Ethernet controllers using the ART counter; which has virtually zero latency between captures of the ART and network device clock). In this release, only the e1000e supports this interface commit, commit, commit, commit, commit, commit, commit
Add two new syscalls, preadv2() and pwritev2(). See the recommended LWN article: The return of preadv2()/pwritev2() and the documentation in the Linux man pages; commit, commit
quotas: Add a new quotaclt, Q_GETNEXTQUOTA. It is like Q_GETQUOTA, except that it will return quota information for the id equal to or greater than the id requested; if the requested id has no quota, it will return quota information for the next higher id which does have a quota set. This allows filesystems to do efficient iteration (today, ext4 with a hidden quota inode requires getpwent-style iterations, and for systems which have i.e. LDAP backends, this can be very slow). Also a analogue Q_XGETNEXTQUOTA command is added to complement Q_XGETQUOTA commit, commit
Add kcov code coverage. kcov provides code coverage collection for coverage-guided fuzzing (randomized testing). Coverage-guided fuzzing is a testing technique that uses coverage feedback to determine new interesting inputs to a system. A notable user-space example is AFL. kcov has been used to build syzkaller system call fuzzer, which has found 90 kernel bugs in just 2 months commit
CPU hotplug: Add sysfs state interface. The whole CPU hotplugging support is getting a complete revamp, for more details see this recommended LWN article: Rationalizing CPU hotplugging. commit
Add objtool, a tool to perform compile-time validation of the stack frame, living at tools/objtool. It enforces a set of rules on asm code and C inline assembly code so that stack traces can be reliable. This is needed for future projects. Recommended LWN article: Compile-time stack validation commit, commit
cgroup: provide cgroup_no_v1= kernel parameter. Testing cgroup2 can be painful with system software automatically mounting and populating all cgroup controllers in v1 mode. With this boot option it is posible to disable certain controllers in v1 mounts, so that they remain available for cgroup2 mounts. Example use: cgroup_no_v1=memory,cpu, or cgroup_no_v1=all commit, commit
Add support for cgroup namespaces (featured) commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
GDB scripts: add lx-cmdline and lx-version commands commit, commit
kallsyms: add support for relative offsets in kallsyms address table commit
Introduce __ro_after_init to mark read-write memory regions that are used only during init as read-only after init (recommended LWN article: Post-init read-only memory) commit
3. File systems
- OrangeFS
New Orangefs file system (featured) fs/orangefs
- Btrfs
Change max_inline default from 4KB to 2K. This means that only files with a size of 2KB or smaller will be inlined in the metadata by default commit
Introduce new mount option nologreplay to disable tree log replay at mount time to prevent filesystem modification and co-operate with "ro" mount option to get real readonly mount, like "norecovery" in ext and xfs. A filesystem mounted with this option cannot transition to a read-write mount via remount,rw - the filesystem must be unmounted and mounted back again if read-write access is desired commit. Also introduce mount option norecovery as an alias for nologreplay to keep "norecovery" behavior the same with other filesystems commit
Introduce new mount option usebackuproot as a replacement for recovery, since the word "recovery" is too generic and may be confusing for some users commit
Add GET_SUPPORTED_FEATURES to the control device ioctls. This is already possible using the sysfs files, this ioctl is for parity and convenience commit
This release renames some existing key types and gives them a more generalized meaning (backward compatible), in order to allow more flexible extensions by various patchsets without key type exhaustion. Two types of persistent items are added to store status data: temporary (exists to store state of a running operation like balance) and permanent (exists if a feature is used) commit, commit, commit, commit, commit, commit
- XFS
Add support for the quota ioctl Q_XGETNEXTQUOTA, added in this release. It allows quotactl to quickly find all active quotas by examining the quota inode, and skipping over unallocated or uninitialized regions commit
- OCFS2
OCFS2 online inode checker (featured) commit, commit, commit, commit, commit
Improve Direct I/O performance commit, commit, commit, commit, commit, commit, commit, commit
Add a new DEREF_DONE message and corresponding handler to fix a disorder issue. As a new message is added, so increase the minor number of dlm protocol version commit, commit, commit, commit
- NFS
- ext4
- ext2
- Improve xattr scalability with mbcache rewrite (see ext4)
- F2FS
- FAT
Add config option CONFIG_FAT_DEFAULT_UTF8 to set UTF-8 mount option utf8 by default commit
- PSTORE
Add support for 64-bit address space commit
- AUTOFS
Show pipe inode in mount options. This is required for CRIU (Checkpoint Restart In Userspace) to migrate a mount point when write end in user space is closed commit
- CACHEFILES
Provide read-and-reset objects- and blocks-released counters for cachefilesd to use to work out whether there's anything new that can be culled, instead of spinning commit
4. Memory management
Improve OOM reliability (featured) commit, commit, commit, commit, commit, commit, commit, commit, commit
Memory protection keys (featured) (merge)
Implementing the accelerated bulk API for SLAB allocator and add the new kfree_bulk() API commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Implement SLAB support for KASAN: commit, commit, commit, commit, commit, commit
Introduce kcompactd kernel threads. These kernel threads are per node and are intended to take the task of memory compaction from kswapd. For more details see the commits commit, commit, commit, commit
Add rodata=off kernel boot parameter to disable read-only kernel mappings commit
Add kernelcore=mirror kernel boot parameter. When mirror is specified, mirrored (reliable) memory is used for non-movable allocations and remaining memory is used for Movable pages commit, commit
Allow to configure page poisoning separately of debug utilities, because it has an use as a security measure: clearing of the pages on free provides an increase in security as it helps to limit the risk of information leaks. It's not compatible with hibernation commit, commit
SLUB: support left redzone commit
zsmalloc: add new `freeable' column to pool stat, which will tell how many pages ideally can be freed by class compaction, so it will be easier to analyze zsmalloc fragmentation commit
cgroup2: report the following cgroup stats in memory.stat: kernel stack usage commit and slab usage commit
memory hotplug: Introduce default policy for the newly added memory blocks in /sys/devices/system/memory/auto_online_blocks file with two possible values: "offline" which preserves the current behavior and "online" which causes all newly added memory blocks to go online as soon as they're added. The default is "offline" commit
dma-buf: Add ioctls to allow userspace to flush. The userspace might need some sort of cache coherency management e.g. when CPU and GPU domains are being accessed through dma-buf at the same time. To circumvent this problem, this release adds begin/end coherency markers that userspace can make use of through the DMA_BUF_IOCTL_SYNC ioctl commit
tool/vm/page-types: add commands for memory cgroup dumping and filtering commit, support swap entry commit
5. Block layer
libnvdimm: Asynchronous address range scrub. Given the capacities of next generation persistent memory devices a scrub operation to find all poison may take 10s of seconds. By making the scrub asynchronous, the system can boot faster commit, commit, commit, commit, commit, commit, commit, commit
libnvdimm: Clear poison command support. ACPI 6.1 introduces the ability to send "clear error" commands to the ACPI0012:00 device representing the root of an "nvdimm bus". Similar to relocating a bad block on a disk, this support clears media errors in response to a write commit, commit, commit
nvme: Expose the cntlid in sysfs, because for NVMe over Fabrics it can be used by systemd/udev to create link to the device commit
- Device Mapper
dm cache: make the 'mq' policy an alias for 'smq'. smq seems to be performing better than the old mq policy in all situations, as well as using a quarter of the memory. The tunables that were present for the old mq are faked, and have no effect. mq hould be considered deprecated now commit
Add 'dm_mq_nr_hw_queues' (Number of hardware queues for request-based dm-mq devices) and 'dm_mq_queue_depth' (Queue depth for request-based dm-mq devices) module params commit
Add 'dm_numa_node' module parameter, which allows to control which NUMA node the memory for DM device structures is allocated from commit
Add support for runtime changes in the number of hardware queues, something that may happen with resource provisioning commit
Enable polling support by default (a feature added in Linux 4.4. Note that this will only have an affect on driver that supply a poll function, which currently only includes nvme commit
For partitions, add new uevent parameters PARTN which specifies the partitions index in the table, and PARTNAME, which specifies the partition name of a partition device commit
Enable writeback cgroup support commit
6. Cryptography
ccp: Add hash state import and export support commit, support for multiple CCPs commit
compress: remove unused pcomp interface commit
rockchip: add hash support for crypto engine in rk3288 commit
X.509: Support leap seconds commit
7. Security
- Integrity Measurement Architecture
Keys: Allow to reserve area for inserting a certificate without recompiling commit
scripts/sign-file: Add support for signing a kernel module with a raw detached PKCS#7 signature/message commit
8. Tracing and perf tool
- perf report/top
Hierarchy histogram mode for perf top and perf report, showing multiple levels, one per --sort entry. Example, # perf top --hierarchy -s '{comm,dso},sym' commit, commit, commit
Add 'L' hotkey to dynamically set the percent threshold for histogram entries and callchains, i.e. dynamicly do what the --percent-limit command line option to 'top' and 'report' does
perf mem: Add -e option for perf mem record command, to be able to specify memory event directly (for example, perf mem record -e ldlat-loads true). Also, allow to list the available events via perf mem record -e list commit
- perf record
Add perf record --all-user/--all-kernel options, so that one can tell that all the events in the command line should be restricted to the user or kernel levels, i.e.: perf record -e cycles:u,instructions:u is equivalent to perf record --all-user -e cycles,instructions commit
Make perf record collect CPU cache info in the perf.data file header. This information will be used in perf c2c and eventually in perf diff to allow, for instance running the same workload in multiple machines and then when using 'diff' show the hardware difference. It's displayed under header info with -I option, perf report --header-only -I commit
Improved support for Java, using the JVMTI agent library to do jitdumps that then will be inserted in synthesized PERF_RECORD_MMAP2 events via perf inject --jit pointed to synthesized ELF files stored in ~/.debug and keyed with build-ids, to allow symbol resolution and even annotation with source line info. For more details see the commits commit, commit, commit, commit
- perf script/trace
- perf stat
- perf BPF
Print bpf-output events in perf script commit
Add API to set values of map entries in a BPF object, be it individual map slots or ranges commit
Support converting data from bpf events in 'perf data' commit, commit, commit, commit, commit
Introduce support for the bpf-output event. BPF programs can output data to a perf ring buffer through that new type of perf event, and perf can create events of that type, and a perf user can use the following cmdline to receive output data from BPF programs perf record -a -e bpf-output/no-inherit,name=evt/ -e ./test_bpf_output.c map:channel.event=evt/ ls / commit
Print content of bpf-output event in perf trace commit
perf config: Add --system and --user options to select which config file is used. --system means $(sysconfdir)/perfconfig and --user}} means {{{$HOME/.perfconfig. If none is used, both are read commit
perf: Enable to set config and setting names for legacy cache events commit
perf: Enable to set config terms for raw and numeric events commit
9. Virtualization
- Xen
- virtio
vhost_net: basic polling support. The maximum time spent on polling are specified through a new kind of vring ioctl commit
virtio_balloon: export 'available' memory to balloon statistics commit
virtio_net: add ethtool support for set and get of settings commit
virtio_pci: Use the DMA API if enabled commit
- Hyper-V
KVM: Implement Hyper-V hypercall userspace exit KVM_EXIT_HYPERV_HCALL for Hyper-V VMBus hypercalls (postmsg, signalevent) to handle these hypercalls by QEMU commit
hv_netvsc: add ethtool support for set and get of settings commit, add software transmit timestamp support commit
Add a new driver which exposes a root PCI bus whenever a PCI Express device is passed through to a guest VM under Hyper-V. The device can be single- or multi-function commit
vmbus: Support kexec on ws2012 r2 and above commit
pvqspinlock: Enable slowpath locking count tracking commit
firmware: introduce sysfs driver for QEMU's fw_cfg device commit
10. Networking
Add 802.1AE MAC-level encryption (MACsec) (featured) commit
Add the Kernel Connection Multiplexor (featured) commit, commit, commit, commit, commit, commit, commit
Add BATMAN V protocol support (featured) commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
- BPF
Add per-cpu maps, for hash (BPF_MAP_TYPE_PERCPU_HASH) and array maps (BPF_MAP_TYPE_PERCPU_ARRAY), for performance reasons. For per-cpu array maps, the primary use case is a histogram array of latency where bpf program computes the latency of block requests or other events and stores histogram of latency into array of 64 elements. All cpus are constantly running, so normal increment is not accurate, bpf_xadd causes cache ping-pong and this per-cpu approach allows fastest collision-free counters. For per-cpu hash maps, they are used to do accurate counters without need to use BPF_XADD instruction which turned out to be too costly for high-performance network monitoring commit, commit, commit
Add a new map type, BPF_MAP_TYPE_STACK_TRACE, to store stack traces. BPF programs already can walk the stack via unrolled loop of bpf_probe_read()s which is ok for simple analysis, but it's not efficient and limited to <30 frames. In this release the programs can collect up to PERF_MAX_STACK_DEPTH both user and kernel frames. Using stack traces as a key in a map turned out to be very useful for generating flame graphs, off-cpu graphs, waker and chain graphs commit
Support for access to tunnel options commit
- TCP
Add RFC4898 tcpEStatsPerfDataSegsOut/In to TCP_INFO socket option. They count segments sent/received containing a positive length data segment (that includes retransmission segments carrying data) commit
Add tcpi_min_rtt and tcpi_notsent_bytes to TCP_INFO socket option. tcpi_min_rtt reports the minimal rtt observed by TCP stack for the flow, in usec unit. tcpi_notsent_bytes reports the amount of bytes in the write queue that were not yet sent commit
fastopen: accept data/FIN present in SYNACK message, as per RFC 7413 (TCP Fast Open) 4.2.2, which states that the SYNACK message MAY include data and/or FIN commit
Faster SO_REUSEPORT for TCP. In the previous release, two performance improvements were done for the SO_REUSEPORT socket option for UDP sockets. In this release, these performance improvements are extended to TCP: faster lookup of a target socket when choosing a socket from the group of sockets, and also expose the ability to use a BPF program when selecting a socket from a reuseport group commit, commit
IPv4: Add namespaces support for the following sysctls ip_default_ttl commit, tcp_reordering commit, tcp_syn_retries commit, tcp_synack_retries commit, tcp_syncookies commit, tcp_fin_timeout commit, tcp_notsent_lowat commit, tcp_orphan_retries commit, tcp_retries1 commit, tcp_retries2 commit, ip_dynaddr commit, ipfrag_max_dist commit, ip_early_demux commit
- IPv6
Add sysctl drop_unicast_in_l2_multicast (default), equivalent to the IPv4 one commit
Add sysctl drop_unsolicited_na (default off) to drop all unsolicited neighbor advertisements, for example if there's a known good NA proxy on the network and such frames need not be used (or in the case of 802.11, must not be used to prevent attacks) commit
Add sysctl keep_addr_on_down that keeps all IPv6 addresses on an interface down event. If set, static global addresses with no expiration time are not flushed commit
- Wireless
Add Radio Resource Management (RRM) nl80211 feature flag. Today, the supplicant will add the RRM capabilities Information Element in the association request only if Quiet period is supported, but there are other RRM features that are not related to Quiet (e.g. neighbor report). This solution adds a global RRM capability, that tells user space that it can request RRM capabilities without any specific feature support in the kernel commit
Add support for PBSS (Personal Basic Service Set). PBSS is a new BSS type for DMG networks. It is similar to infrastructure BSS, having an AP-like entity called PCP (PBSS Control Point), but it has few differences. PBSS support is mandatory for 11ad devices commit
- ethtool
Add a new ETHTOOL_GLINKSETTINGS/SLINKSETTINGS API. It provides support for most legacy ethtool_cmd fields, adds support for larger link mode masks (up to 4064 bits, variable length), and removes ethtool_cmd deprecated fields (transceiver/maxrxpkt/maxtxpkt). This API is deprecating the legacy ETHTOOL_GSET/SSET API commit
Introduce a new ioctl ETHTOOL_PERQUEUE for per queue parameters setting commit
Implement sub command ETHTOOL_GCOALESCE for ioctl ETHTOOL_PERQUEUE. It introduces an interface to get coalesce of each masked queue from device driver commit
Implement sub command ETHTOOL_SCOALESCE for ioctl ETHTOOL_PERQUEUE. It introduces an interface to set coalesce of each masked queue to device driver commit
Add IPv6 to the NFC API commit
- geneve
- bridge
mdb: add support for extended attributes in the mdb entry, by extending the attribute that was used for the structure and adding per-mdb entry attributes after the struct has been added commit
Add support for temporary router port which doesn't depend only on the incoming queries commit, commit, commit, commit
- Reliable Datagram Sockets
SO_TIMESTAMP support for incoming messages commit
Initial support for Fastreg Memory Registration commit, commit
TCP: Add per-net sysctl tunables to set the size of sndbuf and rcvbuf on the kernel tcp socket. The tunables are added at /proc/sys/net/rds/tcp/rds_tcp_sndbuf and /proc/sys/net/rds/tcp/rds_tcp_rcvbuf commit
Drop stale iWARP RDMA transport commit
- Bluetooth
- Inifiniband
- Netfilter
- Netlink
- openvswitch
- vxlan
Add sysctl drop_gratuitous_arp (default off) to drop gratuitous ARP packets (for example if there's a known good ARP proxy on the network and such frames need not be used , or in the case of 802.11, must not be used to prevent attacks) commit
Add sysctl drop_unicast_in_l2_multicast (default off) to drop unicast IP packets encapsulated in L2 multicast (or broadcast) frames (the so-called hole-196 attack). This behavior (for multicast) is actually a SHOULD in RFC 1122, but is disabled by default for compatibility reasons commit
Export ip fragment sysctl to unprivileged users. Now that all the ip fragmentation related sysctls are namespaceified there is no reason to hide them anymore from "root" users inside containers commit
Add dst cache support for gre lwtunnels, in case of UDP traffic with datagram length below MTU this gives about 4% performance increase commit
traffic control: Add support for distributing the Linux Traffic Control (tc) filter-action subsystem packet processing across disparate nodes. The nodes could be a mix and match of containers, VMs, bare metal machines or ASICs. A new tc Inter-Forwarding Engine (IFE) action is introduced based on ForCES WG Inter-FE LFB work. This paper goes into both the implementation as well as the usage of the IFE tc action. A video (slides) is also available commit, commit, commit
flower classifier: Introduce hardware offload support commit, commit, commit, commit; also (merge)
Add MSG_BATCH flag in sendmsg(2)'s msg_hdr flags. It is used to indicate that more messages will be sent on the socket. The stack may batch messages up if it is beneficial for transmission commit
Add support for filtering link dump by master device and kind commit
Allow MSG_EOR being set in each individual msghdr passed in sendmmsg(2). This allows a sendmmsg(2) to send multiple messages when using SOCK_SEQPACKET commit
Add dst_cache to ovs vxlan lwtunnel. In case of UDP traffic with datagram length below MTU this give about 2% performance increase when tunneling over ipv4 and about 60% when tunneling over ipv6 commit
Add rx_nohandler stat counter, along with a sysfs statistics node, and copies the counter out via netlink as well. It counts nohandler dropped packets by core network on inactive devices commit
Distributed Switch Architecture: Support VLAN filtering switchdev attr commit
Add support for Local Checksum Offload for encapsulation. For a tunneled packet, the checksum of the outer header is 'constant' (because with the checksum field filled into the inner protocol header, the payload of the outer frame checksums to 'zero'), and the kernel can take advantage of that commit, commit, commit, commit, commit, commit, commit, commit
Use dst_cache for vxlan device. In case of UDP traffic with datagram length below MTU this give about 3% performance increase when tunneling over ipv4 and about 70% when tunneling over ipv6 commit
Add network namespace support for tc actions commit
IGMP: Add namespaces support for the following sysctls: igmp_llm_reports commit, igmp_max_memberships commit, igmp_max_msf commit, igmp_qrv commit
ip_tunnel: add support for setting flow label via collect metadata commit
Introduce devlink infrastructure. This release adds a new generic Netlink based interface, called "devlink". There a is need for some userspace API that would allow to expose things that are not directly related to any device class, but rather chip-wide/switch-ASIC-wide stuff. Use cases:get/set of port type (Ethernet/InfiniBand), setting up port splitters - split port into multiple ones and squash again, enables usage of splitter cable, setting up shared buffers - shared among multiple ports within one chip, configuration of switch wide properties commit
packet: Extend PACKET_VNET_HDR socket option support to packet sockets with memory mapped rings (PACKET_RX_RING, PACKET_TX_RING) commit, commit, commit, commit
11. Architectures
- ARM
- Device tree sources
BCM5301X: Add DT for D-Link DIR-885L commit
Add minimal Support for Logic PD DM3730 SOM-LV commit
Add dts for Uniwest evi commit
Add Engicam IMX6 Q7 initial support commit
imx: Add basic dts support for imx6qp SOC commit, imx6qp-sabreauto commit and imx6qp-sabresd commit; add support for Toradex Apalis iMX6Q/D SoM commit, add support for Toradex Ixora carrier board commit, add Advantech BA-16 Qseven module commit, add support for Advantech/GE B450v3 commit, add support for Advantech/GE B650v3 commit, add support for Advantech/GE B850v3 commit, add support for Advantech/GE Bx50v3 commit
keystone: Add Initial DT support for TI K2G SoC family commit
kirkwood: add device tree for buffalo linkstation ls-qvl commit
mediatek: add MT7623 basic support commit
orion5x: add device tree for buffalo linkstation ls-gl commit
sun7i: Add dts file for the lamobo-r1 board commit
sun8i: Add A83T HomletV2 Board by Allwinner commit, commit, add device tree for Cubietruck Plus commit
sunxi: Introduce Allwinner for A83T support commit
uniphier: add PH1-Pro4 Ace board support commit, add PH1-Pro4 Sanji board support commit
Add DTS file to support the Nexus7 2013 (flo) device. commit
Add DT binding for the Marvell Armada 3700 SoC family commit
stm32: Supply a DTS file for the STM32F469 Discovery board commit
amd: Add AMD XGBE device tree file commit, add support for AMD/Linaro 96Boards Enterprise Edition Server board commit, add support for new AMD Overdrive boards commit
bcm2835: dt: Add Raspberry Pi Model A commit
DRA722: Add ID detect for Silicon Rev 2.0 commit
debug: add support for Palmchip BK-310x UART commit
mx25: Add basic suspend/resume support commit
coresight: etm-perf: new PMU driver for ETM tracers commit,
- Device tree sources
- ARM64
- Device tree source
Broadcom Vulcan support commit
Add msm8996 SoC and MTP board support commit
Add support for Juno r2 board commit
Add .dts for GICv3 Foundation model commit
Add the Alpine v2 EVP commit
Add the Marvell Armada 3700 family and a development board commit
marvell: add Device Tree files for Armada 7K/8K commit
amlogic: Add Device Trees for Tronsmart Vega S95 Pro, Meta and Telos TV boxes commit
Add mvebu architecture entry commit
Introduce Allwinner SoC config option commit
Enable Amlogic Meson GXBaby platform commit
add Alpine SoC family commit
perf: Add Cavium ThunderX PMU support commit
Add support for Half precision (16bit) floating point/asimd data processing instructions present in ARM8.2 extensions commit
KVM: VHE support so that we can run the kernel at EL2 on ARMv8.1 systems commit
Add PMU support for guests commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
KVM: Introduce per-vcpu kvm device controls commit
Add support for building vmlinux as a relocatable PIE binary commit
Allow kernel Image to be loaded anywhere in physical memory commit
Enable CONFIG_DEBUG_RODATA by default commit
Add support for User Access Override, a new ARMv8.2 feature which allows the unprivileged load and store instructions to be overridden to behave in the normal way commit
Implement ACPI parking protocol commit
Add ubsan support commit
Mark vDSO code as read-only commit
Initial machine port for artpec-6 SoC commit
Add support for Exynos PMU driver commit
- Device tree source
- X86
Enable new AVX-512 features commit
Always enable CONFIG_DEBUG_RODATA and remove the configuration option commit
Enable full randomization on i386 and X86_32 (until this release, only the stack and the executable are randomized but not other mmapped files commit
If the CPU feature INVPCID is available, use it to flush global mappings. Also add a 'noinvpcid' option to turn it off commit, commit
system trace modules: Add heartbeat stm source device. It sends periodic heartbeat messages to trace hosts over STM devices commit
Add Intel Memory Bandwith Monitoring. Memory bandwidth monitoring (MBM) provides OS/VMM a way to monitor bandwidth from one level of cache to another. The current patches support L3 external bandwidth monitoring. It supports both 'local bandwidth' and 'total bandwidth' monitoring for the socket. Local bandwidth measures the amount of data sent through the memory controller on the socket and total b/w measures the total system bandwidth commit, commit, commit, commit
Add an AMD accumlated power reporting mechanism for the Family 15h, Model 60h processor that can be used to calculate the average power consumed by a processor during a measurement interval commit
Add support for new IOMMU performance events based on the information in table 74 of the AMD I/O Virtualization Technology (IOMMU) Specification (Document Id: 4882, Rev 2.62, Feb 2015) commit
intel/rapl: Add missing Broadwell models commit
Intel Trace Hub: Add Apollo Lake SOC support commit, add Broxton SOC support commit
- x86 Platforms
toshiba_acpi: add a module parameter to disable hotkeys registration commit, add support for cooling method feature commit, commit
dell-wmi: support new hotkeys on the XPS 13 9350 (Skylake) commit, enable receiving WMI events on Dell Vostro V131 commit, properly process Dell Instant Launch hotkey commit, support Dell Inspiron M5110 commit
alienware-wmi: add initial support for alienware graphics amplifier. commit, add support for deep sleep control. commit, add support for new platform: X51-R3 commit, add support for two new systems: ASM200 and ASM201. commit
fujitsu-laptop: Support radio toggle button commit
- POWERPC
Enable page parallel initialisation (for 4GB of memory, boot time is improved by 59%) commit
ftrace: Add support for ftrace ABI -mprofile-kernel (available for ppc64 on gcc > 4.8.5) commit, commit
mpc85xx: Add CPU hotplug support for E6500 commit, add hotplug support on E5500 and E500MC cores commit
perf: hv-24x7: Display domain indices in sysfs (/sys/bus/event_source/devices/hv_24x7/interface/domains) commit
perf: Export the generic hardware and cache perf events for Power8 to sysfs, so users can precisely determine the PMU event monitored by the generic event commit
powernv: Remove support for p5ioc2 commit
Add RCPM driver commit
xmon: Add xmon command (P) to dump process/task information similar to ps: task pointer, kernel stack pointer, PID, PPID, state (interpreted), CPU where (last) running, and command commit
Enable VFIO device for powerpc commit
cxl: Support added to the CXL driver for running on both bare-metal and hypervisor systems commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
- KVM:
Add support for 64bit TCE windows commit
Add support for multiple-TCE hypercalls for user space emulated devices such as IBMVIO devices or emulated PCI. These calls allow adding multiple entries (up to 512) into the TCE table in one call which saves time on transition between kernel and user space commit
Book3S HV: Add tunable to control H_IPI redirection commit
- Intel MIC
- S390
- XTENSA
- SH
Add device tree support and generic board using device tree commit
- MICROBLAZE
Support generic Xilinx AXI PCIe Host Bridge IP driver commit
- SPARC
New driver adds support for Logical Domains vSwitch (ldmvsw). The ldmvsw driver operates on Oracle systems running SPARC Linux in a Logical Domains environment (typically in the control domain). The ldmvsw driver is very similar in function to the existing sunvnet, it creates a network interface for each "vsw-port" node found in the Machine Description (MD) of a service domain. These nodes correspond to ports on a vswitch created by the logical domains manager. The created network interface(s) can be used by bridge/vswitch software (such as the Linux bridge or Open vSwitch) to provide guest domain(s) with network interconnectivity or connectivity to a physical network commit
Recognize and support Sonoma CPU type commit
- ARC
- M68KNOMMU
Remove obsolete 68360 support commit
- H8300
Switch EARLYCON commit
- ALTERA
Add Altera L2 cache and OCRAM support commit
12. Drivers
12.1. Graphics
- i915
Enable Panel Self Refresh by default on Haswell and Broadwell. commit; and Valleyview and Cherryview. commit
Enable FrameBuffer Compression by default on Haswell and Broadwell commit
bxt: update list of PCIIDs commit
skl: Add missing SKL ids commit
Add GuC Addition Data Structure. The ADS itself is a chunk of memory created by driver to share with GuC. The GuC firmware uses this for various purposes commit, commit, commit, commit
- amdgpu/radeon
- vmwgfx
- exynos
- Nouveau
- imx
Fence support commit
- msm
- rockchip
Add support for Innosilicion HDMI commit
- rcar-du
- omapdrm
- tilcdc
- vc4
Add support for ARM's HDLCD controller. The HDLCD controller is a display controller that supports resolutions up to 4096x4096 pixels. It is present on various development boards produced by ARM Ltd and emulated by the latest Fast Models from the company commit
- sti
panel: simple: Add URT UMSH-8596MD-xT panels support commit, support for LG lp120up1 panel commit
Add a drm_aux-dev module for reading/writing dpcd registers. commit
Introduce pipe color correction properties. This introduces optional properties to enable color correction at the pipe level commit
12.2. Storage
sata_via: Implement hotplug for VT6421 commit
libata: support AHCI on OCTEON platform commit
ahci_mvebu: add support for Armada 3700 variant commit
ahci: Add runtime PM support for the host controller commit
AHCI: Remove obsolete Intel Lewisburg SATA RAID device IDs commit
ata: add AMD Seattle platform driver commit
- SCSI
Add 'access_state' and 'preferred_path' sysfs attributes commit
stex: Add S3/S4 support commit, add hotplug support commit, add support to Pegasus series commit
qla2xxx: Add debugfs node for target sess list /sys/kernel/debug/qla2xxx/qla2xxx_31/tgt_sess commit, add support for Private link statistics counters. commit, add support for buffer to buffer credit value for ISP27XX commit, add support for online flash update for ISP27XX commit, enable T10-DIF for ISP27XX commit
megaraid_sas: Dual queue depth support commit, IO throttling support commit, introduce module parameter for SCSI command timeout commit, Reply Descriptor Post Queue (RDPQ) support commit, task management support commit
mpt3sas: Add support for configurable Chain Frame Size commit, added smp_affinity_enable module parameter. commit, added support for high port count HBA variants. commit
hisi_sas: add v1 hw ACPI support commit
aacraid: SCSI blk tag support commit
hpsa: add SMR drive support commit
nvmem: NXP LPC18xx EEPROM memory NVMEM driver commit
nvmem: Add Mediatek EFUSE driver commit
cpqarray: remove it from the kernel commit
NVMe: Expose ns wwid through single sysfs entry commit
12.3. Staging
fsl-mc: Added generic MSI support for FSL-MC devices commit, commit, commit
lustre: Dynamic LNet Configuration (DLC) commit, commit, commit, commit, commit, commit, commit, commit
iio: ad7192: Add support for the AD7193 commit
Staging: fbtft: add ssd1305 controller support commit
Staging: fbtft: add ssd1325 controller support commit
iio: Remove periodic RTC trigger driver commit
Delete STE RMI4 hackish driver commit
Staging: dgap: Remove obsolete driver commit
12.4. Networking
ixgbe: add support for tc_u32 offload commit
- can
e1000e: Adds hardware supported cross timestamp on e1000e nic commit, initial support for KabeLake commit
igb: Add support for VLAN promiscuous with SR-IOV and NTUPLE commit, add support for generic Tx checksums commit, enable use of "bridge fdb add" to set unicast table entries commit
igbvf: Add support for generic Tx checksums commit
thunderx: Add TX timeout and RX buffer alloc failure stats. commit
Add mediatek ethernet driver for MediaTek SoCs from the MT7623 family commit, commit
mlx5: QoS IEEE dcbnl and VxLAN offloads support for Mellanox 100G mlx5 driver commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit; implement modify HCA vport command commit ; add hardware offload support for cls_flower commit, commit, commit, commit, commit, commit, introduce offload arithmetic hardware capabilities commit, add ConnectX-5 to list of supported devices commit
i40e: Add new device IDs for X722 commit, SCTP offload support commit, allow channel bonding of VFs commit, add 100Mb ethtool reporting commit, add new proxy-wol bit for X722 commit, add a new "set switch config" admin queue command and the new Cisco VXLAN-GPE cloud tunnel type for the admin queue commands commit, commit, commit, commit, add counter for arq overflows commit, add debugfs output for dump VSI commit, drop unused debugfs file "dump" commit, add support for IPv4 encapsulated in IPv6 commit, support segmenting UDP tunnels with outer checksums enabled commit, add functions to blink led on 10GBaseT PHY commit, support coalesce getting by queue commit, support coalesce setting by queue commit, add adminq commands for Rx CTL registers commit, add support for client interface for IWARP driver commit
i40evf: Add support for IPv4 encapsulated in IPv6 commit, support segmenting UDP tunnels with outer checksums enabled commit, support packet split receive commit
Add i40iw driver for Intel Ethernet X722 iWARP devices commit
dsa: mv88e6xxx: support VLAN filtering commit
macb: add wake-on-lan support via magic packet commit
mvneta: add support for hardware buffer management commit, commit
- phy
Add SGMII support for Marvell 88E1510/1512/1514/1518 commit
bcm7xxx: Add entries for Broadcom BCM7346 and BCM7362 commit,
dp83848: Add PHY ID for TI version of DP83848C commit, add support for TI TLK10x Ethernet PHYs commit
spi_ks8995: add support for MICREL KSZ8795CLX commit, add support for resetting switch using GPIO commit
libertas: add an cfg80211 interface for powersaving commit
mwifiex: add debugfs file (/sys/kernel/debug/mwifiex/mlan0/verext) to read chip information commit, adds support for waking up the device on finding better RSSI commit, add schedule scan support commit, add support for wakeup when configured network is detected commit, commit, enable pcie MSIx interrupt mode support commit, firmware dump support for w8997 chipset commit
lan78xx: add ethtool set & get pause functions commit
iwlwifi: Add P2P client snoozing commit, support setting minimum quota (for a single virtual interface) from debugfs commit, add 9000 series multi queue rx DMA support commit, commit, commit, commit, add run-time power management for PCIe commit, commit, allow to disable beacon filtering for AP/GO interface from debugfs commit, add CT-KILL notification commit, allow to limit the A-MSDU from debugfs commit, enable VHT MU-MIMO for supported hardware commit, add new configuration to enable MSIX commit, add disable_11ac module parameter to disable VHT capabilities commit, add ctdp operations to debugfs commit, add device IDs for the 8265 device commit
brcmfmac: add support for 14e4:4365 PCI ID with BCM4366 chipset commit, add 802.11w management frame protection support commit, add support for the PCIE 4366c0 chip commit, add wowl gtk rekeying offload support commit, remove pcie gen1 support commit
bnx2x: Add Geneve inner-RSS support commit, add support for single-port DCBx commit, extend DCBx support commit
bnxt_en: Add installed-package firmware version reporting via Ethtool GDRVINFO commit, add port statistics support. commit, enable AER support. commit, include hardware port statistics in ethtool -S. commit, commit
ath10k: start adding support for qca4019 chip (merge), debugfs support for Per STA total rx duration commit, enable periodic peer stats update commit, commit, implement basic support for new tx path firmware commit
ath9k_htc: add device ID for Toshiba WLM-20U2/GN-1080 commit
amd-xgbe: Disable VLAN filtering when in promiscuous mode commit, enable/disable PFC per traffic class commit
- Bluetooth
btusb: Add new AR3012 ID 0489:e095 commit, add a new AR3012 ID 04ca:3014 commit, add new AR3012 ID 13d3:3395 commit
hci_bcm: Add BCM2E55 ACPI ID used in Lenovo ThinkPad Tablet 8 commit, add BCM2E7C ACPI ID commit, add new ACPI ID for bcm43241 commit
hci_uart: Add Intel/AG6xx support commit, add diag and address support for Intel/AG6xx commit
pasemi_mac: Replace LRO with GRO commit
qed: Add infrastructure support for hardware GRO commit, add support for HW attentions commit, add vlan filtering offload support commit, commit
qede: Add slowpath/fastpath support and enable hardware GRO commit
qmi_wwan: Added support for Gemalto's Cinterion PHxx WWAN interface commit, add "D-Link DWM-221 B1" device id commit
rocker: implement get settings mode command commit
rt2x00: add new rt2800usb device Buffalo WLI-UC-G450 commit
rtl8xxxu: Add 8723bu support (merge)
sfc: implement IPv6 NFC (and IPV4_USER_FLOW) commit
iw_cxgb3: support for iWARP port mapping commit
xgene: Add support for Classifier engine commit, add support for RSS commit, add support for multiple queues commit
cxgb4: TOS support (also for iw_cxgb4) commit, add pci device id for chelsio t520-cr adapter commit, add iSCSI DDP page pod manager commit, large receive offload support commit
RDMA/nes: Replace LRO with GRO commit
RDMA/ocrdma: Support RoCE-v2 in the RC path commit, support RoCE-v2 in the UD path commit, support user AH creation for RoCE-v2 commit
bgmac: support Ethernet device on BCM47094 SoC commit
- Infiniband
ipoib: Add support for configuring VFs commit
mlx5: adds user-space support for memory windows allocation and deallocation commit, add support for CSUM in RX flow commit, add support for don't trap rules commit, add support for setting source QP number commit, add support for re-registration of MRs commit, implement UD QP offloads for IPoIB in the TX flow commit
qib: Support query gid in rdmavt commit
12.5. Audio
hda: Add new GPU codec ID 0x10de0082 to snd-hda commit, add PCI ID for Intel Broxton-T commit, add AMD Polaris-10/11 AZ PCI IDs with proper driver caps commit
usb-audio: adds a new option "quirk_alias" to snd-usb-audio driver for allowing user to pass the quirk alias list commit
Remove deprecated AU1X00 AC97 driver commit
- ASoC
Add max9867 codec driver commit
Add max98926 codec driver commit
Intel: Atom: add support for CHT w/ RT5640 commit
Intel: Bxtn: Add Broxton PCI ID commit
Intel: boards: Enable HDMI and DP on SKL nau88l25_max98357 machine commit, enable HDMI and DP on nau88l2 machine commit, enable HDMI and DP on skl_rt286 machine commit
cht_bsw_rt5645: Enable jack detection commit
fsl-asoc-card: add cs4271 and cs4272 support commit
hdac_hdmi: Add broxton device ID commit, add jack reporting commit, enable DP1.2 and all converters/pins commit
mediatek: Add machine driver for ALC5650 codec commit, add machine driver for rt5650 rt5514 codec commit
omap-hdmi-audio: Support for DRA7xx family commit
pcm179x: Add I2C interface driver commit, support continuous rates commit
qcom: add mic support commit, apq8016-sbc: add mic support commit
rsnd: SRC TIMSEL support for Capture commit, add CTU support commit, commit
rsrc-card: add convert channels support commit
rt5514: add rt5514 codec driver commit
rt5616: Add support sample rate to 192KHz commit
sunxi: Add support for the SPDIF block commit, add sun4i SPDIF transceiver commit
12.6. Tablets, touch screens, keyboards, mouses
Add MELFAS MIP4 Touchscreen driver commit
Add BYD PS/2 touchpad driver commit
melfas_mip4 - add hw_version sysfs attribute commit
synaptics-rmi4: add I2C transport driver commit, add SPI transport driver commit, add support for 2D sensors and F11 commit, add support for F12 commit, add support for F30 commit, add support for Synaptics RMI4 devices commit
touchscreen: Add imx25 TCQ driver commit
xpad: add Mad Catz FightStick TE 2 VID/PID commit
wacom: Add support for DTK-1651 commit
12.7. TV tuners, webcams, video capturers
Add support for Avermedia AverTV Volar HD 2 (TD110) commit
Add support for Terratec Cinergy S2 Rev.4 commit
UVC: Add support for R200 depth camera commit
add media controller support to videobuf2-dvb commit
af9035: add support for 2nd tuner of MSI DigiVox Diversity commit
dib8000: Add support for Mygica/Geniatech S2870 commit
dvb-usb-dvbsky: add new product id for TT CT2-4650 CI commit
dw2102: Add support for Terratec Cinergy S2 USB BOX commit, add support for TeVii S662 commit
em28xx: add media controller support commit, add support for Terratec Grabby REC button commit, add support for Terratec Grabby Record led commit
ti-vpe: Add CAL v4l2 camera capture driver commit
mn88473: move out of staging commit
mt9v011: add media controller support commit
pwc: Add USB id for Philips Spc880nc webcam commit
saa7134: Add support for Snazio TvPVR PRO commit, add DMABUF support commit, add media controller support commit
soc_camera: rcar_vin: Add ARGB8888 caputre format support commit
soc_camera: rcar_vin: Add R-Car Gen3 support commit
soc_camera/mx2_camera.c: move to staging in preparation, for removal commit
soc_camera/mx3_camera.c: move to staging in preparation, for removal commit
soc_camera/omap1: move to staging in preparation for removal commit
tvp5150: Add pixel rate control support commit, add tvp5151 support commit, add HW input connectors support commit
vsp1: Add VSP+DU support commit, add support for the R-Car Gen3 VSP2 commit, add tri-planar memory formats support commit
vivid: support new multiplanar YUV formats commit
v4l2-ctrls: add V4L2_CID_DV_RX/TX_IT_CONTENT_TYPE controls commit
v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats commit
12.8. USB
USB 3.1 SuperSpeedPlus support (featured) commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit
Add a new USBDEVFS_DROP_PRIVILEGES ioctl, used to relinquish the ability to do certain operations which are considered to be privileged on a usbfs file descriptor. This includes claiming arbitrary interfaces, resetting a device on which there are currently claimed interfaces from other users, and issuing USBDEVFS_IOCTL calls. The ioctl parameter is a 32 bit mask of interfaces the user is allowed to claim on this file descriptor. A simple utility to test the ioctl, is located at Documentation/usb/usbdevfs-drop-permissions.c commit
Add support for usbfs zerocopy commit
option: add "D-Link DWM-221 B1" device id commit
serial: cp210x: Adding GE Healthcare Device ID commit
serial: ftdi_sio: Add support for ICP DAS I-756xU devices commit
uas: add full support for RESPONSE IU commit
dwc3: Enable SuperSpeedPlus commit
renesas_usbhs: add R-Car Gen3 power control commit
usbtmc: Implement support for the USB488 defined READ_STATUS_BYTE ioctl, and SRQ notifications with fasync and poll/select in order to be able to synchronize with variable duration instrument operations. Also add convenience ioctl to return all device capabilities, and ioctls for other USB488 requests commit commit, commit, commit, commit
- HID
serial: cp210x: add ID for Link ECU commit, add Straizona Focusers device ids ECU commit
12.9. Serial Peripheral Interface (SPI)
Add Analog Devices AXI SPI Engine controller support commit
master driver to enable RTC on ICPDAS LP-8841 commit
spi-pxa2xx-pci: Add ID and driver type for WildcatPoint PCH commit
spi-ti-qspi: add mmap mode read support commit
12.10. Watchdog
Add watchdog timer support for the WinSystems EBC-C384 commit
Add a device driver (mei_wdt) for the Intel MEI iAMT watchdog, which is an OS Health (Hang/Crash) watchdog commit, commit, commit
Add NI 903x/913x watchdog driver (ni903x_wdt) commit
pnx4008: add support for soft reset commit, support "cmd" from userspace commit
w83627hf: Added NCT6102D support. commit
Introduce ARM SBSA watchdog driver commit
12.11. Serial
bcm2835: add driver for bcm2835-aux-uart commit
mvebu-uart: initial support for Armada-3700 serial port commit
serial-uartlite: add earlycon support commit
8250: Add software emulated RS485 support commit; enabñe suspend/resume for 8250_of driver commit, add omap8250 earlycon commit, add earlycon support for Tegra commit
sh-sci: Add CONFIG_SERIAL_EARLYCON support commit, add support for SCIFA/SCIFB variable sampling rates commit
xuartps: Enable OF earlycon support commit
Remove 68328 driver commit
12.12. ACPI, EFI, cpufreq, thermal, Power Management
- tools/power turbostat
Add --out option for saving output in a file commit
Show column GFX%rc6 (comes from counter /sys/class/drm/card0/power/rc6_residency_ms) commit, column GFXMHz (snapshot of attribute /sys/class/graphics/fb0/device/drm/card0/gt_cur_freq_mhz) commit, IRQs per CPU (difference between /proc/interrupts shapshots)commit
Add Mediatek thermal controller support commit
cpuidle: intel_idle: Add SKX and KBL support commit, commit, support for Intel Xeon Phi Processor x200 Product Family commit
- cpufreq
- ACPI
12.13. Real Time Clock (RTC)
Implement a sysfs interface for clock offset. Clock offset may be set and read in decimal parts per billion attribute is /sys/class/rtc/rtcN/offset commit
Add Alphascale asm9260 driver commit
Add driver for RX6110SA real time clock commit
Add PIC32 real time clock driver commit
abx80x: handle autocalibration commit
ds1307: add clock provider support for DS3231 commit, add temperature sensor support for ds3231 commit
max77686: Add max77802 support commit, add support for MAX20024/MAX77620 RTC IP commit
pcf2127: add pcf2129 device id commit, add support for spi interface commit
rv3029: Add "rv3029" I2C device id commit, add thermometer hwmon support commit
Remove Maxim 77802 driver commit
12.14. Voltage, current regulators, power capping, power supply
core: Add support for active-discharge configuration commit
act8945a: add regulator driver for ACT8945A commit
axp20x: Support new AXP223 PMIC commit
hi655x: enable regulator for hi655x PMIC commit
lp872x: Add enable GPIO pin support commit
max77620: Add support to configure active-discharge commit
max77620: add regulator driver for max77620/max20024 commit
tps65912: Add regulator driver for the TPS65912 PMIC commit
power: act8945a: add charger driver for ACT8945A commit
power: Add types for USB Type C and PD chargers commit
powercap: intel_rapl: Add missing Haswell model commit
12.15. Rapid I/O
Add mport character device driver to provide user space interface to basic RapidIO subsystem operations commit
Add mport removal support commit
Add outbound window configuration support commit
tsi721: add mport removal support commit, add option to configure direct mapping of IB window commit, add outbound windows mapping support commit
net/rionet: add capability to change MTU commit, add mport removal handling commit
12.16. Pin Controllers (pinctrl)
Add STM32 MCUs support commit
mediatek: Add Pinctrl/GPIO/EINT driver for MT7623 commit and for mt2701 commit
pinctrl-pic32: Add PIC32 pin control driver commit
qcom: Add IPQ4019 pinctrl support commit
rockchip: add support for the rk3399 commit
sh-pfc: r8a7795: Add CAN FD support commit, add CAN support commit, add PWM support commit, add USB2.0 host support commit, add support for INTC-EX IRQ pins commit
sunxi: Add H3 R_PIO controller support commit
Add driver for Allwinner A64 SoC commit
12.17. Memory Technology Devices (MTD)
atmel_nand: Support PMECC on SAMA5D2 commit, support 32-bit ECC strength commit
qcom_nand: Add driver for the Qualcomm NAND controller, found in SoCs like IPQ806x, MSM7xx, MDM9x15 series commit
pxa3xx_nand: add support for partial chunks commit
sunxi: add randomizer support commit
spi-nor: Add support for s25fl116k commit, add TB (Top/Bottom) protect support commit, fsl-quadspi: add support for layerscape commit, fsl-quadspi: add support for ls1021a commit, support lock/unlock for a few Winbond chips commit
12.18. Multi Media Card
core: enable mmc host device to suspend/resume asynchronously commit
mediatek: add SD write protect support commit
sdhci-acpi: add QCOM controllers commit
sdhci-iproc: add bcm2835 support commit, add support and PCI IDs for more Broxton host controllers commit
sdhci-pic32: Add PIC32 SDHCI host controller driver commit
sdhi: Add r8a7795 support commit
sunxi: Support 8 bit eMMC DDR transfer modes commit, support MMC_DDR52 timing modes commit, support vqmmc regulator commit
12.19. Industrial I/O (iio)
Add IIO support for the DAC on the Apex Embedded Systems STX104 commit
- adc
add ad5761 DAC driver commit
chemical: add Atlas pH-SM sensor support commit
dac: mcp4725: Add basic support for MCP4726 commit
dac: vf610_dac: Add IIO DAC driver for Vybrid SoC commit
health: Add driver for the TI AFE4403 heart monitor commit, add driver for the TI AFE4404 heart monitor commit
hmc5843: Add attributes for measurement config of bias current commit, move out of staging commit
imu: inv_mpu6050: Add SPI support for MPU6000 commit, add calibration offset support commit
mma8452: add freefall detection for Freescale's accelerometers commit, add support for MMA8451Q commit
potentiometer: add TI tpl0102 support commit
pressure: mpl115: support MPL115A1 commit
pressure: ms5611: Add triggered buffer support commit
si7005: add support for Hoperf th02 commit
si7020: add support for Hoperf th06 commit
ad5064: Add AD5625/AD5627/AD5645/AD5647/AD4665/AD5657 support commit
ad5064: Add support for ltc2617 and similar devices commit
ad5064: Structural changes to support LTC2617 commit
adc:at91_adc8xx: introduce new atmel adc driver commit
pressure:ms5611: power regulator support commit
12.20. Multi Function Devices (MFD)
lpss: Add PCI IDs for Intel Broxton B-Step platform commit
max77686: Add max77802 to I2C device ID table commit
mt6397: Add MT6323 support to MT6397 driver commit
tps65086: Add driver for the TPS65086 PMIC commit
12.21. Inter-Integrated Circuit (I2C)
designware: Add device HID for future AMD I2C controller commit
iproc: Support larger TX transfer commit
mt65xx: add 4GB DMA mode support in i2c driver commit
mux: demux-pinctrl: add driver commit
qup: Add V2 tags support commit, add bam dma capabilities commit
xiic: Implement power management commit
ismt: Add Intel DNV PCI ID commit
rk3x: add support for rk3228 commit
12.22. Hardware monitoring (hwmon)
Add LTC2990 sensor driver commit
Create an NSA320 hardware monitoring driver commit
adm1275: Add support for ADM1278 commit
ntc_thermistor: Add support for ncpXXxh103 commit
scpi: add energy meter support commit
12.23. General Purpose I/O (gpio)
- The GPIO stack has been changed to make the GPIO drivers real devices. For this reason, a new userspace ABI has been created: the GPIO character device. This release takes small steps, so first a pure *information* ABI has been added, along with the tool "lsgpio" that will list all GPIO devices on the system and all lines on these devices. GPIOs can now be properly discovered from userspace (but not be used from userspace). The old sysfs ABI is still available opt-in (and can be used in parallel) and will be maintained around for the foreseeable future, but it will not be extended
tools/gpio: create GPIO tools, adds a single example program (lsgpio) to list the GPIOs commit
Add a userspace chardev ABI for GPIOs commit, commit, commit, commit
gpio-f7188x: Add F81866 GPIO supports commit
Add GPIO support for the ACCES 104-DIO-48E commit
Add GPIO support for the WinSystems WS16C48 commit
Add driver for SPI serializers commit
Add driver for TI TPIC2810 commit
add TS-4800 fpga GPIO support commit
add driver for MEN 16Z127 GPIO controller commit
add tps65218 gpio commit
ath79: Add support for the interrupt controller commit
mcp23s08: Add support for mcp23s18 commit
tps65086: Add GPO driver for the TPS65086 PMIC commit
tps65912: Add GPIO driver for the TPS65912 PMIC commit
12.24. Clocks
axi-clkgen: Add multi-parent support commit, remove version 1 support commit
imx: Add clock support for imx6qp commit
iproc: Add support for Cygnus audio clocks commit
qcom: Add IPQ4019 Global Clock Controller support commit, gdsc: Add GDSCs in msm8996 commit, commit, commit, commit, commit
shmobile: r8a7795: Add SD divider support commit
ti: Add support for dm814x ADPLL commit
12.25. PCI
designware: Add driver for prototyping kits based on ARC SDP commit
layerscape: Add "fsl,ls2085a-pcie" compatible ID commit
thunder: Add PCIe host driver for ThunderX processors commit, add driver for ThunderX-pass{1,2} on-chip devices commit
xilinx-nwl: Add support for Xilinx NWL PCIe Host Controller commit
Unbreak dra7xx PCI driver as broken" commit
12.26. Various
VFIO: Capability chains, similar to PCI device capabilities, that allow extending ioctls. Extensions here include device specific regions and sparse mmap descriptions (merge)
spmi: pmic-arb: Support more than 128 peripherals commit
remoteproc: Supply controller driver for ST's Remote Processors commit
reset: img: Add Pistachio reset controller driver commit
phy: Add driver for rockchip Display Port PHY commit
phy: add a driver for the Rockchip SoC internal eMMC PHY commit
phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses. commit
Move panel driver out of staging commit
memory: mediatek: Add SMI driver commit
mei: me: add broxton pci device ids commit
mailbox: Add support for APM X-Gene platform mailbox driver commit
mailbox: Hi6220: add mailbox driver commit
mailbox: Introduce TI message manager driver commit
leds: Add SN3218 and SN3216 support to the IS31FL32XX driver commit
leds: Add driver for the ISSI IS31FL32xx family of LED controllers commit
iommu/arm-smmu: Support DMA-API domains commit
iommu/exynos: Add support for v5 SYSMMU commit
iommu/io-pgtable: Add ARMv7 short descriptor support commit
iommu/mediatek: Add mt8173 IOMMU driver commit
irqchip/gic/realview: Support more RealView DCC variants commit
irqchip/mvebu-odmi: Add new driver for platform MSI on Marvell 7K/8K commit
irqchip/tango: Add support for Sigma Designs SMP86xx/SMP87xx interrupt controller commit
irqchip: Add the Alpine MSIX interrupt controller commit
irqchips/bmips: Add bcm6345-l1 interrupt controller commit
hwrng: pic32 - Add PIC32 RNG hardware driver commit
extcon: palmas: Add the support for VBUS detection by using GPIO commit
dmaengine: add Qualcomm Technologies HIDMA channel driver commit
dmaengine: add Qualcomm Technologies HIDMA management driver commit
dmaengine: pl330: support burst mode for dev-to-mem and mem-to-dev transmit commit
bq24735_charger: add status property to view/enable/disable charging commit
bcma: add support for BCM47094 commit
bcma: support chipsets with PMU and GCI cores (devices) commit
bcma: support identifying MX25L25635F serial flash commit
HSI: nokia-modem: add n950 and n9 support commit
13. List of merges