#pragma section-numbers on #pragma keywords Linux, kernel, operating system, changes, changelog, file system, Linus Torvalds, open source, device drivers #pragma description Summary of the changes and new features merged in the Linux kernel during the 3.13 development cycle Linux 3.13 [[https://lkml.org/lkml/2014/1/19/148|was released]] on Sun, 19 Jan 2014. '''Summary''': This release includes nftables, the successor of iptables, a revamp of the block layer designed for high-performance SSDs, a power capping framework to cap power consumption in Intel RAPL devices, improved squashfs performance, AMD Radeon power management enabled by default and automatic Radeon GPU switching, improved NUMA performance, improved performance with hugepage workloads, TCP Fast Open enabled by default, support for NFC payments, support for the High-availability Seamless Redundancy protocol, new drivers and many other small improvements. <> = Prominent features = == A scalable block layer for high performance SSD storage == Traditional hard disks have defined for decades the design that operating systems use to communicate applications with the storage device drivers. With the advent of modern solid-state disks (SSD), past assumptions are no longer valid. Linux had a single coarse lock design for protecting the IO request queue, which can achieve an IO submission rate of around 800.000 IOs per second, regardless of how many cores are used to submit IOs. This was more than enough for traditional magnetic hard disks, whose IO submission rate in random accesses is in the hundreds, but it has become not enough for the most advanced SSD disks, which can achieve a rate close to 1 million, and are improving fast with every new generation. It is also unfit for the modern multicore world. This release includes a new design for the Linux block layer, based on two levels of queues: one level of per-CPU queues for submitting IO, which then funnel down into a second level of hardware submission queues. The mapping between submission queues and hardware queues might be 1:1 or N:M, depending on hardware support and configuration. Experiments shown that this design can achieve many millions of IOs per second, leveraging the new capabilities of NVM-Express or high-end PCI-E devices and multicore CPUs, while still providing the common interface and convenience features of the block layer. Note: in this release, only the virtioblk driver has been ported to this interface, other drivers will be ported in next releases. Paper: [[http://kernel.dk/blk-mq.pdf|Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems]] Recommended LWN article: [[https://lwn.net/Articles/552904/|The multiqueue block layer]] Code: [[http://git.kernel.org/linus/320ae51feed5c2f13664aa05a76bec198967e04d|commit]] == nftables, the successor of iptables == iptables has a number of limitations both at the functional and code design level, problems with the system update rules and code duplication, which cause problems for code maintenance and for users. nftables is a new packet filtering framework that solves these problems, while providing backwards compatibility for current iptable users. The core of the nftables design is a simple pseudo-virtual machine inspired in BPF. A [[http://git.netfilter.org/nftables/|userspace utility]] interprets the rule-set provided by the user, it compiles it to pseudo-bytecode and then it transfers it to the kernel. This approach can replace thousands of lines of code, since the bytecode instruction set can express the packet selectors for all existing protocols. Because the userspace utility parses the protocols to bytecode, it is no longer necessary a specific extension in kernel-space for each match, which means that users are likely not need to upgrade the kernel to obtain new matches and features, userspace upgrades will provide them. There is also [[http://git.netfilter.org/libnftables/|a new library]] for utilities that need to interact with the firewall. In this release, nftables is already usable in most cases but a complete support (read: nftables at a better level than iptables) should be available in future releases. nftables provides backwards iptables compatibility. There are [[http://git.netfilter.org/iptables-nftables/|new iptables/iptables utilities]] that translate iptables rules to nftables bytecode, and it is also possible to use and add new xtable modules. As a bonus, these new utilities provide features that weren't possible with the old iptables design: notification for changes in tables/chains, better incremental rule update support, and the ability to enable/disable the chains per table. The new nft utility has a improved syntax. nftables documentation is available in the [[http://people.netfilter.org/wiki-nftables/index.php/Main_Page|nftables wiki page]]; a small, quick and incomplete how-to is available [[http://kernelnewbies.org/nftables_examples|here]]. Recommended LWN article: [[https://lwn.net/Articles/564095/|The return of nftables]] Video talk about nftables: http://youtu.be/P58CCi5Hhl4 ([[http://www.slideshare.net/ennael/2013-kernel-recipesnftables|slides]]) Project page and utility source code: http://netfilter.org/projects/nftables/ Code: [[http://git.kernel.org/linus/96518518cc417bb0a8c80b9fb736202e28acdf96|commit]], [[http://git.kernel.org/linus/20a69341f2d00cd042e81c82289fba8a13c05a25|commit]] == Radeon: power management enabled by default, automatic GPU switching, R9 290X Hawaii support == '''Power management enabled by default''' Linux 3.11 [[http://kernelnewbies.org/Linux_3.11#head-61f0d4595b25d0f19a5dc7574d07e9107521b397|added]] power management support for many AMD Radeon devices. The power management support provides improved power consumption, which is critical for battery powered devices, but it is also a requirement to provide good high-end performance, as it provides the ability to reclock to GPU to higher power states in GPUs and APUs that default to slower clock speeds. This support had to be enabled with a module parameter. This release enables power management by default for lots of AMD Radeon hardware: BTC asics, SI asics, SUMO/PALM APUs, evergreen asics, r7xx asics, hawaii. Code: [[http://git.kernel.org/linus/56684ec5b050e6a392cb3e5324eda12a13413a57|commit]], [[http://git.kernel.org/linus/68bc7785a725c66e5fb1b499303e36a02a0586c4|commit]], [[http://git.kernel.org/linus/5a16f7614e33c080bbece39527bde144dcca4ec7|commit]], [[http://git.kernel.org/linus/59f7a2f2dae51bf9cf1f2dce26b4faa9d705302f|commit]], [[http://git.kernel.org/linus/ab70b1dde73ff4525c3cd51090c233482c50f217|commit]], [[http://git.kernel.org/linus/2d40038d3f99a489fc1ef6c03d5a600de34c552f|commit]] '''Automatic GPU switching''' Linux 3.12 added infrastructure support for automatic GPU switching in laptops with dual GPUs. This release adds support for this feature in AMD Radeon hardware. Code: [[http://git.kernel.org/linus/10ebc0bc09344ab6310309169efc73dfe6c23d72|commit]] '''R9 290X Hawaii''' This release adds support for [[https://en.wikipedia.org/wiki/AMD_Radeon_Rx_200_Series#Radeon_R9_290|R9 290X]] "Hawaii" devices. Code: [[http://git.kernel.org/linus/96212fe8c27b39cc713cd8eb8d8e7a55ce3405d5|commit]] == Power capping framework == This release includes a framework that allow to set power consumption limits to devices that support it. It has been designed around the Intel RAPL (Running Average Power Limit) mechanism available in the latest Intel processors (Sandy Bridge and later, many devices will also be added RAPL support in the future). This framework provides a consistent interface between the kernel and user space that allows power capping drivers to expose their settings to user space in a uniform way. You can see the Documentation [[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/power/powercap/powercap.txt|here]] Code: [[http://git.kernel.org/linus/75d2364ea0cab3a95be3f8d1f8dabd20ac4b1b2a|(commit 1]], [[http://git.kernel.org/linus/e23feb16685a8d1c62aa5bba7ebcddf4ba57ffcb|2]], [[http://git.kernel.org/linus/2d281d8196e38dd3a4ee9af26621ddde8329f269|3]], [[http://git.kernel.org/linus/ed93b71492da3464b4798613aa8a99bed914251b|4)]] == Support for the Intel Many Integrated Core Architecture == This release adds support for the [[http://www.intel.com/content/www/us/en/architecture-and-technology/many-integrated-core/intel-many-integrated-core-architecture.html|Intel Many Integrated Core Architecture]] or MIC, a multiprocessor computer architecture incorporating earlier work on the Larrabee many core architecture, the Teraflops Research Chip multicore chip research project, and the Intel Single-chip Cloud Computer multicore microprocessor. The currently world's fastest supercomputer, the [[https://en.wikipedia.org/wiki/Tianhe-2|Tianhe-2]] at the National Supercomputing Center in Guangzhou, China, utilizes this architecture to achieve 33.86 PetaFLOPS. The MIC family of PCIe form factor coprocessor devices run a 64-bit Linux OS. The driver manages card OS state and enables communication between host and card. More information about the Intel MIC family as well as the Linux OS and tools for MIC to use with this driver are available [[http://software.intel.com/en-us/mic-developer|here]]. This release currently supports Intel MIC X100 devices, and includes a sample user space daemon. Code: [[http://git.kernel.org/linus/2141c7c5ee677014023cb50c793f91e85f44d2ea|commit 1]], [[http://git.kernel.org/linus/f69bcbf3b4c4b333dcd7a48eaf868bf0c88edab5|2]], [[http://git.kernel.org/linus/a01e28f692088e9789ebb0c374fdac83de59899b|3]], [[http://git.kernel.org/linus/b170d8ce3f81bd97e85756e9184779a56a5f55a7|4]], [[http://git.kernel.org/linus/3a6a9201897c6482573ad07ee880574147761006|5]], [[http://git.kernel.org/linus/8d49751580db804a02caf6a5b7cebe2ff26c0d7e|6]] == Improved performance in NUMA systems == Modern multiprocessors (for example, x86) usually have non-uniform memory access ([[https://en.wikipedia.org/wiki/Non-uniform_memory_access|NUMA]]) memory designs. In these systems, the performance of a process can be different depending on whether the memory range it accesses it's attached to the local CPU or other CPU. Since performance is different depending on the locality of the memory accesses, it's important that the operating system schedules a process to run in the same CPU whose memory controller is connected to the memory it will access. The way Linux handles these situations was deficient; Linux 3.8 [[http://kernelnewbies.org/Linux_3.8#head-c16d4288b51f0b50fbf615657e81b0db643fa7a0|included a new NUMA foundation]] that would allow to build smarter NUMA policies in future releases. This release includes many of such policies that attempt to put a process near its memory, and can handle cases such as shared pages between processes or transparent huge pages. New sysctls have been added to enable/disable and tune the NUMA scheduling (see documentation [[http://git.kernel.org/linus/10fc05d0e551146ad6feb0ab8902d28a2d3c5624|here]]) Recommended LWN article: [[https://lwn.net/Articles/568870/|NUMA scheduling progress]] == Improved page table access scalability in hugepage workloads == The Linux kernels tracks information about each memory page in a data structure called page table. In workloads that use hugepages, the lock used to protect some parts of the table has become a lock contention. This release uses finer grained locking for these parts, improving the page table access scalability in threaded hugepage workloads. For more details, see the recommended LWN article. Recommended LWN article: [[https://lwn.net/Articles/568076/|Split PMD locks]] Code: [[http://git.kernel.org/linus/e009bb30c8df8a52a9622b616b67436b6a03a0cd|commit]], [[http://git.kernel.org/linus/9491846fca57e9326b6673716c386b76fc13ebca|commit]] == Squashfs performance improved == Squashfs, the read-only filesystem used by most live distributions, installers, and some embedded Linux distributions, has got important improvements that dramatically increase performance in workloads with multiple parallel reads. One of them is the direct decompression of data into the Linux page cache, which avoids a copy of the data and eliminates the single lock used to protect the intermediate buffer. The other one is multithreaded decompression. Code: [[http://git.kernel.org/linus/0d455c12c6428647547bacccaaced3cae0f35570|(commit 1]], [[http://git.kernel.org/linus/cd59c2ec5f37a2bc1315c9324aab6c21d43ffa1a|2]], [[http://git.kernel.org/linus/d208383d640727b70cd6689bc17e67e9b5ebf4ff|3)]] == Applications can cap the rate computed by network transport layer == This release adds a new socket option, SO_MAX_PACING_RATE, which offers applications the ability to cap the rate computed by transport layer. It has been designed as a bufferbloat mechanism to avoid buffers getting filled up with packets, but it can also be used to limit the transmission rate in applications. To be effectively paced, a network flow must use FQ packet scheduler. Note that a packet scheduler takes into account the headers for its computations. For more details, see the: Recommended LWN article: [[https://lwn.net/Articles/564978/|TSO sizing and the FQ scheduler]] (5th and 6th paragraph) Code: [[http://git.kernel.org/linus/62748f32d501f5d3712a7c372bbb92abc7c62bc7|commit]] == TCP Fast Open enabled by default == TCP Fast Open is an optimization to the process of stablishing a TCP connection that allows the elimination of one round time trip from certain kinds of TCP conversation, which can improve the load speed of web pages. In [[http://kernelnewbies.org/Linux_3.6#head-ac78950a7b57d92d5835642926f0e147c680b99c|Linux 3.6]] and [[http://kernelnewbies.org/Linux_3.7#head-cd32b65674184083465d349ad6d772c828fbbd8b|Linux 3.7]], support was added for this feature, which requires userspace support. This release enables TCP Fast Open by default. Code: [[http://git.kernel.org/linus/0d41cca490c274352211efac50e9598d39a9dc80|commit]] == NFC payments support == This release implements support for the [[http://www.smartcardalliance.org/pages/publications-nfc-frequently-asked-questions#7|Secure Element]]. A netlink API is available to enable, disable and discover NFC attached (embedded or UICC ones) secure elements. With some userspace help, this allows to support NFC payments, used to implement financial transactions. Only the pn544 driver currently supports this API. Code: [[http://git.kernel.org/linus/5ce3f32b5264b337bfd13a780452a17705307725|commit]] == Support for the High-availability Seamless Redundancy protocol == [[https://en.wikipedia.org/wiki/High-availability_Seamless_Redundancy|High-availability Seamless Redundancy]] (HSR) is a redundancy protocol for Ethernet. It provides instant failover redundancy for such networks. It requires a special network topology where all nodes are connected in a ring (each node having two physical network interfaces). It is suited for applications that demand high availability and very short reaction time. Code: [[http://git.kernel.org/linus/f421436a591d34fa5279b54a96ac07d70250cc8d|commit]] = Drivers and architectures = All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.13-DriversArch|Linux_3.13-DriversArch page]] = Core = * epoll: once we get over 10+ cpus, the scalability of SPECjbb falls over due to the contention on the global 'epmutex', which is taken in on EPOLL_CTL_ADD and EPOLL_CTL_DEL operations. This release improves locking to improve performance: on the 16 socket run the performance went from 35k jOPS to 125k jOPS. In addition the benchmark when from scaling well on 10 sockets to scaling well on just over 40 sockets [[http://git.kernel.org/linus/ae10b2b4eb01bedc91d29d5c5bb9e416fd806c40|commit]], [[http://git.kernel.org/linus/67347fe4e6326338ee217d7eb826bedf30b2e155|commit]] * Allow magic sysrq key functions to be disabled in Kconfig [[http://git.kernel.org/linus/8eaede49dfdc1ff1d727f9c913665b8009945191|commit]] * modules: remove rmmod --wait option. [[http://git.kernel.org/linus/3f2b9c9cdf389e303b2273679af08aab5f153517|commit]] * iommu: Add event tracing feature to iommu [[http://git.kernel.org/linus/7f6db1717235bd45d265766dad53c10d30899d41|commit]] * Add option to disable kernel compression [[http://git.kernel.org/linus/69f0554ec261fd686ac7fa1c598cc9eb27b83a80|commit]] * gcov: add support for gcc 4.7 gcov format [[http://git.kernel.org/linus/5f41ea0386a53414d688cfcaa321a78310e5f7c1|commit]] * fuse: Implement writepages callback, improving mmaped writeout [[http://git.kernel.org/linus/26d614df1da9d7d255686af5d6d4508f77853c01|commit]] * seqcount: Add lockdep functionality to seqcount/seqlock structures [[http://git.kernel.org/linus/1ca7d67cf5d5a2aef26a8d9afd789006fa098347|commit]] * Provide a per-cpu preempt_count implementation [[http://git.kernel.org/linus/c2daa3bed53a81171cf8c1a36db798e82b91afe8|commit]] * /proc/pid/smaps: show VM_SOFTDIRTY flag in VmFlags line [[http://git.kernel.org/linus/ec8e41aec13005fed0dbee002fb8c99b4e001d50|commit]] * Add a generic associative array implementation. [[http://git.kernel.org/linus/3cb989501c2688cacbb7dc4b0d353faf838f53a1|commit]] * RCU'd vfsmounts [[http://git.kernel.org/linus/48a066e72d970a3e225a9c18690d570c736fc455|commit]] = Memory management = * Changes in the slab have been done to improve the slab memory usage and performance. kmem_caches consisting of objects less than or equal to 128 byte have now one more objects in a slab, and a change to the management of free objects improves the locality of the accesses, which [[https://lkml.org/lkml/2013/10/16/155|improve]] performance in some microbenchmarks [[http://git.kernel.org/linus/8456a648cf44f14365f1f44de90a3da2526a4776|commit]], [[http://git.kernel.org/linus/b1cb0982bdd6f57fed690f796659733350bb2cae|commit]] * memcg: support hierarchical memory.numa_stats [[http://git.kernel.org/linus/071aee138410210e3764f3ae8d37ef46dc6d3b42|commit]] * Introduce movable_node boot option to enable the effects of CONFIG_MOVABLE_NODE [[http://git.kernel.org/linus/c5320926e370b4cfb8f10c2169e26f960079cf67|commit]] * thp: khugepaged: add policy for finding target node [[http://git.kernel.org/linus/9f1b868a13ac36bd207a571f5ea1193d823ab18d|commit]] = Block layer = * bcache: Incremental garbage collection. It means that there's less of a latency hit for doing garbage collection, which means bcache can gc more frequently (and do a better job of reclaiming from the cache), and it can coalesce across more btree nodes (improving space efficiency) [[http://git.kernel.org/linus/a1f0358b2bf69be216cb6e4ea40fe7ae4d38b8a6|commit]] * dm cache: add passthrough mode which is intended to be used when the cache contents are not known to be coherent with the origin device [[http://git.kernel.org/linus/2ee57d587357f0d752af6c2e3e46434a74b1bee3|commit]] * dm cache: add cache block invalidation support [[http://git.kernel.org/linus/65790ff919e2e07ccb4457415c11075b245d643b|commit]] * dm cache: cache shrinking support [[http://git.kernel.org/linus/f494a9c6b1b6dd9a9f21bbb75d9210d478eeb498|commit]] * virtio_blk: blk-mq support [[http://git.kernel.org/linus/1cf7e9c68fe84248174e998922b39e508375e7c1|commit]] * Multi-queue aware null block test driver [[http://git.kernel.org/linus/f2298c0403b0dfcaef637eba0c02c4a06d7a25ab|commit]] = File systems = * Btrfs * Add FIEMAP_EXTENT_SHARED fiemap flag: Similar to ocfs2, btrfs also supports that extents can be shared by different inodes, and there are some userspace tools requesting for this kind of 'space shared infomation' [[http://git.kernel.org/linus/fe09e16cc8d444ecc52f6f9a651946f16fffa4e1|commit]] * Add new btrfs mount options: commit, which sets the interval of periodic commit in seconds, 30 by default, and rescan_uuid_tree, which forces check and rebuild procedure of the UUID tree [[http://git.kernel.org/linus/906c176e541f89ed3c04d0e9af1c7cf7b3cc1adb|commit]] * XFS: For v5 filesystems scale the inode cluster size with the size of the inode so that we keep a constant 32 inodes per cluster ratio for all inode IO [[http://git.kernel.org/linus/8f80587bacb6eb893df0ee4e35fefa0dfcfdf9f4|commit]] * F2FS Introduce CONFIG_F2FS_CHECK_FS to disable BUG_ONs which check the file system consistency in runtime and cost performance [[http://git.kernel.org/linus/3b218e3a21ccec183472015f1d7168400b187a58|commit]] * HFS+: [[http://git.kernel.org/linus/95e0d7dbb9b28ab0dfad7c7316066b05e1f1d4cd|commit]], [[http://git.kernel.org/linus/099e9245e04d50bb12ed621b4fa61df0a4c9dba9|commit]], [[http://git.kernel.org/linus/b3b5b0f03cc4ea074ed0ac110d0afd17e0ccdf9e|commit]] * CIFS * SMB2/SMB3 Copy offload support (refcopy, aka "cp --reflink") [[http://git.kernel.org/linus/41c1358e9181ab1ebd773905b3fa8039b61aa0e9|commit]] * Query File System alignment, and the preferred (for performance) sector size and whether the underlying disk has no seek penalty (like SSD), make it visible in /proc/fs/cifs/DebugData for debugging purposes [[http://git.kernel.org/linus/af6a12ea8d4bb39a87527835b943bde4215897e5|commit]] * Query network adapter info [[http://git.kernel.org/linus/c481e9feee78c6ce1ba0a1c8c892049f6514f6cf|commit]] * Allow setting per-file compression [[http://git.kernel.org/linus/c7f508a99bf229963915e79a603e0618d1d2ba76|commit]], [[http://git.kernel.org/linus/64a5cfa6db94c5abba2cafe77aca077dd1e3283b|commit]] = Networking = * Add a lightweight Berkley Packet Filter-based traffic classifier that can serve as a flexible alternative to ematch-based tree classification, i.e. now that BPF filter engine can also be JITed in the kernel [[http://git.kernel.org/linus/7d1d65cb84e1cfacba3f54c5934194785259e0d8|commit]] * ipv6: Add support for IPsec virtual tunnel interfaces, which provide a routable interface for IPsec tunnel endpoints [[http://git.kernel.org/linus/ed1efb2aefbbc6f5a3da5b42158bfb753ba6fe82|commit]] * ipv4: introduce new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE. Sockets marked with IP_PMTUDISC_INTERFACE won't do path mtu discovery, their sockets won't accept and install new path mtu information and they will always use the interface mtu for outgoing packets. It is guaranteed that the packet is not fragmented locally. The purpose behind this flag is to avoid PMTU attacks, particularly on DNS servers [[http://git.kernel.org/linus/482fc6094afad572a4ea1fd722e7b11ca72022a0|commit]] * ipv4: Allow unprivileged users to use network namespaces sysctls [[http://git.kernel.org/linus/fd2d5356d90211f98ea3624263e37c4142b41edd|commit]] * Create sysfs symlinks for neighbour devices [[http://git.kernel.org/linus/5831d66e8097aedfa3bc35941cf265ada2352317|commit]] * ipv6: sit: add GSO/TSO support [[http://git.kernel.org/linus/61c1db7fae21ed33c614356a43bf6580c5e53118|commit]] * ipip: add GSO/TSO support [[http://git.kernel.org/linus/cb32f511a70be8967ac9025cf49c44324ced9a39|commit]] * packet scheduler: htb: support of 64-bit rates [[http://git.kernel.org/linus/df62cdf348c91baac61b4cb19d19ea1ef87b271e|commit]] * openvswitch: TCP flags matching support. [[http://git.kernel.org/linus/5eb26b156e29eadcc21f73fb5d14497f0db24b86|commit]] * ipset * Add network namespaces [[http://git.kernel.org/linus/1785e8f473082aa60d62c7165856cf6484077b99|commit]] * Support comments for ipset entries in the core. [[http://git.kernel.org/linus/68b63f08d22f23161c43cd2417104aa213ff877f|commit]], in bitmap-type ipsets [[http://git.kernel.org/linus/b90cb8ba19dac9b98add5e64adb583fccbf63f94|commit]], in hash-type ipsets [[http://git.kernel.org/linus/fda75c6d9e31a901e25b922e86c8fd505c899873|commit]], and in the list-type ipset. [[http://git.kernel.org/linus/81b10bb4bd16ea975c007f9bb2c2676cef6ade10|commit]] * Enable ipset port set types to match IPv4 package fragments for protocols that doesn't have ports (or the port information isn't supported by ipset) [[http://git.kernel.org/linus/60b0fe372499f66e0c965dc0594320438a3b711c|commit]] * Add hash:net,net set, providing the ability to configure pairs of subnets [[http://git.kernel.org/linus/ea53ac5b630e813aec20c7cdcfe511daca70dee4|commit]] * Add hash:net,port,net set, providing similar functionality to ip,port,net but permits arbitrary size subnets for both the first and last parameter [[http://git.kernel.org/linus/7c3ad056ef79fd10f5f111c807ccbd9fa9068c7f|commit]] * Add NFC digital layer implementation: Most NFC chipsets implement the NFC digital layer in firmware, but others only implement the NFC analog layer and expect the host to implement this layer * Add support for NFC-A technology at 106 kbits/s [[http://git.kernel.org/linus/2c66daecc4092e6049673c281b2e6f0d5e59a94c|commit]] * Add support for NFC-F technology at 212 kbits/s and 424 kbits/s [[http://git.kernel.org/linus/8c0695e4998dd268ff2a05951961247b7e015651|commit]] * Add initiator NFC-DEP support [[http://git.kernel.org/linus/7d0911c02fa2a448a28d7844d2a0c439ff8397b1|commit]] * Add target NFC-DEP support [[http://git.kernel.org/linus/1c7a4c24fbfd99442cc6e14dc80fcb00f118e8b8|commit]] * Implement the mechanism used to send commands to the driver in initiator mode [[http://git.kernel.org/linus/59ee2361c9248f07846f7a6e585768dcce18fb16|commit]] * Digital Protocol stack implementation [[http://git.kernel.org/linus/4b10884eb428c243ae2070a539612e645f3d9b93|commit]] * Bluetooth * Introduce new HCI socket channel that allows user applications to take control over a specific HCI device. The application gains exclusive access to this device and forces the kernel to stay away and not manage it [[http://git.kernel.org/linus/23500189d7e03a071f0746f43f2cce875a62c91c|commit]], [[http://git.kernel.org/linus/0736cfa8e5bb7ee1d7b7d28aabe634fd3f85cb92|commit]] * Add support creating virtual AMP controllers [[http://git.kernel.org/linus/23424c0d316941f30cd953fcbff7082044228487|commit]] * Add support for setting Device Under Test mode [[http://git.kernel.org/linus/4b4148e9acc1a51c454f133637e5dc7e298bd5bb|commit]] * Add a new mgmt_set_bredr command for enabling/disabling BR/EDR functionality. This can be convenient when one wants to make a dual-mode controller behave like a single-mode one. The command is only available for dual-mode controllers and requires that Bluetooth LE is enabled before using it [[http://git.kernel.org/linus/0663ca2a032eea12480a8f86fe08bef9d72f8faf|commit]] * Add management command for setting static address on dual-mode BR/EDR/LE and LE only controllers where it is possible to configure a random static address [[http://git.kernel.org/linus/d13eafce2c892d57f1eb243e43dfe48b4626006d|commit]] * Add new management setting for enabling and disabling Bluetooth LE advertising [[http://git.kernel.org/linus/eeca6f891305a80378da978f803821c2a0b648b6|commit]], [[http://git.kernel.org/linus/4375f1037d52602413142e290608d0d84671ad36|commit]] * bonding * extend round-robin mode with packets_per_slave, which specifies the number of packets to transmit through a slave before moving to the next one [[http://git.kernel.org/linus/73958329ea1fe0dc149b51e5d8703015f65a03e0|commit]], [[http://git.kernel.org/linus/12465fb8338fedddc20464fdc5b1fcbc1971bc3a|commit]] * add Netlink support mode option [[http://git.kernel.org/linus/90af231106c0b8d223c27d35464af95cb3d9cacf|commit]] * add Netlink support active_slave option [[http://git.kernel.org/linus/ec76aa49855f6d6fea5e01de179fb57dd47c619d|commit]] * tcp_memcontrol: Remove setting cgroup settings via sysctl, because the code is broken in both design and implementation and does not implement the functionality for which it was written for [[http://git.kernel.org/linus/f594d63199688ad568fb69f6a790b11d6d6d1ba5|commit]] * wifi: implement mesh channel switch userspace API [[http://git.kernel.org/linus/b8456a14e9d2770846fcf74de18ff95b676149a3|commit]] * wifi: enable channels 52-64 and 100-144 for world roaming [[http://git.kernel.org/linus/131a19bc924c32cecd014be7036686f2186b48ad|commit]] * wifi: enable DFS for IBSS mode [[http://git.kernel.org/linus/5336fa88e8ac6b666a3db9902a4797d94d86a702|commit]], [[http://git.kernel.org/linus/8e8d347da7613d0315295e730f2eecf9fe6f36ba|commit]], add support for CSA in IBSS mode [[http://git.kernel.org/linus/cd7760e62c2ac8581f050b2d36501d1a60beaf83|commit]], * B.A.T.M.A.N.: remove vis functionality (replaced by a userspace program) [[http://git.kernel.org/linus/9f4980e68b4b72e6a4d7caadfacc54260d05ebf6|commit]], add per VLAN interface attribute framework [[http://git.kernel.org/linus/5d2c05b213377694a2aa8ce1ed9b23f7c39b0569|commit]], add the T(ype) V(ersion) L(ength) V(alue) framework [[http://git.kernel.org/linus/17cf0ea455f1a4a7e8436ef96236999e9c452a93|commit]], [[http://git.kernel.org/linus/3f4841ffb336075f74b05fe4a205e877bb22848d|commit]], [[http://git.kernel.org/linus/ef26157747d42254453f6b3ac2bd8bd3c53339c3|commit]], [[http://git.kernel.org/linus/414254e342a0d58144de40c3da777521ebaeeb07|commit]] = Crypto = * caam: Add platform driver for Job Ring, which are part of Freescale's Cryptographic Accelerator and Assurance Module (CAAM) [[http://git.kernel.org/linus/313ea293e9c4d1eabcaddd2c0800f083b03c2a2e|commit]] * random: Our mixing functions [[http://eprint.iacr.org/2012/251.pdf|were analyzed]], they suggested a slight change to improve our mixing functions which has been implemented [[http://git.kernel.org/linus/6e9fa2c8a630e6d0882828012431038abce285b9|commit]] * random32: upgrade taus88 generator to taus113 from errata paper [[http://git.kernel.org/linus/a98814cef87946d2708812ad9f8b1e03b8366b6f|commit]] = Virtualization = * hyperv: fb: add blanking support [[http://git.kernel.org/linus/9b5254b4604d358e64d1798544e242f67a81c106|commit]], add PCI stub, the hyperv framebuffer driver will bind to the PCI device then, so Linux kernel and userspace know there is a proper kernel driver for the device active [[http://git.kernel.org/linus/7ad9684721606efbfb9b347346816e1e6baff8bb|commit]] * kvm: Add VFIO device [[http://git.kernel.org/linus/ec53500fae421e07c5d035918ca454a429732ef4|commit]] * xen-netback: add support for IPv6 checksum offload to guest [[http://git.kernel.org/linus/146c8a77d27bcbd7722120f70f51e3b287205d0a|commit]] * xen-netback: enable IPv6 TCP GSO to the guest [[http://git.kernel.org/linus/82cada22a0bbec6a7afb573ef5fb6c512aaa2739|commit]] * xen-netfront: convert to GRO API [[http://git.kernel.org/linus/99d3d587b2b4314ccc8ea066cb327dfb523d598e|commit]] = Security = * SELinux: Enable setting security contexts on rootfs (ramfs) inodes. [[http://git.kernel.org/linus/5c73fceb8c70466c5876ad94c356922ae75a0820|commit]] * SELinux: Reduce overhead that harmed the high_systime workload of the AIM7 benchmark [[http://git.kernel.org/linus/fee7114298cf54bbd221cdb2ab49738be8b94f4c|commit]] * SELinux: Add the always_check_network policy capability which, when enabled, treats SECMARK as enabled, even if there are no netfilter SECMARK rules and treats peer labeling as enabled, even if there is no Netlabel or labeled IPsec configuration.policy capability for always checking packet and peer classes [[http://git.kernel.org/linus/2be4d74f2fd45460d70d4fe65cc1972ef45bf849|commit]] * Smack treats setting a file read lock as the write operation that it is. Unfortunately, many programs assume that setting a read lock is a read operation, and don't work well in the Smack environment. This release implements a new access mode (lock) to address this problem [[http://git.kernel.org/linus/c0ab6e56dcb7ca9903d460247cb464e769ae6e77|commit]] * Smack: When the ptrace security hooks were split the addition of a mode parameter was not taken advantage of in the Smack ptrace access check. This changes the access check from always looking for read and write access to using the passed mode [[http://git.kernel.org/linus/b5dfd8075bc26636d11c3d8888940198afbf5112|commit]] * audit: new feature which only grants processes with CAP_AUDIT_CONTROL the ability to unset their loginuid [[http://git.kernel.org/linus/d040e5af380554c23ffe0a034ae5f3e53da93a1d|commit]] * audit: feature which allows userspace to set it such that the loginuid is absolutely immutable, even if you have CAP_AUDIT_CONTROL. CONFIG_AUDIT_LOGINUID_IMMUTABLE has been removed [[http://git.kernel.org/linus/21b85c31d23f2047d47e1f74bfa5caa8b75c1c77|commit]], [[http://git.kernel.org/linus/83fa6bbe4c4541ae748b550b4ec391f8a0acfe94|commit]] * keys: Expand the capacity of a keyring [[http://git.kernel.org/linus/b2a4df200d570b2c33a57e1ebfa5896e4bc81b69|commit]] * keys: Implement a big key type that can save to tmpfs [[http://git.kernel.org/linus/ab3c3587f8cda9083209a61dbe3a4407d3cada10|commit]] * keys: Add per-user namespace registers for persistent per-UID kerberos caches [[http://git.kernel.org/linus/f36f8c75ae2e7d4da34f4c908cebdb4aa42c977e|commit]] * ima: add audit log support for larger hashes [[http://git.kernel.org/linus/5278aa52f35003ddafda80b0243b3693f935b134|commit]] * ima: enable support for larger default filedata hash algorithms [[http://git.kernel.org/linus/e7a2ad7eb6f48ad80c70a22dd8167fb34b409466|commit]] * ima: new templates management mechanism [[http://git.kernel.org/linus/adf53a778a0a5a5dc9103509da4a9719046e5310|commit]] = Tracing/perf = * perf trace * Add "perf trace record" option, a convience alias to include the -e raw_syscalls:* argument to perf-record [[http://git.kernel.org/linus/5e2485b1a2813faa6b80007c653f8bbbed9457ee|commit]] * Add --time/-T option to show full timestamp [[http://git.kernel.org/linus/4bb09192d38ef08f0619667527cabb26354fff89|commit]] * Add option --comm to show process COMM [[http://git.kernel.org/linus/50c95cbd70808aa2e5ba8d79e503456f1da37aeb|commit]] * Add summary only option [[http://git.kernel.org/linus/fd2eabaf16984bc75695e43f4b76e6f20ed4ea41|commit]] * Add summary option to dump syscall statistics [[http://git.kernel.org/linus/bf2575c121ca11247ef07fd02b43f7430834f7b1|commit]] * perf probe * Add --demangle/--no-demangle options [[http://git.kernel.org/linus/35e17b2450e09968f9702d4048c228199af171bc|commit]] * Support "$vars" meta argument syntax for local variables [[http://git.kernel.org/linus/7969ec7728ba6340de8000ddb0a8833273629d6a|commit]] * perf record: Add option --force-per-cpu to force per-cpu mmaps [[http://git.kernel.org/linus/539e6bb71e350541105e67e3d6c31392d9da25ef|commit]] * perf record: Add abort_tx,no_tx,in_tx branch filter options to perf record -j [[http://git.kernel.org/linus/0126d493b62e1306db09e1019c05e0bfe84ae8e7|commit]] * perf report: Add --max-stack option to limit callchain stack scan [[http://git.kernel.org/linus/91e95617429cb272fd908b1928a1915b37b9655f|commit]] * perf top: Add new option --ignore-vmlinux to explicitly indicate that we do not want to use these kernels and just use what we have (kallsyms [[http://git.kernel.org/linus/fc2be6968e99b5314f20e938a547d44dcb1c40eb|commit]] * perf tools: Add possibility to specify mmap size via -m/--mmap-pages by appending unit size character (B/K/M/G) to the number [[http://git.kernel.org/linus/27050f530dc4fd88dc93d85c177e000efe970d12|commit]] * perf top: Add --max-stack option to limit callchain stack scan [[http://git.kernel.org/linus/5dbb6e81d85e55ee2b4cf523c1738e16f63e5400|commit]] * perf stat: Add perf stat --transaction to print the basic transactional execution statistics [[http://git.kernel.org/linus/4cabc3d1cb6a46f581a2628d1d11c483d5f300e5|commit]] * perf: Add support for recording transaction flags [[http://git.kernel.org/linus/475eeab9f3c1579c8da89667496084db4867bf7c|commit]] * perf: Support sorting by in_tx or abort branch flags [[http://git.kernel.org/linus/f5d05bcec409aec2c41727077ad818f7c4db005b|commit]] * ftrace: Add set_graph_notrace filter, analogous to set_ftrace_notrace and can be used for eliminating uninteresting part of function graph trace output [[http://git.kernel.org/linus/29ad23b00474c34e3b5040dda508c78d33a1a3eb|commit]] * perf bench sched: Add --threaded option, allow the measurement of thread versus process context switch performance [[http://git.kernel.org/linus/a9faa0cab619fad380c2669825aa84212943d528|commit]] * perf buildid-cache: Add ability to add kcore to the cache [[http://git.kernel.org/linus/fc1b691d7651d9496e912de7e0fc73a5be3294af|commit]] = Other news sites that track the changes of this release = * LWN list of changes [[https://lwn.net/Articles/573272/|part 1]], [[https://lwn.net/Articles/574222/|part 2]], [[https://lwn.net/Articles/574965/|part 3]] * French: linuxfr.org [[http://linuxfr.org/news/sortie-de-linux-3-13|Sortie de Linux 3.13]] * German language: heise.de Kernel-Log Was 3.13 bringt [[http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-1-Dateisysteme-und-Storage-2062929.html|(1): Dateisysteme und Storage]], [[http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-2-Netzwerk-2066673.html|(2) Netzwerk]], [[http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-3-Infrastruktur-2070247.html|(3) Infrastruktur ]], [[http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-4-Treiber-2074253.html|(4) Treiber]], [[http://www.heise.de/open/artikel/Kernel-Log-Was-3-13-bringt-5-Grafiktreiber-2074557.html|(5) Grafiktreiber]] * Phoronix [[http://www.phoronix.com/scan.php?page=news_item&px=MTU2NDE|The Linux 3.13 Kernel Has Many Improvements]]