A.3 Core Kernel Functionality

  • Add a lock-less NULL-terminated single list. (3.1)

  • Add a library function implementing a crc8 algorithm to support the brcm80211 driver. (3.1)

  • Make the gen_pool memory allocator lockless. This change makes it safe to use the memory allocator in NMI handlers and other special unblockable contexts where deadlocks might occur. (3.1)

  • Implement the PTRACE_INTERRUPT, PTRACE_LISTEN, PTRACE_SEIZE, and TRAP_NOTIFY ptrace() requests. (3.1)

  • Adds /sys/module/module_name/uevent files to all module entries to provide a method for managing built-in modules from user space. (3.1)

  • Add support for the implementation of SEEK_HOLE and SEEK_DATA in lseek(). (3.1)

  • Add the ! escape character to / in hostname and comm strings in core dumps. (3.1)

  • If the value of the sysctl parameter shm_rmid_forced is set to 11, all shared memory objects are marked for removal with IPC_RMID. As this change breaks POSIX compliance, you need to ensure that no threads are using the orphaned memory. (3.1)

  • Add support for generic I/O power management domains (v8) by introducing common headers, helper functions, and callbacks to allow platforms to use simple, generic power domains for runtime power management. (3.1)

  • Add system-wide power transitions (system suspend and hibernation) support for generic domains (v5). Add suspend, resume, freeze, thaw, poweroff, and restore callbacks that are associated with struct generic_pm_domain objects and have pm_genpd_init() interpret them as appropriate. (3.1)

  • Add wakeup device support for system-sleep transitions. Introduce a new generic power management domain callback routine, .active_wakeup(). This routine is used during the noirq phase of system suspend and hibernation to decide how to handle wakeup devices. (3.1)

  • Add the ability to set a maximum limit for allowable CPU bandwidth to the process bandwidth controller. The limit is specified as a quota and a period for a group of processes. (3.2)

  • To reduce the performance impact from using i_mutex lock with generic_file_llseek(), an almost lockless generic_file_llseek() is added to VFS that allows the maximum file size of the file system to be passed in, instead of always using maxbytes from the superblock. (3.2)

  • A boot parameter of the form root=PARTUUID=uuid,PARTNROFF=partition_number_offset extends the root=PARTUUID=uuid syntax to select the root partition by specifying an integer offset from a known, unique partition. (3.2)

  • Add a fault reporting mechanism to the input/output memory management unit (IOMMU) API. (3.2)

  • Allow partition creation from user space and add discard support for loop devices. (3.2)

  • When performing AIO, allocate kiocb structures in batches to reduce the CPU overhead of a process taking and releasing the context lock. (3.2)

  • Add support for the tagged files ease-of-use feature in sysfs. (3.2)

  • Add a comm change event to the process connector. (3.2)

  • Add architecture-independent support for highmem page poisoning and verification to debug-pagealloc. (3.2)

  • Add support for poll() in sysctl so that user-space applications can be notified of changes to sysctl entries. (3.2)

  • The x32 kernel ABI (kABI) allows programs to take advantage of x86-64 features such as a larger number of CPU registers, better floating-point performance, faster position-independent code shared libraries, function parameters passed via registers, and faster system-call instructions. The kABI uses 32-bit pointers and avoids the overhead of 64-bit pointers. The program is limited to a 4-GB virtual address space. However, reducing the memory footprint can also allow a program to run faster. (3.4)

  • The nomodule kernel parameter can be used to disable module loading as an alternative to using sysctl.

  • The prctl() PR_GET_CHILD_SUBREAPER and PR_SET_CHILD_SUBREAPER options implement simple process supervision of orphaned processes. (3.4)

  • Thread stacks are now marked correctly for proc/pid/maps under procfs. (3.4)

  • Restore the sysctl setting kernel.pty.max as the global limit of pseudo terminals (by default, 4096). (3.4)

  • Add abilities to turn the reboot notifier on or off, and to enter the debugger and stop kernel execution before rebooting. (3.4)

  • To improve performance, VFS now uses unsigned long accesses for dcache name comparison and hashing. (3.4)

  • /proc/pid/task/tid/children entries provide information about task children and can be useful for process checkpoint and restore operations. (3.5)

  • /proc/pid/pagemap now reports whether file pages are shared-anon or file-page. (3.5)

  • The skew_tick boot option mitigates xtime_lock contention on larger systems or read-copy-update (RCU) lock contention on all systems when CONFIG_MAXSMP is set. This option increases power consumption and should only be enabled if the system runs jitter-sensitive workloads (typically, HPC or RT). (3.5)

  • Inode stat information is moved closer together to increase the likelihood of cache hits. (3.5)

  • The fallocate() file-system operation allows preallocation space for a file. (3.5)

  • Stale power-aware scheduling remnants and dysfunctional knobs have been removed from the process scheduler. (3.5)

  • The EPOLLWAKEUP flag prevents system suspension while epoll events are ready. (3.5)

  • ramoops uses the pstore interface instead of /dev/mem. (3.5)

  • Add ECC support to pstore/ram. (3.5)

  • make tools is now integrated with the kernel build system. (3.5)

  • The kernel parameter RCU_FANOUT_LEAF can be used to control leaf-level fanout for RCU locking to reduce cache-miss initialization latencies on large systems. (3.5)

  • RCU locking now implements a direct algorithmic sleepable RCU (SRCU) implementation to prevent OS jitter and performance degredation. (3.5)

  • Add rbtree node caching support to IPC mqueue for the case where the queue is empty, improve performance of send/recv, and update maximums for the mqueue subsystem. (3.5)

  • Add symbolic and hard link restrictions to VFS to address security issues. (3.6)

  • Improvements to the IOMMU group implementation. (3.6)

  • Remove the non-working x86 power estimation feature from the process scheduler. (3.6)

  • Add hysteresis attributes (used by most thermal sensors) on a per-trip-point basis to the thermal framework. (3.6)

  • Add support for states that affect multiple CPUs. This is potentially useful in implementations where CPUs leverage a shared, coupled power state. (3.6)

  • The rcutree.rcu_fanout_leaf boot parameter allows the value of RCU_FANOUT_LEAF to be increased but not decreased. (3.6)

  • Firmware files can be loaded directly from the file system rather than from udev. (3.7)

  • xattr support in cgroups allow run-time metadata to be attached to cgroups. (3.7)

  • The disable_nmi command in kdb disables NMI-entry and releases the port. (3.7)

  • Add a special serial console driver to allow the temporary use of an NMI debugger port as a normal console via the nmi_console command. (3.7)

  • RCU locking changes:

    • Control grace period duration from sysfs.

    • Make rcutree module parameters visible in sysfs.

    • Allow an RCU lock to be placed in an extended quiescent state when the CPU runs in user space.

    (3.7)

  • Add system call to enforce that kernel modules are loaded only from a read-only cryptographically verified root file system. (3.8)

  • Applications can choose between using 1-GB and 2-MB huge pages. Typically, this feature is used in conjunction with a NUMA policy. (3.8)

  • Add option to allow assignment of a memory node as movable memory, which allows an entire node to be hot-pluggable. (3.8)

  • Add sysctl variables to tune checkpoint/restart in user space (CRIU) including specifying the ID of the next IPC object to be allocated. (3.8)

  • Introduce CRIU message queue copy feature so that all pending IPC messages can be retrieved without deleting them from the queue. (3.8)

  • Correct the implementation of hierarchy support for the freezer cgroup. If a cgroup is frozen, all its descendants are also frozen. (3.8)

  • Implement the PTRACE_O_EXITKILL ptrace() request. (3.8)

  • Add the VmFlags field to /proc/PID/smaps output. Required by CRIU. (3.8)

  • Add TIOCGPKT, TIOCGPTLCK and TIOCGEXCL ioctl() calls to obtain the package mode and locking state of a pseudo terminal, and to obtain exclusive mode on a tty. (3.8)

  • Add a module parameter to force the use of expedited RCU primitives, which can benefit some embedded applications. (3.8)

  • Allow selected CPUs to have RCU callbacks offloaded to kthreads to prevent or minimize OS jitter. (3.8)

  • Provide support in sysfs to determine the maximum number of virtual functions (VFs) and Single Root I/O Virtualization (SR-IOV) capable PCIe devices that are supported, and the methods that are available for enabling and disabling VFs on a per-device basis. (3.8)

  • Add a sysfs node to present the available frequencies for power management. (3.8)

  • Add the PM_QOS_FLAG_NO_POWER_OFF and PM_QOS_FLAG_REMOTE_WAKEUP power management QoS device flags. (3.8)

  • Add a sysfs node to present frequency transition information for power management. (3.8)