Big-ticket items: Improved VM - Informal test results showing the changes from 5.4 to 5.6 are available. - Reduce stalls in the kernel vmpagealloc() code (vmpagelistfind()). - Improve page allocation algorithm to avoid re-iterating the same queues as the search is widened. - Add a vmpagehash*() API that allows the kernel to do heuristical lockless lookups of VM pages. - Change vmhold() and vmunhold() semantics to not require any spin-locks. - Change vmpagewakeup() to not require any spin-locks. - Change wiring vmpage's no longer manipulates the queue the page is on, saving a lot of overhead. Instead, the page will be removed from its queue only if the pageout demon encounters it. This allows pages to enter and leave the buffer cache quickly. - Refactor the handling of fictitious pages. - Remove m->md.pvlist entirely. VM pages in mappings no longer allocate pventry's, saving an enormous amount of memory when multiple processes utilize large shared memory maps (e.g. postgres database cache). - Refactor vmobject shadowing, disconnecting the backing linkages from the vmobject itself and instead organizing the linkages in a new structure called vmmapbacking which hangs off the vmmapentry. - pmap operations now iterate vmmapbacking structures (rather than spin-locked page lists based on the vmpage and pventry's), and will test/match operations against the PTE found in the pmap at the requisite location. This doubles VM fault performance on shared pages and reduces the locking overhead for fault and pmap operations. - Simplify the collapse code, removing most of the original code and replacing it with simpler per-vmmapentry optimizations to limit the shadow depth.
DRM - Major updates to the radeon and ttm (amd support code) drivers. We have not quite gotten the AMD support up to the more modern cards or Ryzen APUs yet, however. - Improve UEFI framebuffer support. - A major deadlock has been fixed in the radeon/ttm code. - Refactor the startup delay designed to avoid conflicts between the i915 driver initialization and X startup. - Add DRMIOCTLGETPCIINFO to improve mesa/libdrm support. - Fix excessive wired memory build-ups. - Fix Linux/DragonFly PAGEMASK confusion in the DRM code. - Fix idr_*() API bugs.
HAMMER2 - The filesystem sync code has been rewritten to significantly improve performance. - Sequential write performance also improved. - Add simple dependency tracking to prevent directory/file splits during create/rename/remove operations, for better consistency after a crash. - Refactor the snapshot code to reduce flush latency and to ensure a consistent snapshot. - Attempt to pipeline the flush code against the frontend, improving flush vs frontend write concurrency. - Improve umount operation. - Fix an allocator race that could lead to corruption. - Numerous other bugs fixed. - Improve verbosity of CHECK (CRC error) console messages.