Fix a namecache race (triggered by heavy tmpfs mount/umount rate)
Fix two unmount / access races when many mounts are present
Improve context switch hotpath
Cut pmap invalidations from buffer cache activity in half
Reduce certain potential interrupt stacking issues
Implement a new fixed memory pool for physio accesses, eliminating all SMP invalidations from the path
Refactor pmap invalidations to operate at a higher priority than critical sections, reduce response latency and greatly reducing multi-core stalls during heavy invalidation activity
Fix a 2-instruction SMP race during thread exit.
Add buffer cache repurposing to reduce TLB invalidations in high-I/O-thru-filesystem situations. Defaults to off (sysctl vfs.repurpose_enable).
Revamp the IPIQ (IPI messaging) mechanics to avoid deadlocks during heavy activity.
Revamp the IPI interrupt signalling mechanics to reduce unnecessary duplicate IPIs.
We no longer use the vm_map subsystem to dynamically allocate and deallocate KVM for the buffer-cache. Instead we pre-reserve the maximumamount of (unmapped) KVM for every buffer. This makes certain congestion-control algorithms for the buffer cache unnecessary and they have been removed.
Add a SMP %rip sniffer IPI, very useful for debugging.
Fix an issue where the reported real-time becomes inconsistent between cpu threads under heavy loads. This issue generally resulted in'make' getting confused.
Refactor the VM prefaulting code to improve pipe-lining. This improves burst page-in performance when starting large applications suchas chrome.
A lot of work to reduce noticable (but short) stalls in various subsystems when they have to work on large data-sets. For example such as when a process with 64GB of RSS exits.
Reduce stalls during major token contention. It used to be that a large multi-threaded program contending on a single lock across all cpuscould create noticable stalls even if the program was running niced or at a high (aka low) dynamic priority. These situations have been fixed.
New threads should not inherit the sigalstack. Fixes issues with 'go'.
Fix MSI support issues.
Improve buffer flush and cluster_write linearity.
Allow drivers to register interrupts which are specifically meant tobe high-frequency (disable the rate limiter for such interrupts).
Bring in ipfw3
implement a lockless in-kernel NAT for ipfw3 (note that PF's NAT is also mostly lockless).
Add ipfwsync for ipfw3, for synchronizing state between multiple machines.
Various procfs workarounds added to fix truss issues.
Implement PIE (place independent executables). Randomization be enabled with a sysctl kern.elf64.pie_base_mmap.
Implement ppoll() with precise microsecond timeout.
Fix VM issues with virtio.
Add EVFILT_FS support to kqueue.
Cut-down on the amount of BSS in the kernel binary. We ran over theloader's 64MB limit (with the initrd image and a few kld's also loaded), AGAIN!
modules.local mechanism added for non-base kernel modules.
Implement I2cSerialBus ACPI module support (used by IG4).
Implement ACPI's GPIO.
Work around HW VM bugs by aligning the kernel load's end address to 2MB, so there is no transition from 4K pages to 2MB pages for kernel text+data+bss.
Many, many HAMMER improvements.
HAMMER mount is now forced to noatime by default.
Do not allow the kqueue sleep timer to wrap.
User process scheduler adjustments to improve interactive responsiveness in situations where (essentially) batch jobs are syscall-heavy or VM fault-heavy.
Fix cpu selection skew in the scheduler with high fork/exec rates.
Fixed vfork()/getpid() bug in heavily threaded programs.
Refactor vm_page_alloc() and the pre-zeroing code to maintain cpu-v-cache affinity.