@@ -20,19+20,15 @@ The details of all commits between the 5.2 and 5.4 branches are available in the

* GCC 4.7.4 and GCC 5.4.1 are still installed. 4.7.4 is our backup compiler, and 5.4.1 is still there to ensure a smooth transition, but should generally not be used. buildworld builds all three by default to ensure maximum compatibility.

+* Many passes through world sources were made to address various warnings and errors the new GCC brought with it.

+

### HAMMER2

* HAMMER2 is recommended as the default root filesystem in non-clustered mode.

* Clustered support is not yet available.

* Increased bulkfree cache to reduce the number of iterations required.

* Fixed numerous bugs.

-*

-

-### Driver updates

-

-* A number of drivers of use when running DragonFly as a guest VM have been added or updated, including ena, if_vtnet, virtio_balloon, and virtio_pci.

+* Complete the full Spectre mitigation support. Default disabled due to extreme performance loss. The machdep.spectre_support sysctl can be used to probe support, and machdep.spectre_mitigation sysctl can be used to enable/disable support (can be done at run time).

+* Change the default /root perms from 755 to 700 in the build template.

-* Numerous spinlock performance and edge-case improvements. Deal with shared starvation in the face of a long series of exclusive locks, and vise-versa.

+* Numerous spinlock performance and edge-case improvements. Deal with shared starvation in the face of a long series of exclusive locks, and vise-versa. Add TSC-based windowing as a fall-back when excessive contention is present.

* Add a dirty vnode management facility.

* Remove bottlenecks from the rlimit handling code by reflecting p_limit into td_limit.

* Increase the size of the vm_object hash table by 4x to reduce collisions.

* Fix duplicate da* reporting at boot time and fix the related lockup.

+* Fix legacy IRQ bug by ensuring that legacy IRQs only appear on one CPU.

+* Fix a multitude of usched issues that could cause unrelated processes to be misscheduled.

+* Refactor the nice priority calculations to improve expected relative behavior when multiple cpu-bound processes are NICEd to different values.

+* Refactor machdep.cpu_idle_hlt for better AMD handling.

+* Rearrange pmap PV caching a bit to improve performance.

+* Optimize the syscall path to improve performance.

+* Rearrange a few structures to localize fields for cache line optimization.

+* Remove vm_zeroidle.c. Remove the asynchronous page zeroing code. Instead, we now zero pages on demand, just before they are used, to reduce unnecessary cache interactions and to reduce a long-time debuggability issue with pre-zero'd pages.

+* X2APIC support added and tested.

+* ACPI updated from Intel base.

+* Fix a swapcache cleaning issue that could cause swapcache to behave in a non-useful manner.

+* Change closefrom() EINTR behavior. closefrom() no longer breaks out of its loop when EINTR is received from close() (which could occur with NFS descriptors). EINTR will still be rolled up and returned (callers usually ignore this).

+* Fix a rare pmap_scan_callback() panic.

+* Fix a umtx race in the kernel.

+* Fix a NULL pointer indirection on lost socket bug.

+* Enable NX for PROT_READ-only mappings by default. NX cannot be enabled for PROT_WRITE (without PROT_EXEC) due to assumptions made by applications. Suggested by OpenBSD.

+*

+### Filesystems

+* autofs - Various updates to autofs

+* ufs - Fix an old UFS bug that would panic on certain filesystem full conditions.

+* ufs - Rename UFS constants throughout to improve separation.

+* tmpfs - Fix NFS exports of tmpfs filesystems.

+* tmpfs - Significantly improve tmpfs concurrency.

+* Fix minor bugs in HAMMER1 that could result in an assertion under heavy loads.