11821
Comment:
|
← Revision 28 as of 2017-12-30 01:29:58 ⇥
29337
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
Linux 3.12 [https://lkml.org/lkml/2013/11/3/160 was released on November 2, 2013] /!\ /!\ /!\ This page is incomplete. Sorry for the delay /!\ /!\ /!\ '''Summary''': This release adds support for offline deduplication in Btrfs, automatic GPU switching in laptops with dual GPUs, a performance boost for modern AMD Radeon hardware, improved locking performance for virtualized guests, better RAID-5 multicore performance, improved and more reliable out-of-memory handling, improved VFS path name resolution scalability, improvements to the timerless multitasking mode, separate modesetting and rendering device nodes in the graphics DRM layer, new drivers and many small improvements. [[TableOfContents()]] |
Linux 3.12 [[https://lkml.org/lkml/2013/11/3/160|was released on November 2, 2013]] '''Summary''': This release adds support for offline deduplication in Btrfs, automatic GPU switching in laptops with dual GPUs, a performance boost for AMD Radeon graphics, better RAID-5 multicore performance, improved handling of out-of-memory situations, improved VFS path name resolution scalability, improvements to the timerless multitasking mode, separate modesetting and rendering device nodes in the graphics DRM layer, improved locking performance for virtualized guests, XFS directory recursion scalability improvements, IPC scalability improvements, tty layer locking improvements, new drivers and many small improvements. <<TableOfContents>> |
Line 21: | Line 15: |
The Btrfs filesystem has gained support for offline data deduplication. Deduplication consists in removing copies of repeated data in the filesystem, since the data is the same only one copy is necessary. In some particular workloads, like virtualization VMs -which often contain similar copies of operating systems- the gains can be enormous. By "offline", it means that the deduplication process is done when the file system is mounted and running, but it's not done automatically and transparently as processes write data, but rather it's triggered by userspace software at a time controlled by the system administrator. Online deduplication will be added future releases. The bedup deduplication tool has a branch that works against this support. The branch can be found [https://github.com/g2p/bedup/tree/wip/dedup-syscall here]. The author of the deduplication support has also written an sample deduplication tool, duperemove, which can be found [https://github.com/markfasheh/duperemove here]. Code: [http://git.kernel.org/linus/416161db9b63e353a8fb79d1369779175102fca1 commit] |
The Btrfs filesystem has gained support for offline data deduplication. Deduplication consists in removing copies of repeated data in the filesystem, since the data is the same only one copy is necessary. In some particular workloads, like virtualization VMs -which often contain similar copies of operating systems- or backups the gains can be enormous. By "offline", it means that the deduplication process is done when the file system is mounted and running, but it's not done automatically and transparently as processes write data, but rather it's triggered by userspace software at a time controlled by the system administrator. Online deduplication will be added future releases. The bedup deduplication tool has a branch that works against this support. The branch can be found [[https://github.com/g2p/bedup/tree/wip/dedup-syscall|here]]. The author of the deduplication support has also written an sample deduplication tool, duperemove, which can be found [[https://github.com/markfasheh/duperemove|here]]. Code: [[http://git.kernel.org/linus/416161db9b63e353a8fb79d1369779175102fca1|commit]] |
Line 31: | Line 25: |
The website [http://Phoronix.com Phoronix.com] found that graphic performance in modern AMD Radeon GPUs had improved a lot in Linux 3.12. However, there hasn't been any important modification on in the Radeon driver that can cause such massive gains. After [http://www.phoronix.com/scan.php?page=article&item=linux_312_performance&num=1 some investigation], Phoronix found out that the responsible change for this boost wasn't a change in the Radeon driver itself, but [http://anzwix.com/a/Linux%20Kernel/CpufreqOndemandChangeTheCalculationOfTargetFrequ a change to the algorithms in the cpufreq ondemand governor]. Apparently, the ondemand governor was oscillating too much between frequencies, and this oscillation harmed graphic performance for Radeon GPUs. The new algorithm added a better frequency algorithm that eliminates this problem. Code: [http://git.kernel.org/linus/dfa5bb622555d9da0df21b50f46ebdeef390041b commit] |
The website [[http://Phoronix.com|Phoronix.com]] found that graphic performance in modern AMD Radeon GPUs had improved a lot in Linux 3.12. However, there hasn't been any important modification on in the Radeon driver that can cause such massive gains. After [[http://www.phoronix.com/scan.php?page=article&item=linux_312_performance&num=1|some investigation]], Phoronix found out that the responsible change for this boost wasn't a change in the Radeon driver itself, but [[http://anzwix.com/a/Linux%20Kernel/CpufreqOndemandChangeTheCalculationOfTargetFrequ|a change to the algorithms in the cpufreq ondemand governor]]. Apparently, the ondemand governor was oscillating too much between frequencies, and this oscillation harmed graphic performance for Radeon GPUs. The new frequency algorithm eliminates this problem. Code: [[http://git.kernel.org/linus/dfa5bb622555d9da0df21b50f46ebdeef390041b|commit]] |
Line 40: | Line 34: |
Code: [http://git.kernel.org/linus/0d69704ae348c03bc216b01e32a0e9a2372be419 commit 1], [http://git.kernel.org/linus/5addcf0a5f0fadceba6bd562d0616a1c5d4c1a4d 2], [http://git.kernel.org/linus/246efa4a072f3a2e03010ef0b78b0974ec69c377 3] | Code: [[http://git.kernel.org/linus/0d69704ae348c03bc216b01e32a0e9a2372be419|commit 1]], [[http://git.kernel.org/linus/5addcf0a5f0fadceba6bd562d0616a1c5d4c1a4d|2]], [[http://git.kernel.org/linus/246efa4a072f3a2e03010ef0b78b0974ec69c377|3]] |
Line 46: | Line 40: |
For more information, see this blog post: [https://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/ Splitting DRM and KMS device nodes] Code: [http://git.kernel.org/linus/1793126fcebd7c18834f95d43b55e387a8803aa8 commit 1], [http://git.kernel.org/linus/7d7612582c15af8772c2fb2473d5fc7eebfefae2 2], [http://git.kernel.org/linus/f33bcab9e816c5bf56b74c3007790f2a256910eb 3], [http://git.kernel.org/linus/10ba50129ab0bdbc0ee712e50913d1c8db88c5f0 4] |
For more information, see this blog post: [[https://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/|Splitting DRM and KMS device nodes]] Code: [[http://git.kernel.org/linus/1793126fcebd7c18834f95d43b55e387a8803aa8|commit 1]], [[http://git.kernel.org/linus/7d7612582c15af8772c2fb2473d5fc7eebfefae2|2]], [[http://git.kernel.org/linus/f33bcab9e816c5bf56b74c3007790f2a256910eb|3]], [[http://git.kernel.org/linus/10ba50129ab0bdbc0ee712e50913d1c8db88c5f0|4]] |
Line 51: | Line 45: |
Linux 3.10 added support for [http://kernelnewbies.org/Linux_3.10#head-62fadba76893e85ee7fb75d548536c5635baca54 timerless multitasking], that is, the ability to run processes without needing to fire up the timer interrupt that is traditionally used to implement multitasking. This support, however, had a caveat: it could turn off interrupts in all CPUs, except one that is used to track timer information for the other CPUs. But that CPU keeps the timer turned on even if all the CPUs are idle, which was useless. This release allows to disable the timer for the timekeeping CPU when all CPUs are idle. Recommended LWN article: [https://lwn.net/Articles/558284/ Is the whole system idle?] Code: [http://git.kernel.org/linus/b44379af1cf40050794832c38ea6a64e07eb5087 commit 1], [http://git.kernel.org/linus/8bdf7a252b6398dbd4beaa7a2ba0904cea0abd04 2], [http://git.kernel.org/linus/d4bd54fbac2ea5c30eb976ca557e905f489d55f4 3], [http://git.kernel.org/linus/217af2a2ffbfc1498d1cf3a89fa478b5632df8f7 4], [http://git.kernel.org/linus/0edd1b1784cbdad55aca2c1293be018f53c0ab1d 5], [http://git.kernel.org/linus/eb348b898290da242e46df75ab0b9772003e08b8 6], [http://git.kernel.org/linus/2333210b26cf7aaf48d71343029afb860103d9f9 7], [http://git.kernel.org/linus/eb75767be0e514f97bf1b5cec763696cfc7f7e2a 8] |
Linux 3.10 added support for [[http://kernelnewbies.org/Linux_3.10#head-62fadba76893e85ee7fb75d548536c5635baca54|timerless multitasking]], that is, the ability to run processes without needing to fire up the timer interrupt that is traditionally used to implement multitasking. This support, however, had a caveat: it could turn off interrupts in all CPUs, except one that is used to track timer information for the other CPUs. But that CPU keeps the timer turned on even if all the CPUs are idle, which was useless. This release allows to disable the timer for the timekeeping CPU when all CPUs are idle. Recommended LWN article: [[https://lwn.net/Articles/558284/|Is the whole system idle?]] Code: [[http://git.kernel.org/linus/b44379af1cf40050794832c38ea6a64e07eb5087|commit 1]], [[http://git.kernel.org/linus/8bdf7a252b6398dbd4beaa7a2ba0904cea0abd04|2]], [[http://git.kernel.org/linus/d4bd54fbac2ea5c30eb976ca557e905f489d55f4|3]], [[http://git.kernel.org/linus/217af2a2ffbfc1498d1cf3a89fa478b5632df8f7|4]], [[http://git.kernel.org/linus/0edd1b1784cbdad55aca2c1293be018f53c0ab1d|5]], [[http://git.kernel.org/linus/eb348b898290da242e46df75ab0b9772003e08b8|6]], [[http://git.kernel.org/linus/2333210b26cf7aaf48d71343029afb860103d9f9|7]], [[http://git.kernel.org/linus/eb75767be0e514f97bf1b5cec763696cfc7f7e2a|8]] |
Line 61: | Line 55: |
Code: [http://git.kernel.org/linus/851c30c9badfc6b294c98e887624bff53644ad21 commit1], [http://git.kernel.org/linus/b721420e8719131896b009b11edbbd27d9b85e98 2] | Code: [[http://git.kernel.org/linus/851c30c9badfc6b294c98e887624bff53644ad21|commit1]], [[http://git.kernel.org/linus/b721420e8719131896b009b11edbbd27d9b85e98|2]] |
Line 67: | Line 61: |
Recommended paper: [http://www.xen.org/files/xensummitboston08/LHP.pdf Prevent Guests from Spinning Around] Code: [http://git.kernel.org/linus/545ac13892ab391049a92108cf59a0d05de7e28c commit 1], [http://git.kernel.org/linus/92b75202e5e8790905f9441ccaea2456cc4621a5 2], [http://git.kernel.org/linus/80bd58fef495d000a02fc5b55ca76d423400e748 3], [http://git.kernel.org/linus/b8fa70b51aa76737bdb6b493901ef7376977489c 4] |
Recommended paper: [[http://www.xen.org/files/xensummitboston08/LHP.pdf|Prevent Guests from Spinning Around]] Code: [[http://git.kernel.org/linus/545ac13892ab391049a92108cf59a0d05de7e28c|commit 1]], [[http://git.kernel.org/linus/92b75202e5e8790905f9441ccaea2456cc4621a5|2]], [[http://git.kernel.org/linus/80bd58fef495d000a02fc5b55ca76d423400e748|3]], [[http://git.kernel.org/linus/b8fa70b51aa76737bdb6b493901ef7376977489c|4]] |
Line 75: | Line 69: |
Recommended LWN article: [https://lwn.net/Articles/565734/ Introducing lockrefs] Code: [http://git.kernel.org/linus/bc08b449ee14ace4d869adaa1bb35a44ce68d775 commit 1], [http://git.kernel.org/linus/15570086b590a69d59183b08a7770e316cca20a7 2], [http://git.kernel.org/linus/df3d0bbcdb2cafa23a70223d806655bd37e64a9b 3], [http://git.kernel.org/linus/e7d33bb5ea82922e6ddcfc6b28a630b1a4ced071 4], [http://git.kernel.org/linus/232d2d60aa5469bb097f55728f65146bd49c1d25 5], [http://git.kernel.org/linus/71c7356f864dc41e4bd6b884596a422f8954afe0 6] |
Recommended LWN article: [[https://lwn.net/Articles/565734/|Introducing lockrefs]] Code: [[http://git.kernel.org/linus/bc08b449ee14ace4d869adaa1bb35a44ce68d775|commit 1]], [[http://git.kernel.org/linus/15570086b590a69d59183b08a7770e316cca20a7|2]], [[http://git.kernel.org/linus/df3d0bbcdb2cafa23a70223d806655bd37e64a9b|3]], [[http://git.kernel.org/linus/e7d33bb5ea82922e6ddcfc6b28a630b1a4ced071|4]], [[http://git.kernel.org/linus/232d2d60aa5469bb097f55728f65146bd49c1d25|5]], [[http://git.kernel.org/linus/71c7356f864dc41e4bd6b884596a422f8954afe0|6]] |
Line 84: | Line 78: |
Recommended LWN article: [https://lwn.net/Articles/562211/#oom Reliable out-of-memory handling] Code: [http://git.kernel.org/linus/94bce453c78996cc4373d5da6cfabe07fcc6d9f9 commit 1], [http://git.kernel.org/linus/871341023c771ad233620b7a1fb3d9c7031c4e5c 2], [http://git.kernel.org/linus/759496ba6407c6994d6a5ce3a5e74937d7816208 3], [http://git.kernel.org/linus/3a13c4d761b4b979ba8767f42345fed3274991b0 4], [http://git.kernel.org/linus/519e52473ebe9db5cdef44670d5a97f1fd53d721 5], [http://git.kernel.org/linus/fb2a6fc56be66c169f8b80e07ed999ba453a2db2 6], [http://git.kernel.org/linus/3812c8c8f3953921ef18544110dafc3505c1ac62 7] |
Recommended LWN article: [[https://lwn.net/Articles/562211/#oom|Reliable out-of-memory handling]] Code: [[http://git.kernel.org/linus/94bce453c78996cc4373d5da6cfabe07fcc6d9f9|commit 1]], [[http://git.kernel.org/linus/871341023c771ad233620b7a1fb3d9c7031c4e5c|2]], [[http://git.kernel.org/linus/759496ba6407c6994d6a5ce3a5e74937d7816208|3]], [[http://git.kernel.org/linus/3a13c4d761b4b979ba8767f42345fed3274991b0|4]], [[http://git.kernel.org/linus/519e52473ebe9db5cdef44670d5a97f1fd53d721|5]], [[http://git.kernel.org/linus/fb2a6fc56be66c169f8b80e07ed999ba453a2db2|6]], [[http://git.kernel.org/linus/3812c8c8f3953921ef18544110dafc3505c1ac62|7]] |
Line 91: | Line 86: |
XFS has added support for a directory entry file type, the purpose is that readdir can return the type of the inode the dirent points to to userspace without first having to read the inode off disk. Performance of directory recursion is much improved. Parallel walk of ~50 million directory entries across hundreds of directories improves significantly, from roughly 500 getdents() calls per second and 250,000 inode lookups per second to determine the inode type at roughly 17,000 read IOPS to 3500 getdents() calls per second at 16,000 IOPS, with no inode lookups at all. | XFS has added support for a directory entry file type, the purpose is that readdir can return the type of the inode the dirent points to userspace without first having to read the inode off disk. Performance of directory recursion is much improved. Parallel walk of ~50 million directory entries across hundreds of directories improves significantly, from roughly 500 getdents() calls per second and 250,000 inode lookups per second to determine the inode type at roughly 17,000 read IOPS to 3500 getdents() calls per second at 16,000 IOPS, with no inode lookups at all. |
Line 95: | Line 90: |
Code: [http://git.kernel.org/linus/0cb97766f2928579f1029ea7b28ae946cdd6fbe1 commit 1], [http://git.kernel.org/linus/1c55cece084aa4c9a3fa34ed4eecbdf18afbf05d 2], [http://git.kernel.org/linus/21b5c9784bceb8b8e0095f87355f3b138ebac2d0 3], [http://git.kernel.org/linus/d6970d4b726cea6d7a9bc4120814f95c09571fc3 4], [http://git.kernel.org/linus/638f44163d57f87d0905fbed7d54202beff916fc 5] |
Code: [[http://git.kernel.org/linus/0cb97766f2928579f1029ea7b28ae946cdd6fbe1|commit 1]], [[http://git.kernel.org/linus/1c55cece084aa4c9a3fa34ed4eecbdf18afbf05d|2]], [[http://git.kernel.org/linus/21b5c9784bceb8b8e0095f87355f3b138ebac2d0|3]], [[http://git.kernel.org/linus/d6970d4b726cea6d7a9bc4120814f95c09571fc3|4]], [[http://git.kernel.org/linus/638f44163d57f87d0905fbed7d54202beff916fc|5]] == Improved tty layer locking == The tty layer locking got cleaned up and in the process a lot of locking became per-tty, which actually shows up on some odd loads. Commits: [[https://git.kernel.org/linus/2f01ea908bcf838e815c0124b579513dbda3b8c8|merge commit]] == IPC locking improvements == This release includes improvements on the amount of contention we impose on the ipc lock (kern_ipc_perm.lock). These changes mostly deal with shared memory, previous work has already been done for [[http://kernelnewbies.org/Linux_3.10#head-5c725e42ba8f05ed7767cfaf1c8e8c6546c4caec|semaphores in 3.10]] and [[http://kernelnewbies.org/Linux_3.11#head-893b1abbed0138e9124ae9de6705c5c0b91edfe7|message queues in 3.11]]. With these chanves, a custom shm microbenchmark stressing shmctl doing IPC_STAT with 4 threads a million times, reduces the execution time by 50%. A similar run, this time with IPC_SET, reduces the execution time from 3 mins and 35 secs to 27 seconds. Code: [[http://git.kernel.org/linus/4718787d1f626f45ddb239912bc07266b9880044|commit]], [[http://git.kernel.org/linus/8b8d52ac382b17a19906b930cd69e2edb0aca8ba|2]], [[http://git.kernel.org/linus/68eccc1dc345539d589ae78ee43b835c1a06a134|3]], [[http://git.kernel.org/linus/c97cb9ccab8c85428ec21eff690642ad2ce1fa8a|4]], [[http://git.kernel.org/linus/c2c737a0461e61a34676bd0bd1bc1a70a1b4e396|5]], [[http://git.kernel.org/linus/2caacaa82a51b78fc0c800e206473874094287ed|6]], [[http://git.kernel.org/linus/79ccf0f8c8e04e8b9eda6645ba0f63b0915a3075|7]], [[http://git.kernel.org/linus/7a25dd9e042b2b94202a67e5551112f4ac87285a|8]], [[http://git.kernel.org/linus/530fcd16d87cd2417c472a581ba5a1e501556c86|9]], [[http://git.kernel.org/linus/05603c44a7627793219b0bd9a7b236099dc9cd9d|10]] |
Line 101: | Line 110: |
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.12-DriversArch Linux_3.12-DriversArch page] | All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.12-DriversArch|Linux_3.12-DriversArch page]] |
Line 104: | Line 113: |
* task scheduler: Implement smarter wake-affine logic [[http://git.kernel.org/linus/62470419e993f8d9d93db0effd3af4296ecb79a5|commit]] * seqlock: Add a new locking reader type [[http://git.kernel.org/linus/1370e97bb2eb1ef2df7355204e5a4ba13e12b861|commit]] * idr: Percpu ida [[http://git.kernel.org/linus/798ab48eecdf659df9ae0064ca5c62626c651827|commit]] * initmpfs: use initramfs if rootfstype= or root= specified [[http://git.kernel.org/linus/6e19eded3684dc184181093af3bff2ff440f5b53|commit]] * Lock in place mounts from more privileged users [[http://git.kernel.org/linus/5ff9d8a65ce80efb509ce4e8051394e9ed2cd942|commit]] * sysfs: Restrict mounting sysfs [[http://git.kernel.org/linus/7dc5dbc879bd0779924b5132a48b731a0bc04a1e|commit]] * CacheFiles: Implement interface to check cache consistency [[http://git.kernel.org/linus/5002d7bef81c9646bbb06fb57db4a100aa5a57c5|commit]], [[http://git.kernel.org/linus/da9803bc8812f5bd3b26baaa90e515b843c65ff7|commit]] * modules: add support for soft module dependencies [[http://git.kernel.org/linus/674349f365ce7ac2b826edc619907a19c7136822|commit]], [[http://git.kernel.org/linus/7cb14ba75d57910cc4b62115dd5db7bd83c93684|commit]] * Add support to aio ring pages migration [[http://git.kernel.org/linus/36bc08cc01709b4a9bb563b35aa530241ddc63e3|commit]] * Implement generic deferred AIO completions [[http://git.kernel.org/linus/7b7a8665edd8db733980389b098530f9e4f630b2|commit]] |
|
Line 105: | Line 125: |
* Rework the caching shrinking mechanisms, recommended LWN article: [[https://lwn.net/Articles/550463/|Smarter shrinkers]]; [[https://git.kernel.org/linus/3942c07ccf98e66b8893f396dca98f5b076f905f|commit]] * Data writeback: add strictlimit feature. The feature prevents mistrusted filesystems (ie: FUSE mounts created by unprivileged users) to grow a large number of dirty pages before throttling. [[http://git.kernel.org/linus/5a53748568f79641eaf40e41081a2f4987f005c2|commit]] * Page allocator: fair zone allocator policy [[http://git.kernel.org/linus/81c0a2bb515fd4daae8cab64352877480792b515|commit]] * Add hugepage node migration support [[http://git.kernel.org/linus/e2d8cf405525d83e6ca42969be460f94b0339798|commit]], [[http://git.kernel.org/linus/c8721bbbdd36382de51cd6b7a56322e0acca2414|commit]], [[http://git.kernel.org/linus/74060e4d78795c7c43805133cb717d82533d4e0d|commit]] * Account anon transparent huge pages into NR_ANON_PAGES [[http://git.kernel.org/linus/3cd14fcd3f128d5eba8575491cb4e1999ee1bad2|commit]] * swap: change block allocation algorithm for SSD [[http://git.kernel.org/linus/2a8f9449343260373398d59228a62a4332ea513a|commit]] * swap: make cluster allocation per-cpu [[http://git.kernel.org/linus/ebc2a1a69111eadfeda8487e577f1a5d42ef0dae|commit]] * swap: make swap discard async [[http://git.kernel.org/linus/815c2c543d3aeb914a361f981440ece552778724|commit]] |
|
Line 106: | Line 136: |
* Detect hybrid MBRs [[http://git.kernel.org/linus/b05ebbbbeb67a420d06567c6b9618a9e644d6104|commit]] * dm cache: add data block size limits. Inform users that the data block size can't be any arbitrary number, i.e. its value must be between 32KB and 1GB. Also, it should be a multiple of 32KB [[http://git.kernel.org/linus/054730446315d2a9a41f4232ebf1d5034244d054|commit]] |
|
Line 107: | Line 140: |
* Btrfs * Limit the size of delayed allocation ranges, which will limit extent sizes to 128 MB [[http://git.kernel.org/linus/573aecafca1cf7a974231b759197a1aebcf39c2a|commit]] * Allow compressed extents to be merged during defragment [[http://git.kernel.org/linus/116e0024c453dfdfacc9278f485dabc9c63a4ac4|commit]] * Add mount option to force UUID tree checking [[http://git.kernel.org/linus/f420ee1e923b931eeef5e2928791e84b1197cab3|commit]] * Check UUID tree during mount if required [[http://git.kernel.org/linus/70f801754728017ebc909d603c69255dc1e6f06f|commit]] * Create UUID tree if required [[http://git.kernel.org/linus/f7a81ea4cc6bdb51d8267d2f3ff485f0b4070074|commit]] * Fill UUID tree initially [[http://git.kernel.org/linus/803b2f54fb4faf6d76fca43e59bcc555d9713cd4|commit]] * Ext4 * Add support for extent pre-caching through a new fiemap flag. This is critically important when using AIO to a preallocated file [[http://git.kernel.org/linus/7869a4a6c5caa7b2e5c41ccaf46eb3371f88eea7|commit]], [[http://git.kernel.org/linus/107a7bd31ac003e42c0f966aa8e5b26947de6024|commit]] * Allow specifying external journal by pathname mount option [[http://git.kernel.org/linus/ad4eec613536dc7e5ea0c6e59849e6edca634d8b|commit]] * Mark block group as corrupt on block bitmap error [[http://git.kernel.org/linus/163a203ddb36c36d4a1c942aececda0cc8d06aa7|commit]] * Mark group corrupt on group descriptor checksum [[http://git.kernel.org/linus/bdfb6ff4a255dcebeb09a901250e13a97eff75af|commit]] * Ext3 * Allow specifying external journal by pathname mount option [[http://git.kernel.org/linus/cf7eff4666629de006c5ed78de79e40f483c3b06|commit]] |
|
Line 109: | Line 160: |
* Add support for the Q_XGETQSTATV quotacl command [http://git.kernel.org/linus/5d5e3d57605e77708685e8d20a40fe86891db299 commit] * Introduce object readahead to log recovery [http://git.kernel.org/linus/00574da199291751bfaaee15ad0f42a7144276ad commit] |
* Add support for the Q_XGETQSTATV quotacl command [[http://git.kernel.org/linus/5d5e3d57605e77708685e8d20a40fe86891db299|commit]] * Introduce object readahead to log recovery [[http://git.kernel.org/linus/00574da199291751bfaaee15ad0f42a7144276ad|commit]] * F2FS * Add support the inline xattrs [[http://git.kernel.org/linus/444c580f7e9ad29927a5d5269d576bd7cdccebb8|commit]], http://git.kernel.org/linus/65985d935ddd5657c66a8bb3ae9752ed842549b8 commit] * Add support for controlling the garbage collection policy [[http://git.kernel.org/linus/b59d0bae6ca30c496f298881616258f9cde0d9c6|commit]], [[http://git.kernel.org/linus/d2dc095f4280ad5fdea33769e8e119fd16648426|commit]] * Pstore * Add compression support to pstore [[http://git.kernel.org/linus/b0aad7a99c1df90c23ff4bac76eea9cf25049e9e|commit]] * Add decompression support to pstore [[http://git.kernel.org/linus/adb42f5e105502aff2fc4518b16ba79c203fae4f|commit]] * Add file extension to pstore file if compressed [[http://git.kernel.org/linus/9ad2cbe0a9b88ee6ee895d03b2c63fa1252c8e52|commit]] * CEPH * Punch hole support [[http://git.kernel.org/linus/ad7a60de882aca31afb58721db166f7e77afcd92|commit]] * HFS+ * Implement POSIX ACLs support [[http://git.kernel.org/linus/eef80d4ad1399067f26538a7dd56ff3df71e9278|commit]] * NFS * Refuse mount attempts with proto=udp [[http://git.kernel.org/linus/6da1a034362f86e157e251e65394f0b6570e3e3a|commit]] * isofs * Refuse RW mount of the filesystem instead of making it RO [[http://git.kernel.org/linus/17b7f7cf58926844e1dd40f5eb5348d481deca6a|commit]] * udf * Refuse RW mount of the filesystem instead of making it RO [[http://git.kernel.org/linus/e729eac6f65e11c5f03b09adcc84bd5bcb230467|commit]] |
Line 112: | Line 188: |
* tcp: TCP_NOTSENT_LOWAT socket option [[http://git.kernel.org/linus/c9bee3b7fdecb0c1d070c7b54113b3bdfb9a3d36|commit]] * tcp: TSO packets automatic sizing [[http://git.kernel.org/linus/95bd09eb27507691520d39ee1044d6ad831c1168|commit]] * tcp: add tcp_syncookies mode to allow unconditionally generation of syncookies [[http://git.kernel.org/linus/5ad37d5deee1ff7150a2d0602370101de158ad86|commit]] * tcp: increase throughput when reordering is high [[http://git.kernel.org/linus/0f7cc9a3c2bd89b15720dbf358e9b9e62af27126|commit]] * tcp: prefer packet timing to TS-ECR for RTT [[http://git.kernel.org/linus/5b08e47caf1f2034a3a5b566bbccc8b0be3961ca|commit]] * tcp: use RTT from SACK for RTO [[http://git.kernel.org/linus/ed08495c31bb991de636d2488abaa50b39f2ff4a|commit]] * ipv6: Add generic UDP Tunnel segmentation [[http://git.kernel.org/linus/d949d826c09fb65e230f55868ff70dc581ec06fa|commit]] * ipv6: drop fragmented ndisc packets by default (RFC 6980) [[http://git.kernel.org/linus/b800c3b966bcf004bd8592293a49ed5cb7ea67a9|commit]] * ipv6: mld: implement RFC3810 MLDv2 mode only [[http://git.kernel.org/linus/58c0ecfd8d9871cfa35bcdbf3e7b3ee9ca62ea67|commit]] * bridge: apply multicast snooping to IPv6 link-local, too [[http://git.kernel.org/linus/3c3769e63301fd92fcaf51870c371583dd0282ce|commit]] * macvlan fdb replace support [[http://git.kernel.org/linus/ab2cfbb2bddb7c7bc4394e52e91044d5ff645cb4|commit]] * Devices: export physical port id via sysfs [[http://git.kernel.org/linus/ff80e519ab1b3a6abb2c6bbf684b98be07111879|commit]] * igmp: Allow user-space configuration of igmp unsolicited report interval [[http://git.kernel.org/linus/2690048c01f32bf45d1c1e1ab3079bc10ad2aea7|commit]] * tcp_probe: add IPv6 support [[http://git.kernel.org/linus/f925d0a62db3f1b6e463ef956d0855006538d002|commit]] * tcp_probe: allow more advanced ingress filtering by mark [[http://git.kernel.org/linus/b1dcdc68b1f4cc77f603d7507f7a14f1f4864d41|commit]] * netfilter: add IPv6 SYNPROXY target [[http://git.kernel.org/linus/4ad362282cb45bbc831a182e45637da8c5bd7aa1|commit]] * Wireless * Use reduced txpower for 5 and 10 MHz [[http://git.kernel.org/linus/0430c883470d0c9a23661ea9f02c56b1d91cf93c|commit]] * Add packet coalesce support [[http://git.kernel.org/linus/be29b99a9b51b0338eea3c66a58de53bbd01de24|commit]] * Allow scanning for 5/10 MHz channels in IBSS [[http://git.kernel.org/linus/7ca15a0ae865067aac8d36e27e0acbe4a8f1e70a|commit]] * openvswitch * Add SCTP support [[http://git.kernel.org/linus/a175a723301a8a4a9fedf9ce5b8ca586e7a97b40|commit]] * Add vxlan tunneling support. [[http://git.kernel.org/linus/58264848a5a7b91195f43c4729072e8cc980288d|commit]] * Mega flow implementation [[http://git.kernel.org/linus/03f0d916aa0317592dda11bd17c7357858719b6c|commit]] * pkt_sched: fq: Fair Queue packet scheduler [[http://git.kernel.org/linus/afe4fd062416b158a8a8538b23adc1930a9b88dc|commit]] * pktgen: Add UDPCSUM flag to support UDP checksums [[http://git.kernel.org/linus/c26bf4a51308c85a6f97628253b99767a84ff90a|commit]] * qdisc: allow setting default queuing discipline [[http://git.kernel.org/linus/6da7c8fcbcbdb50ec68c61b40d554c74850fdb91|commit]] * tun: Add ability to create tun device with given index [[http://git.kernel.org/linus/fb7589a162162223e6bb6422dde3fb1ce07d9a78|commit]] * tun: Allow to skip filter on attach [[http://git.kernel.org/linus/849c9b6f93cc4cb5eb59301b6380a7a81b43f414|commit]] * tun: Support software transmit time stamping. [[http://git.kernel.org/linus/eda297729171fe16bf34fe5b0419dfb69060f623|commit]] * tuntap: hardware vlan tx support [[http://git.kernel.org/linus/6680ec68eff47d36f67b4351bc9836fd6cba9532|commit]] * vxlan: Add tx-vlan offload support. [[http://git.kernel.org/linus/1eaa81785a70082213d40de14ec13520b5c6fff2|commit]] * vxlan: add ipv6 support [[http://git.kernel.org/linus/e4c7ed415387cf718ffbec305396c30cee092987|commit]] * NFC: Add a GET_SE netlink API, which dumps a list of discovered secure elements in an NFC controller [[http://git.kernel.org/linus/ac22ac466a659f1b2e02a2e2ee23fc5c42da2c95|commit]] * Infiniband: Add receive flow steering support [[http://git.kernel.org/linus/319a441d1361ea703b091caf92418f8121eadfc5|commit]] * USBNET: Improving USB3 thoughtput [[http://git.kernel.org/linus/452c447a497dce3c9faeb9ac7f2e1ff39232876b|commit]] |
|
Line 113: | Line 227: |
* omap-sham - Add OMAP5/AM43XX SHAM Support [[http://git.kernel.org/linus/7d7c704d0dc9858e6bbb515842e32acb70cf0222|commit]] * omap-sham - Add SHA384 and SHA512 Support [[http://git.kernel.org/linus/eaef7e3f3f82923ea175ce4859908bb0d70072f3|commit]] * Add NEON accelerated XOR implementation [[http://git.kernel.org/linus/01956597cbc46df072f20f90a40eebe356200c38|commit]] * Add OMAP4 random generator support [[http://git.kernel.org/linus/e83872c989fb704748956c0bf1b69874a35492c6|commit]] |
|
Line 114: | Line 235: |
* Adds nested EPT support to KVM's nested VMX. Nested EPT means emulating EPT for an L1 guest so that L1 can use EPT when running a nested guest L2 [[http://git.kernel.org/linus/37406aaaeebc36632efc3f493363da9644e57ef1|commit]] * vmware: Add support for virtual IOMMU [[http://git.kernel.org/linus/6d6dfb4f4aa9ee352a199b5379942350bdd26e64|commit]], Add support for virtual IOMMU in VMXNET3 [[http://git.kernel.org/linus/b0eb57cb97e7837ebb746404c2c58c6f536f23fa|commit]] * vfio-pci: PCI hot reset interface [[http://git.kernel.org/linus/8b27ee60bfd6bbb84d2df28fa706c5c5081066ca|commit]] * vfio: add external user support [[http://git.kernel.org/linus/6cdd97821322352b94bb92f271b4466ad38a2468|commit]] * xen: Support 64-bit PV guest receiving NMIs [[http://git.kernel.org/linus/6efa20e49b9cb1db1ab66870cc37323474a75a13|commit]] * Add xen tpmfront interface [[http://git.kernel.org/linus/e2683957fb268c6b29316fd9e7191e13239a30a5|commit]] |
|
Line 115: | Line 244: |
* Apparmor * Add an optional profile attachment string for profiles [[http://git.kernel.org/linus/556d0be74b19cb6288e5eb2f3216eac247d87968|commit]] * Add interface files for profiles and namespaces [[http://git.kernel.org/linus/0d259f043f5f60f74c4fd020aac190cb6450e918|commit]] * Add the ability to report a sha1 hash of loaded policy [[http://git.kernel.org/linus/f8eb8a1324e81927b2c64823b2fc38386efd3fef|commit]] * Add the profile introspection file to interface [[http://git.kernel.org/linus/29b3822f1e132aa0f115f69730d6e4182df153d4|commit]] * Allow setting any profile into the unconfined state [[http://git.kernel.org/linus/038165070aa55375d4bdd2f84b34a486feca63d6|commit]] * Enable users to query whether apparmor is enabled [[http://git.kernel.org/linus/c611616cd3cb27f9605ee4954532b3fe144d951b|commit]] |
|
Line 116: | Line 253: |
* perf * Add option to limit stack depth in callchain dumps [[http://git.kernel.org/linus/307cbb92aa2bdc9eed7c74409ff4d5fc9135b4e2|commit]] * Add option to print stack trace on single line [[http://git.kernel.org/linus/b0b35f0179161a5e256eebffa274b0b6f023f451|commit]] * diff: Add generic order option for compute sorting [[http://git.kernel.org/linus/5f3f8d3b1207cba3664d57a33de43f5ee11c8a06|commit]] * diff: Update perf diff documentation for multiple data comparison [[http://git.kernel.org/linus/3a3beae81dae4960cac99fb6deeaca371f0790eb|commit]] * gtk/hists: Display callchain overhead also [[http://git.kernel.org/linus/cc60f24e225e50a0b57398f9ba105fd8ffcf4bb3|commit]] * kvm stat report: Add option to analyze specific VM [[http://git.kernel.org/linus/2e73f00fe707a8f2476d989de946c12078c7c066|commit]] * kvm: Add live mode [[http://git.kernel.org/linus/1afe1d148491069ef51ed69fa53b09e1cb3ec30d|commit]], [[http://git.kernel.org/linus/9a6d316692d59c4400a66b01db675abac432b4b2|commit]] * list: Skip unsupported events [[http://git.kernel.org/linus/b41f1cec91c37eeea6fdb15effbfa24ea0a5536b|commit]] * perf report/top: Add option to collapse undesired parts of call graph [[http://git.kernel.org/linus/b21484f1a1f300d422cfe5d4f8f50015e22cea24|commit]] * stat: Add support for --initial-delay option [[http://git.kernel.org/linus/411916880ff4061ac0491a154f10af4d49a0c61a|commit]] * symbols: Add support for reading from /proc/kcore [[http://git.kernel.org/linus/8e0cf965f95edd41df11cca50b92b4cb6ea8d80a|commit]] * tools: Add 'S' event/group modifier to read sample value [[http://git.kernel.org/linus/3c1763115b492afb743daa4e1c8099eca6a70634|commit]] * tools: Default to cpu// for events v5 [[http://git.kernel.org/linus/50e200f07948400694238e08e7add73df5ba8f83|commit]] * tools: Make it possible to read object code from kernel modules [[http://git.kernel.org/linus/0131c4ec794a7409eafff0c79105309540aaca4d|commit]] * tools: Make it possible to read object code from vmlinux [[http://git.kernel.org/linus/39b12f7812710e9a5896805d96812b3ede7491e8|commit]] * top: Add --objdump option [[http://git.kernel.org/linus/0d3942dbcf7f7e8955ba89deed4749b0ad64d721|commit]] * trace: Allow specifying which syscalls to trace [[http://git.kernel.org/linus/2ae3a312c0ccd8ff615372f00aab1700aac27474|commit]] * trace: Implement -o/--output filename [[http://git.kernel.org/linus/c24ff998fc420891f17d73acab6766823d492175|commit]] * trace: Support ! in -e expressions [[http://git.kernel.org/linus/b059efdf52a27819b78aa30f171f1e8e439152b6|commit]] |
|
Line 117: | Line 277: |
* LWN [https://lwn.net/Articles/565715/ part 1], [https://lwn.net/Articles/566122/ part 2], [https://lwn.net/Articles/566546/ part 3] | * LWN [[https://lwn.net/Articles/565715/|part 1]], [[https://lwn.net/Articles/566122/|part 2]], [[https://lwn.net/Articles/566546/|part 3]] |
Linux 3.12 was released on November 2, 2013
Summary: This release adds support for offline deduplication in Btrfs, automatic GPU switching in laptops with dual GPUs, a performance boost for AMD Radeon graphics, better RAID-5 multicore performance, improved handling of out-of-memory situations, improved VFS path name resolution scalability, improvements to the timerless multitasking mode, separate modesetting and rendering device nodes in the graphics DRM layer, improved locking performance for virtualized guests, XFS directory recursion scalability improvements, IPC scalability improvements, tty layer locking improvements, new drivers and many small improvements.
Contents
-
Prominent features
- Offline data deduplication support in Btrfs
- Graphic performance boost for AMD Radeon hardware
- Automatic GPU switching in laptops with dual GPUs
- Separate devices nodes for graphics mode setting and rendering
- Improved timerless multitasking: allow timekeeping CPU go idle
- RAID5 multithreading
- Improved locking performance for virtualized guests
- New lockref locking scheme, VFS locking improvements
- Better Out-Of-Memory handling
- XFS directory recursion scalability, namespace support
- Improved tty layer locking
- IPC locking improvements
- Drivers and architectures
- Core
- Memory management
- Block layer
- File systems
- Networking
- Crypto
- Virtualization
- Security
- Tracing/perf
- Other news sites that track the changes of this release
1. Prominent features
1.1. Offline data deduplication support in Btrfs
The Btrfs filesystem has gained support for offline data deduplication. Deduplication consists in removing copies of repeated data in the filesystem, since the data is the same only one copy is necessary. In some particular workloads, like virtualization VMs -which often contain similar copies of operating systems- or backups the gains can be enormous. By "offline", it means that the deduplication process is done when the file system is mounted and running, but it's not done automatically and transparently as processes write data, but rather it's triggered by userspace software at a time controlled by the system administrator. Online deduplication will be added future releases.
The bedup deduplication tool has a branch that works against this support. The branch can be found here.
The author of the deduplication support has also written an sample deduplication tool, duperemove, which can be found here.
Code: commit
1.2. Graphic performance boost for AMD Radeon hardware
The website Phoronix.com found that graphic performance in modern AMD Radeon GPUs had improved a lot in Linux 3.12. However, there hasn't been any important modification on in the Radeon driver that can cause such massive gains. After some investigation, Phoronix found out that the responsible change for this boost wasn't a change in the Radeon driver itself, but a change to the algorithms in the cpufreq ondemand governor. Apparently, the ondemand governor was oscillating too much between frequencies, and this oscillation harmed graphic performance for Radeon GPUs. The new frequency algorithm eliminates this problem.
Code: commit
1.3. Automatic GPU switching in laptops with dual GPUs
Some laptop hardware, like Nvidia Optimus, have two GPUs, one optimized for performance and other for power saving. Until now, some hacks have been needed to switch between these GPUs. In this release, the driver handles the switch automatically
1.4. Separate devices nodes for graphics mode setting and rendering
Recent hardware development (especially on ARM) shows that rendering (via GPU) and mode-setting (via display-controller) are not necessarily bound to the same graphics device. This release incorporates in the graphics layer support for separate device nodes for mode setting and rendering. The main usage is to allow different access-modes for graphics-compositors (which require the modeset API) and client-side rendering or GPGPU-users (which both require the rendering API).
For more information, see this blog post: Splitting DRM and KMS device nodes
1.5. Improved timerless multitasking: allow timekeeping CPU go idle
Linux 3.10 added support for timerless multitasking, that is, the ability to run processes without needing to fire up the timer interrupt that is traditionally used to implement multitasking. This support, however, had a caveat: it could turn off interrupts in all CPUs, except one that is used to track timer information for the other CPUs. But that CPU keeps the timer turned on even if all the CPUs are idle, which was useless. This release allows to disable the timer for the timekeeping CPU when all CPUs are idle.
Recommended LWN article: Is the whole system idle?
Code: commit 1, 2, 3, 4, 5, 6, 7, 8
1.6. RAID5 multithreading
This release attempts to spread the work needed to handle raid 5 stripes to multiple CPUs in the MD ("multiple devices") layer, which allows more IO/sec on fast (SSD) devices.
1.7. Improved locking performance for virtualized guests
The operating system that runs in each virtualized guest also runs its own locks. With some locks, like spinning locks, this causes problems when many guests are present and keep spinning and wasting host CPU time and other problems. This release replaces paravirtualized spinlocks with paravirtualized ticket spinlocks, which have better performance properties for virtualized guests and brings speedups on various benchmarks.
Recommended paper: Prevent Guests from Spinning Around
1.8. New lockref locking scheme, VFS locking improvements
This release adds a new locking scheme, called "lockref". The "lockref" structure is a combination "spinlock and reference count" that allows optimized reference count accesses. In particular, it guarantees that the reference count will be updated as if the spinlock was held, but using atomic accesses that cover both the reference count and the spinlock words, it can often do the update without actually having to take the lock. This allows to avoid the nastiest cases of spinlock contention on large machines. When updating the reference counts on a large system, it will still end up with the cache line bouncing around, but that's much less noticeable than actually having to spin waiting for the lock. This release already uses lockref to improve the scalability of heavy pathname lookup in large systems.
Recommended LWN article: Introducing lockrefs
1.9. Better Out-Of-Memory handling
The Out-Of-Memory state happens when the computer runs out of RAM and swap memory. When Linux gets into this state, it kills a process in order to free memory. This release includes important changes to how the Out-Of-Memory states are handled, the number of out of memory errors sent to userspace and reliability. For more details see the below link.
Recommended LWN article: Reliable out-of-memory handling
Code: commit 1, 2, 3, 4, 5, 6, 7
1.10. XFS directory recursion scalability, namespace support
XFS has added support for a directory entry file type, the purpose is that readdir can return the type of the inode the dirent points to userspace without first having to read the inode off disk. Performance of directory recursion is much improved. Parallel walk of ~50 million directory entries across hundreds of directories improves significantly, from roughly 500 getdents() calls per second and 250,000 inode lookups per second to determine the inode type at roughly 17,000 read IOPS to 3500 getdents() calls per second at 16,000 IOPS, with no inode lookups at all.
This release has also added XFS support for namespaces, and has reincorporated defragmentation support for the new CRC filesystem format.
1.11. Improved tty layer locking
The tty layer locking got cleaned up and in the process a lot of locking became per-tty, which actually shows up on some odd loads.
Commits: merge commit
1.12. IPC locking improvements
This release includes improvements on the amount of contention we impose on the ipc lock (kern_ipc_perm.lock). These changes mostly deal with shared memory, previous work has already been done for semaphores in 3.10 and message queues in 3.11.
With these chanves, a custom shm microbenchmark stressing shmctl doing IPC_STAT with 4 threads a million times, reduces the execution time by 50%. A similar run, this time with IPC_SET, reduces the execution time from 3 mins and 35 secs to 27 seconds.
Code: commit, 2, 3, 4, 5, 6, 7, 8, 9, 10
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the Linux_3.12-DriversArch page
3. Core
task scheduler: Implement smarter wake-affine logic commit
seqlock: Add a new locking reader type commit
idr: Percpu ida commit
initmpfs: use initramfs if rootfstype= or root= specified commit
Lock in place mounts from more privileged users commit
sysfs: Restrict mounting sysfs commit
CacheFiles: Implement interface to check cache consistency commit, commit
modules: add support for soft module dependencies commit, commit
Add support to aio ring pages migration commit
Implement generic deferred AIO completions commit
4. Memory management
Rework the caching shrinking mechanisms, recommended LWN article: Smarter shrinkers; commit
Data writeback: add strictlimit feature. The feature prevents mistrusted filesystems (ie: FUSE mounts created by unprivileged users) to grow a large number of dirty pages before throttling. commit
Page allocator: fair zone allocator policy commit
Account anon transparent huge pages into NR_ANON_PAGES commit
swap: change block allocation algorithm for SSD commit
swap: make cluster allocation per-cpu commit
swap: make swap discard async commit
5. Block layer
Detect hybrid MBRs commit
dm cache: add data block size limits. Inform users that the data block size can't be any arbitrary number, i.e. its value must be between 32KB and 1GB. Also, it should be a multiple of 32KB commit
6. File systems
- Btrfs
Limit the size of delayed allocation ranges, which will limit extent sizes to 128 MB commit
Allow compressed extents to be merged during defragment commit
Add mount option to force UUID tree checking commit
Check UUID tree during mount if required commit
Create UUID tree if required commit
Fill UUID tree initially commit
- Ext4
Add support for extent pre-caching through a new fiemap flag. This is critically important when using AIO to a preallocated file commit, commit
Allow specifying external journal by pathname mount option commit
Mark block group as corrupt on block bitmap error commit
Mark group corrupt on group descriptor checksum commit
- Ext3
Allow specifying external journal by pathname mount option commit
- XFS
- F2FS
Add support the inline xattrs commit, http://git.kernel.org/linus/65985d935ddd5657c66a8bb3ae9752ed842549b8 commit]
Add support for controlling the garbage collection policy commit, commit
- Pstore
- CEPH
Punch hole support commit
- HFS+
Implement POSIX ACLs support commit
- NFS
Refuse mount attempts with proto=udp commit
- isofs
Refuse RW mount of the filesystem instead of making it RO commit
- udf
Refuse RW mount of the filesystem instead of making it RO commit
7. Networking
tcp: TCP_NOTSENT_LOWAT socket option commit
tcp: TSO packets automatic sizing commit
tcp: add tcp_syncookies mode to allow unconditionally generation of syncookies commit
tcp: increase throughput when reordering is high commit
tcp: prefer packet timing to TS-ECR for RTT commit
tcp: use RTT from SACK for RTO commit
ipv6: Add generic UDP Tunnel segmentation commit
ipv6: drop fragmented ndisc packets by default (RFC 6980) commit
ipv6: mld: implement RFC3810 MLDv2 mode only commit
bridge: apply multicast snooping to IPv6 link-local, too commit
macvlan fdb replace support commit
Devices: export physical port id via sysfs commit
igmp: Allow user-space configuration of igmp unsolicited report interval commit
tcp_probe: add IPv6 support commit
tcp_probe: allow more advanced ingress filtering by mark commit
netfilter: add IPv6 SYNPROXY target commit
- Wireless
- openvswitch
pkt_sched: fq: Fair Queue packet scheduler commit
pktgen: Add UDPCSUM flag to support UDP checksums commit
qdisc: allow setting default queuing discipline commit
tun: Add ability to create tun device with given index commit
tun: Allow to skip filter on attach commit
tun: Support software transmit time stamping. commit
tuntap: hardware vlan tx support commit
vxlan: Add tx-vlan offload support. commit
vxlan: add ipv6 support commit
NFC: Add a GET_SE netlink API, which dumps a list of discovered secure elements in an NFC controller commit
Infiniband: Add receive flow steering support commit
USBNET: Improving USB3 thoughtput commit
8. Crypto
omap-sham - Add OMAP5/AM43XX SHAM Support commit
omap-sham - Add SHA384 and SHA512 Support commit
Add NEON accelerated XOR implementation commit
Add OMAP4 random generator support commit
9. Virtualization
Adds nested EPT support to KVM's nested VMX. Nested EPT means emulating EPT for an L1 guest so that L1 can use EPT when running a nested guest L2 commit
vmware: Add support for virtual IOMMU commit, Add support for virtual IOMMU in VMXNET3 commit
vfio-pci: PCI hot reset interface commit
vfio: add external user support commit
xen: Support 64-bit PV guest receiving NMIs commit
Add xen tpmfront interface commit
10. Security
- Apparmor
Add an optional profile attachment string for profiles commit
Add interface files for profiles and namespaces commit
Add the ability to report a sha1 hash of loaded policy commit
Add the profile introspection file to interface commit
Allow setting any profile into the unconfined state commit
Enable users to query whether apparmor is enabled commit
11. Tracing/perf
- perf
Add option to limit stack depth in callchain dumps commit
Add option to print stack trace on single line commit
diff: Add generic order option for compute sorting commit
diff: Update perf diff documentation for multiple data comparison commit
gtk/hists: Display callchain overhead also commit
kvm stat report: Add option to analyze specific VM commit
list: Skip unsupported events commit
perf report/top: Add option to collapse undesired parts of call graph commit
stat: Add support for --initial-delay option commit
symbols: Add support for reading from /proc/kcore commit
tools: Add 'S' event/group modifier to read sample value commit
tools: Default to cpu// for events v5 commit
tools: Make it possible to read object code from kernel modules commit
tools: Make it possible to read object code from vmlinux commit
top: Add --objdump option commit
trace: Allow specifying which syscalls to trace commit
trace: Implement -o/--output filename commit
trace: Support ! in -e expressions commit