#pragma section-numbers on #pragma keywords Linux, kernel, operating system, changes, changelog, file system, Linus Torvalds, open source, device drivers #pragma description List of changes and new features merged in the Linux kernel during the 4.20 development cycle Linux 4.20 [[https://lkml.org/lkml/2018/12/23/187|was released]] on Sun, 23 Dec 2018. Summary: This release includes support for a new way to measure the system load; it adds support for future AMD Radeon Picasso and Raven2 and enables non-experimental support for Radeon Vega20; it adds support for the C-SKY CPU architecture and the x86 Hygon Dhyana CPUs; a TLB microoptimization brings a small performance win in some workloads; TCP has switched to a "Early Departure Time" model; a mechanism to turn memfd regions into dma-buf allows qemu to improve virtualized graphics performance; it also includes the latest round of fixes for CPU security bugs; and it also adds many new drivers and other improvements. <> = Prominent features = == Pressure stall information for better overview of system load == When systems are overcommitted and resources become contended, it's hard to tell exactly the impact this has on workload productivity, or how close the system is to lockups and OOM kills. In particular, when machines work multiple jobs concurrently, the impact of overcommit in terms of latency and throughput on the individual job can be enormous. In order to maximize hardware utilization without sacrificing individual job health or risk complete machine lockups, this release adds pressure stall information, a way to quantify resource pressure in the system. Under {{{/proc/pressure/}}} (and also inside each cgroup), several files expose the percentage of time the system is stalled on CPU, memory, or IO, respectively. These percentages of walltime can be thought of as pressure percentages, and they give a general sense of system health and productivity loss incurred by resource overcommit. They can also indicate when the system is approaching lockup scenarios and OOMs. Documentation: [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/accounting/psi.txt?id=eb414681d5a07d28d2ff90dc05f69ec6b232ebd2|Documentation/accounting/psi.txt]] Recommended LWN article: [[https://lwn.net/Articles/759781/|Tracking pressure-stall information]] == AMD Radeon Picasso + Raven2 support, and Vega20 enablement == This release adds support for Raven2 APU and Picasso APUs. Also, support for Vega20 is no longer considered experimental. == More efficient virtualized graphics == This release includes udmabuf, a device that can turn memfd regions into dma-buf. It allows qemu to create dmabufs for the vga framebuffer or virtio-gpu resources. Then they can be passed around to display those guest things on the host. To spice client for classic full framebuffer display, and hopefully some day to wayland server for seamless guest window display. == New chinese CPUs: C-SKY architecture and Hygon Dhyana x86 CPUs == This release adds support for new architecture: [[www.c-sky.com|C-SKY architecture]], a 32 bit chinese CPU ISA There is also support for Hygon Dhyana Family 18h, a new x86 processor coming from the [[https://en.wikipedia.org/wiki/AMD%E2%80%93Chinese_joint_venture|AMD–Chinese joint venture]] == TCP: switch to Early Departure Time model == Internet grew following a AFAP ("As Fast As Possible") idea. Due to the constraints of modern hardware, this model is not optimal any more. This release switches the TCP stack to Early Departure Time model See: * [[https://www.netdevconf.org/0x12/session.html?evolving-from-afap-teaching-nics-about-time|Evolving from AFAP: Teaching NICs about time]] * [[https://www.files.netdevconf.org/d/46def75c2ef345809bbe/files/?p=/Evolving%20from%20AFAP%20%E2%80%93%20Teaching%20NICs%20about%20time.pdf|Evolving from AFAP: Teaching NICs about time]] * [[https://jvns.ca/blog/2018/07/12/netdev-day-2--moving-away-from--as-fast-as-possible/|netdev day 2: moving away from "as fast as possible" in networking code]] == Make lazy TLB even lazier == As TLB flushes are extremely expensive, a technique called lazy TLB is employed by Linux which avoids unnecessary TLB flushes by processes which do not access the userspace page tables as the kernel portion of the address space is always visible. This release tries to use lazy TLB used even lazier: On most workloads, the number of context switches far exceeds the number of TLB flushes sent. Optimizing the context switches, by always using lazy TLB mode, speeds up those workloads. This reduces total CPU use in the system by about 1-2% for a memcache workload on two socket systems, and by about 1% for a heavily multi-process netperf between two systems. == Another round of fixes for CPU security bugs == * x86: Remedy the overhead of STIBP/IBPB with per task indirect branch speculation control * x86: Harden spectre v2 userspace-userspace protection * x86: The "minimal retpoline" support is no longer useful and has been removed * arm64: Support for the new ARMv8.5 PSTATE.SSBS bit which can be used to mitigate Spectre-v4 dynamically without trapping to EL3 firmware Recommended LWN articles: * [[https://lwn.net/Articles/764209/|Strengthening user-space Spectre v2 protection]] * [[https://lwn.net/Articles/773118/|Taming STIBP]] = Core (various) = * fanotify super block marks: It implement the new mark type {{{FAN_MARK_FILESYSTEM}}} to enable monitoring of filesystem events on all filesystem objects regardless of the mount where event was generated [[https://git.kernel.org/linus/1e6cb72399fd58b38a1c11055ef18fe01f535cda|commit]], [[https://git.kernel.org/linus/60f7ed8c7c4d06aeda448c6da74621552ee739aa|commit]], [[https://git.kernel.org/linus/d54f4fba889b205e9cd8239182ca5d27d0ac3bc2|commit]] * New fanotify event info API: In order to identify which thread triggered the event in a multi-threaded program, add the {{{FAN_REPORT_TID}}} flag in fanotify_init to opt-in for reporting the event creator's thread id information [[https://git.kernel.org/linus/b723a7911d028fb55f67a63c4c4d895f72e059d4|commit]], [[https://git.kernel.org/linus/007d1e8395eaa59b0e7ad9eb2b53a40859446a88|commit]], [[https://git.kernel.org/linus/a72fd224e37bf6a0630bce302deebbccbc236ba2|commit]], [[https://git.kernel.org/linus/23c9deeb3285d34fd243abb3d6b9f07db60c3cf4|commit]], [[https://git.kernel.org/linus/a39f7ec41766118bf836d266224505741570ada6|commit]], [[https://git.kernel.org/linus/bdd5a46fe30653cb4d26c7c787a22159bf79eed9|commit]], [[https://git.kernel.org/linus/d0a6a87e40da49cfc7954c491d3065a25a641b29|commit]] * (FEATURED) psi: pressure stall information for CPU, memory, and IO [[https://git.kernel.org/linus/95f9ab2d596e8cbb388315e78c82b9a131bf2928|commit]], [[https://git.kernel.org/linus/1899ad18c6072d689896badafb81267b0a1092a4|commit]], [[https://git.kernel.org/linus/b1d29ba82cf2bc784f4c963ddd6a2cf29e229b33|commit]], [[https://git.kernel.org/linus/8508cf3ffad4defa202b303e5b6379efc4cd9054|commit]], [[https://git.kernel.org/linus/5c54f5b9edb1aa2eabbb1091c458f1b6776a1896|commit]], [[https://git.kernel.org/linus/1f351d7f7590857ea281579c26e6045b4c548ef4|commit]], [[https://git.kernel.org/linus/246b3b3342c9b0a2e24cda2178be87bc36e1c874|commit]], [[https://git.kernel.org/linus/eb414681d5a07d28d2ff90dc05f69ec6b232ebd2|commit]], [[https://git.kernel.org/linus/2ce7135adc9ad081aa3c49744144376ac74fea60|commit]] * init: add {{{root=PARTLABEL=}}} support [[https://git.kernel.org/linus/f027c34d844013d9d6c902af8fa01a82d6e5073d|commit]] * task scheduler * Migrate 'misfit' tasks on asymmetric capacity systems (e.g. Arm big.LITTLE) [[https://git.kernel.org/linus/df054e8445a4011e3d693c2268129c0456108663|commit]], [[https://git.kernel.org/linus/3b1baa6496e6b7ad016342a9d256bdfb072ce902|commit]], [[https://git.kernel.org/linus/e3d6d0cb66f2351cbfd09fbae04eb9804afe9577|commit]], [[https://git.kernel.org/linus/cad68e552e7774b68ae6a2c5fedb792936098b72|commit]], [[https://git.kernel.org/linus/5fbdfae5221a5208ed8e7653fc1c4b31de420f74|commit]], [[https://git.kernel.org/linus/dbbad719449e06d73db21598d6eee178f7a54b3b|commit]], [[https://git.kernel.org/linus/575638d1047eb057a5cdf95cc0b3c084e1279508|commit]], [[https://git.kernel.org/linus/e90c8fe15a3bf93a23088bcf1a56a0fa391d4e50|commit]], [[https://git.kernel.org/linus/757ffdd705ee942fc8150b17942d968601d2a15b|commit]], [[https://git.kernel.org/linus/4ad3831a9d4af5e36da5d44a3b9c6522d0353cee|commit]], [[https://git.kernel.org/linus/9c63e84db29bcf584040931ad97c2edd11e35f6c|commit]] * Set {{{SD_ASYM_CPUCAPACITY}}} flag automatically [[https://git.kernel.org/linus/05484e0984487d42e97c417cbb0697fa9d16e7e9|commit]], [[https://git.kernel.org/linus/bb1fbdd3c3fd12b612c7d8cdf13bd6bfeebdefa3|commit]], [[https://git.kernel.org/linus/3ba09df4b8b6e3f01ed6381e8fb890840fd0bca3|commit]], [[https://git.kernel.org/linus/e1799a80a4f5a463f252b7325da8bb66dfd55471|commit]] * Android binder: Add {{{BINDER_GET_NODE_INFO_FOR_REF}}} ioctl. It allows the context manager to retrieve information about nodes that it holds a reference to, such as the current number of references to those nodes [[https://git.kernel.org/linus/b7e6a8961b5d6dd3fc535970e65d497d868bb49f|commit]] * gcc-plugins: Add the STACKLEAK plugin, which erases the kernel stack before returning from syscalls. That reduces the information which kernel stack leak bugs can reveal and blocks some uninitialized stack variable attacks [[https://git.kernel.org/linus/10e9ae9fabaf96c8e5227c1cd4827d58b3aa406d|commit]], [[https://git.kernel.org/linus/afaef01c001537fa97a25092d7f54d764dc7d8c1|commit]], [[https://git.kernel.org/linus/c8d126275a5fa59394fe17109bdb9812fed296b8|commit]] * Allow dedupe of user owned read-only files [[https://git.kernel.org/linus/5de4480ae7f8f1969065aa88be98111e36075bb0|commit]], [[https://git.kernel.org/linus/85c95f208f481ab3c34c4622f508272cd4803afd|commit]] * qspinlock_stat: Count instances of nested lock slowpaths [[https://git.kernel.org/linus/1222109a53637f96c581224198b86856d503f892|commit]] * Building * Remove oldnoconfig and silentoldconfig targets [[https://git.kernel.org/linus/04c459d204484fa4747d29c24f00df11fe6334d4|commit]], [[https://git.kernel.org/linus/0085b4191f3e30ec94beef4103679f2828d3c54f|commit]] * Add the following GCC flags unconditionally: {{{-Wvla}}}, {{{-Wdeclaration-after-statement}}}, {{{-Wno-pointer-sign}}}, {{{-Wno-unused-but-set-variable}}} [[https://git.kernel.org/linus/0bb95f80a38f82884693194ea720e9cca5e12ada|commit]], [[https://git.kernel.org/linus/a33e7ae295d5bc20568c48ac217d07f011091c32|commit]], [[https://git.kernel.org/linus/fb073a4b473e5b854312dc819c66ded9d103e824|commit]], [[https://git.kernel.org/linus/9df3e7a7d7d6d92df7c58fb17f900fdc2d8b5031|commit]] = File systems = * XFS * Support returning partial reflink results. For example, if userspace sends a 1GB clone request and we run out of space halfway through, we at least can tell userspace that we completed 512M of that request like a regular write [[https://git.kernel.org/linus/3f68c1f562f1e4c5e1a515b392a2e0a509a342d5|commit]] * BTRFS * qgroups: Reduce dirty extents for metadata. It significantly improves balancing with quota enabled [[https://git.kernel.org/linus/c337e7b02f71c4b2f6f2138807a284d2c4e1ac5e|commit]], [[https://git.kernel.org/linus/25982561db7f43f29305704f9f24ff36ea7d5671|commit]], [[https://git.kernel.org/linus/ea49f3e73c4b7252c1569906c1b2cd54605af3c9|commit]], [[https://git.kernel.org/linus/5f527822be40104e9056c981ff06c7750153a10a|commit]], [[https://git.kernel.org/linus/2cd86d309bd1203241ceb833effe90787f3564a1|commit]], [[https://git.kernel.org/linus/3d0174f78e72301324a5b0ba7d67676474e36fff|commit]] * Improve btrfs btree locking modes. It significantly improves performance: more files/sec in fsmark, better perf on multi-threaded workloads (filebench, dbench), fewer context switches, better latency, etc [[https://git.kernel.org/linus/523983401644ebeb331c923c28c9591c07430a7d|commit]] * CIFS * Compounding support, it aggregates several operations to avoid round trips [[https://git.kernel.org/linus/c5a5f38f075cf7656a1d7ad2b40cbc19e48e9805|commit]], [[https://git.kernel.org/linus/f733e3936da462265a155f4dd44a333e56d197ed|commit]], [[https://git.kernel.org/linus/47dd9597df41f0f5cc6d86cffbbccce2d9e3a788|commit]], [[https://git.kernel.org/linus/ba8ca116854abe19893b8287d15c781e73e72405|commit]], [[https://git.kernel.org/linus/c2e0fe3f5aae1f70a1ab402778819d2cacbaefa6|commit]], [[https://git.kernel.org/linus/f7bfe04bf0dbc422cbb3d5cffe1601518116dad6|commit]], [[https://git.kernel.org/linus/3764cbd179f061ddb308cd58c1e9bbf987505a18|commit]], [[https://git.kernel.org/linus/dcbf91035709e9b8490bba96995998f48ce85947|commit]], [[https://git.kernel.org/linus/bb435512cec806a8e4e1af2700a7a7848baed0b5|commit]], [[https://git.kernel.org/linus/14e562ada2b152cdeb49a1aec40fac402d19f3ce|commit]] * Implement direct I/O: The file system passes the I/O data directly from user-space buffer to the transport layer, when file system is mounted with {{{cache-none}}} [[https://git.kernel.org/linus/6e6e2b86c29c6fcfa16ad9fdc7ea32027bea5d73|commit]], [[https://git.kernel.org/linus/8c5f9c1ab7cb45f6584ce312b14fb310a8fa28f3|commit]], [[https://git.kernel.org/linus/be4eb68846dc4450a9a4998d7c16d9f4955f9988|commit]] * Add ioctl for {{{QUERY_INFO}}} passthrough to userspace. It allows userspace tools to query the raw info levels for cifs files and process the response in userspace [[https://git.kernel.org/linus/f5b05d622a3e99e6a97a189fe500414be802a05c|commit]] * Add support for ioctl on directories [[https://git.kernel.org/linus/8d8b26e58432cb2840048b9f8aea286be6f75de5|commit]] * Show number of current open files in /proc/fs/cifs/Stats [[https://git.kernel.org/linus/fae8044c03c3c03e06b384a6122b78a6c3a0b6a7|commit]] * F2FS * Support superblock checksum [[https://git.kernel.org/linus/d440c52d3151a28358f4c2d52d8583a0aa54ab83|commit]] * Checkpoint disabling [[https://git.kernel.org/linus/4354994f097d068a894aa1a0860da54571df3582|commit]] * Account meta IO and skip count of background GC in {{{status}}} debugfs entry [[https://git.kernel.org/linus/b63e7be5908cb757fc6b98fb9534dabd78b5338a|commit]], [[https://git.kernel.org/linus/274bd9ba39425610fdb9a6827602197a5cd27cd8|commit]] * Add new idle interval timing for discard and gc paths [[https://git.kernel.org/linus/a7d10cf3e4e3e308da01462a1ef8008233ee523d|commit]] * FUSE * Allow caching readdir [[https://git.kernel.org/linus/d123d8e1833c5d854b56f2a7da17cafd0a901df8|commit]], [[https://git.kernel.org/linus/6433b8998a21dc597002731c4ceb4144e856edc4|commit]], [[https://git.kernel.org/linus/18172b10b674a7cd5340b2dd70202ce6622400bd|commit]], [[https://git.kernel.org/linus/69e34551152a286f827d54dcb5700da6aeaac1fb|commit]], [[https://git.kernel.org/linus/5d7bc7e8680c7ca4c8a4f139ce2a54ccb8131ef0|commit]], [[https://git.kernel.org/linus/3494927e090bf511e54eecaf33a8e56e5c0463db|commit]], [[https://git.kernel.org/linus/7118883b44b8edfea732aadeb0d4424da3f152b2|commit]], [[https://git.kernel.org/linus/261aaba72fdba17b74a3a434d9f925b43d90e958|commit]], [[https://git.kernel.org/linus/ab2257e9941b9ef28d4a4a451e4b146d40a21e18|commit]] * Add support for copy_file_range() [[https://git.kernel.org/linus/88bc7d5097a11d9bdcf08ecf85c81ba998353437|commit]] * Enable caching of symlinks [[https://git.kernel.org/linus/5571f1e65486be025f73fa6aa30fb03725d362a2|commit]] * GFS2 * Add support for ioctl {{{getfslabel}}} [[https://git.kernel.org/linus/6ddc5c3ddf256a7a0906732681a337f0452ac67a|commit]] * NFSD * Server side support for async COPY [[https://git.kernel.org/linus/9eb190fca8f9056ea4502526dc55fe52318d9afc|commit]], [[https://git.kernel.org/linus/6308bc98e86ee8c7bbd56a39839a257a16c9378c|commit]], [[https://git.kernel.org/linus/e0639dc5805a9d4faaa2c07ad98fa853b9529dd3|commit]], [[https://git.kernel.org/linus/885e2bf3ea5121975ade0d7866ab6226a8547dc9|commit]] * 9P * Add mount option for lock retry interval [[https://git.kernel.org/linus/5e172f75e51e3de1b4274146d9b990f803cb5c2a|commit]] * AFS * Add support for the YFS variant of the AFS server [[https://git.kernel.org/linus/35dbfba3111a5ef0663bb89185ce8dfdbef63f8d|commit]], [[https://git.kernel.org/linus/d4936803a92b7d088086b1d7b8ecb5739d52c03b|commit]], [[https://git.kernel.org/linus/30062bd13e3659a309d249a06d5f4ebb4a5c5251|commit]] * Allow dumping of server cursor on operation failure [[https://git.kernel.org/linus/744bcd713a4eabb248246f7deccfad30c579b7f5|commit]] * CEPH * Add support for copy_file_range [[https://git.kernel.org/linus/2ee9dd958d474252510b8c4dc216aa1dab7ad272|commit]], [[https://git.kernel.org/linus/23ddf9bea900b4ce39e5707e1ddf66062cfe6d91|commit]], [[https://git.kernel.org/linus/503f82a9932d311c12430779627f7a130bbe462a|commit]], [[https://git.kernel.org/linus/ea4cdc548e5e74a529cdd1aea885d74b4aa8f1b3|commit]] * OCFS2 * Support partial clone range and dedupe range [[https://git.kernel.org/linus/900611a1bd06ef4a79980e58babc61ef056c81ab|commit]] * OVERLAYFS * Automatically enable redirect_dir on metacopy=on [[https://git.kernel.org/linus/d47748e5ae5af6572e520cc9767bbe70c22ea498|commit]] = Memory management = * XArray (recommended LWN article [[https://lwn.net/Articles/745073/|The XArray data structure]]) [[https://git.kernel.org/linus/3d0186bb068e6cc6c23dc1d2f0b1cf64894c40ea|commit]], [[https://git.kernel.org/linus/66ee620f06f99d72475db6eb638559ba608c7dee|commit]], [[https://git.kernel.org/linus/3159f943aafdbacb2f94c38fdaadabf2bbde2a14|commit]], [[https://git.kernel.org/linus/02c02bf12c5d838603eed44195d3e91f094e2ab2|commit]], [[https://git.kernel.org/linus/f8d5d0cc145cc21bfc56ef807dc28102aebbf228|commit]], [[https://git.kernel.org/linus/01959dfe771c6893365482ec78dc1d9cbbbe6de8|commit]], [[https://git.kernel.org/linus/992a8e60e3fea77c55589fc1c5af2304e78a5baa|commit]], [[https://git.kernel.org/linus/ad3d6c7263e368abdc151e1cc13dc78aa39cc7a7|commit]], [[https://git.kernel.org/linus/9b89a0355144685a787b0dc5bcf7bdd6f2d02968|commit]], [[https://git.kernel.org/linus/58d6ea3085f2e53714810a513c61629f6d2be0a6|commit]], [[https://git.kernel.org/linus/41aec91f55985e7f14ee75fe2f6e7bcfff0d0fae|commit]], [[https://git.kernel.org/linus/b803b42823d0d9e8b6deccf01ffc2aba5d0738df|commit]], [[https://git.kernel.org/linus/80a0a1a9a3cde9b23851e8eb7160e2786549306a|commit]], [[https://git.kernel.org/linus/687149fca1f37c447e5d161e0a4a04cb2c880cb6|commit]], [[https://git.kernel.org/linus/64d3e9a9e0cc51957d243dd2b0adc5d74ff5e128|commit]], [[https://git.kernel.org/linus/4e99d4e9579d3b950bf4b38d0d64eb1b9be78761|commit]], [[https://git.kernel.org/linus/2264f5132fe45571139727ebdeb78696b35d1506|commit]], [[https://git.kernel.org/linus/9f14d4f1f1045f161fd4db8a8e194b7825c2874a|commit]], [[https://git.kernel.org/linus/3d5bd6e1a04ae779bc5e0de9ba2e92aa55c40fe8|commit]], [[https://git.kernel.org/linus/371c752dc66948714ee3b66c3306f3ff1ff71d2e|commit]], [[https://git.kernel.org/linus/f32f004cddf86d63a9c42994bbce9f4e2f07c9fa|commit]], [[https://git.kernel.org/linus/eb797a8ee0ab4cd03df556980ce7bf167cadaa50|commit]], [[https://git.kernel.org/linus/0d3f92966629e536b0c5c2355c1ada8e21c245f6|commit]], [[https://git.kernel.org/linus/74d609585d8bd6083bd9d75bc1fd2c0d3851bcc5|commit]], [[https://git.kernel.org/linus/5c024e6a4ebc1740db9f0f075aaa476210108a97|commit]], [[https://git.kernel.org/linus/4c7472c0df2f889df417a37571e622e02b5058fe|commit]], [[https://git.kernel.org/linus/f280bf092d48ff2db12b4a01127cd855c9e0ffb0|commit]], [[https://git.kernel.org/linus/fd1b3cee2a867868d39bb8cbcc4b00c36d07cc01|commit]], [[https://git.kernel.org/linus/3ece58a270cd1e5026282abe778bd50db7a11d08|commit]], [[https://git.kernel.org/linus/a6906972fe67fb6f73ba04088f7897227fd1cd8f|commit]], [[https://git.kernel.org/linus/c1901cd33cf407d77a181f8dd4ffff98041ef480|commit]], [[https://git.kernel.org/linus/070e807c690bf9a648d4a878f3c68ea9f5f5ce14|commit]], [[https://git.kernel.org/linus/a332125fc3223e1092f765db442b7afb9fd4ecde|commit]], [[https://git.kernel.org/linus/ef8e5717db01bfa4f425d2cda551a6fccc85529d|commit]], [[https://git.kernel.org/linus/22ecdb4f8b7dbfefa3deaf6b144093b5c4cd2aff|commit]], [[https://git.kernel.org/linus/8fa8e538e4be359e9042573737632dda35a8700d|commit]], [[https://git.kernel.org/linus/ff9c745b81ff1e482167fd73558450e66ad43a33|commit]], [[https://git.kernel.org/linus/a97e7904c0806309fd77103005bb7820c3f1c5e4|commit]], [[https://git.kernel.org/linus/69b6c1319b6588b65d853055d5336f662f6cb1a2|commit]], [[https://git.kernel.org/linus/8d93b41c09d1b74f376e3b9779eb3badeb550301|commit]], [[https://git.kernel.org/linus/4e17ec250fce0eba9b70a91c9622da2748a3ec50|commit]], [[https://git.kernel.org/linus/560d454bae08b5d5a132c5520177dede066334b7|commit]], [[https://git.kernel.org/linus/89eb946a7432be639b452fac295c0c2e5186c4a4|commit]], [[https://git.kernel.org/linus/aa5dc07f70c50a3c56bf3fa07bde0b22a95aa381|commit]], [[https://git.kernel.org/linus/77da9389b9d5f07d54fda092d1ab56002ec0019a|commit]], [[https://git.kernel.org/linus/85b392dbace77bf91050e6e07f3dd0f262e4babf|commit]], [[https://git.kernel.org/linus/67891ffff2f5cf10e89e348207f687a05c8bd2d6|commit]], [[https://git.kernel.org/linus/10bbd235859bf483f9a8a4ebe95463d700bae394|commit]], [[https://git.kernel.org/linus/62f945b6a7b8cda6d1f35941eb374276f7b8749a|commit]], [[https://git.kernel.org/linus/a12831bf4293d38518e41b80dd897af0122bb268|commit]], [[https://git.kernel.org/linus/e21a29552fa3f44ea41c53488875015ae70fd7f8|commit]], [[https://git.kernel.org/linus/552446a4166189a8c2515571dd6e25fd64a2dc78|commit]], [[https://git.kernel.org/linus/7b8d046fba91d62beb8a8f78244aaa3c23a60cdd|commit]], [[https://git.kernel.org/linus/c121d3bb717ee932caf031c6a7923547f7f83163|commit]], [[https://git.kernel.org/linus/7ae3424fb4b5587d9b2db12a4b1040c52073dd5c|commit]], [[https://git.kernel.org/linus/2313216f861f955c2091f1593ea95d5dc88493f4|commit]], [[https://git.kernel.org/linus/ef3038a573aa8bf2f3797b110f7244b55a0e519c|commit]], [[https://git.kernel.org/linus/7f4446eefe9fbbe68e9543946c9a20f67897ff9b|commit]], [[https://git.kernel.org/linus/0a943c65e7d7207dce2a63e9d14a925c0d9a7d96|commit]], [[https://git.kernel.org/linus/ec82e1c1c89ce02d7703b841e6ee7d429feed609|commit]], [[https://git.kernel.org/linus/04edf02cdd37a7e2e23ce8de77cb06d22ef2f503|commit]], [[https://git.kernel.org/linus/f611ff63751afa421edc1eddf4281de13e082c51|commit]], [[https://git.kernel.org/linus/5ec2d99de7427c84bb7250d23f5acf49a3670a63|commit]], [[https://git.kernel.org/linus/a77d19f46a37c0fed48676739e8e0277f43d74e6|commit]], [[https://git.kernel.org/linus/ec4907ff69fb16161d9d9370260303a73dd5acde|commit]], [[https://git.kernel.org/linus/cfc93c6c6c963d96ef7081c17fb95d2738a75f55|commit]], [[https://git.kernel.org/linus/084a899008cec6db91dbf06453b2e3a36ceed02d|commit]], [[https://git.kernel.org/linus/07f2d89cc270936ac314e7cc4ac57077d7f08aef|commit]], [[https://git.kernel.org/linus/9fc747f68d49f4b63029e3a1e87c49d23771a199|commit]], [[https://git.kernel.org/linus/9f32d221301c3e754b24c77ab11bf793b19f51b5|commit]], [[https://git.kernel.org/linus/b15cd800682fcaf27048b05e42f5c208e4c756c0|commit]], [[https://git.kernel.org/linus/a28334862993b5c6a8766f6963ee69048403817c|commit]], [[https://git.kernel.org/linus/1cf56f9d670b88b2e947a7ccdb8ba32e6477915d|commit]], [[https://git.kernel.org/linus/2956c6644bfd9aab9f6b21a12e1bd75876d9dd73|commit]], [[https://git.kernel.org/linus/8cf2f98411e3a0865026a1061af637161b16d32b|commit]], [[https://git.kernel.org/linus/adb9d9c4ccb1ff0bf1d376e65f36aa5573c75c1a|commit]], [[https://git.kernel.org/linus/372266ba0267803564824b1c09f1bb7f3f3fc761|commit]], [[https://git.kernel.org/linus/47e0fab2b15155e33fdff777c791bebfd5855bbc|commit]], [[https://git.kernel.org/linus/d6427f8179b5dd65eb468c61fc8cc24657c336c9|commit]], [[https://git.kernel.org/linus/93eb07f72c8d86f8fe5e90907df1cc037f6ffbb7|commit]], [[https://git.kernel.org/linus/4f06d6302da682157890f72c0573e12a73536814|commit]], [[https://git.kernel.org/linus/0e9446c35a80931044b6d8d2d74a9cabd248539f|commit]], [[https://git.kernel.org/linus/bcfa4b72111c9a4d483024cb1f877803b354aa11|commit]], [[https://git.kernel.org/linus/9076b33d7dad8e316c90918845417e85347f682c|commit]], [[https://git.kernel.org/linus/879a9ae7b5bc046f195a725d62bbc96258e5d0c8|commit]], [[https://git.kernel.org/linus/4bb53bdda0d1e061035774ed4868bdeb4d889044|commit]], [[https://git.kernel.org/linus/ccc89e30fac790e3a175dbfc863c67286fce96b0|commit]], [[https://git.kernel.org/linus/b66b5a48b8a0e43dc114573da11c1a9c586a2d4f|commit]], [[https://git.kernel.org/linus/542980aa9318edcfb68aa7bf6eacf2814dc137dd|commit]], [[https://git.kernel.org/linus/3a08cd52c37c793ffc199f6fc2ecfc368e284b2d|commit]] * Introduce kmalloc-reclaimable caches which can be reclaimed under memory pressure (typically through a shrinker), these are shown as "kmalloc-rcl-SIZE" in {{{/proc/slabinfo}}}. This makes the slab pages accounted as {{{NR_SLAB_RECLAIMABLE}}} in vmstat, which is reflected also the {{{MemAvailable}}} counter in {{{/proc/meminfo}}} and in overcommit decisions. A new {{{KReclaimable}}} counter is added to that file show the sum of all reclaimable kernel allocations, including slab. The {{{NR_INDIRECTLY_RECLAIMABLE_BYTES}}} counter is repurposed [[https://git.kernel.org/linus/cc252eae85e09552f9c1e7ac0c3227f835efdf2d|commit]], [[https://git.kernel.org/linus/1291523f2c1d631fea34102fd241fb54a4e8f7a0|commit]], [[https://git.kernel.org/linus/2e03b4bc4ae84fcc0eee00e5ba5d228901d38809|commit]], [[https://git.kernel.org/linus/b29940c1abd7a4c3abeb926df0a5ec84d6902d47|commit]], [[https://git.kernel.org/linus/61f94e18de94f79abaad3bb83549ff78923ac785|commit]], [[https://git.kernel.org/linus/f0d77874143df90f9831f30254eb149fc4d76b40|commit]] * zero-seek shrinkers: implement a "zero-seek" setting for shrinkers that results in a target ratio of 0:1 between their objects and IO-backed caches. This allows such virtual caches to grow when memory is available (they do cache/avoid CPU work after all), but effectively disables them as soon as IO-backed objects are under pressure [[https://git.kernel.org/linus/4b85afbdacd290c7a22c96df40a6433fdcacb509|commit]] * workingset: add vmstat counter for shadow nodes [[https://git.kernel.org/linus/68d48e6a2df575b935edd420396c3cb8b6aa6ad3|commit]] * kmemleak: add module param to print warnings to dmesg [[https://git.kernel.org/linus/154221c3e52083d9f54fa58b4e1090264969f6bc|commit]] * contiguous page allocator: Improve large page preservation handling [[https://git.kernel.org/linus/2a25dc7c79c92c6cba45c6218c49395173be80bf|commit]], [[https://git.kern