4.7 Merge window, part 1
The most significant user-visible changes merged so far include:
- The schedutil CPU-frequency governor
has been merged. This is the first governor that takes load
information directly from the scheduler, ushering in the new era where
CPU-related power management and the scheduler actually work
together. It is in a relatively simple form for 4.7, but will be
enhanced in the future. See this
changelog for more information on the current state of schedutil.
- The sigaltstack()
system call now supports a new flag called SS_AUTODISARM.
When this flag is provided, the alternate signal stack will be
disabled while the signal handler itself is running. That allows the
application to call swapcontext()
without corrupting the signal state, a feature that, evidently, is
especially useful for dosemu.
- The kernel now supports an EFI "capsule loader," accessible via
/dev/efi_capsule_loader. It can be used to load firmware
updates in the EFI capsule format; see this
blog entry for information on why this can be useful.
- The arm64 architecture has gained support for non-uniform memory
architecture (NUMA) systems. Arm64 also now supports hibernation
(suspend-to-disk).
- Two new flags have been added to the preadv2() and
pwritev2() system calls (which were merged in 4.6), though
they are only really applicable to write operations.
RWF_SYNC causes data and metadata to be flushed to persistent
media after the operation, while RWF_DSYNC causes only data
to be flushed.
- The ability to attach BPF programs to
tracepoints has been added. This significantly increases the
dynamic tracing functionality available in mainline kernels.
- BPF programs used with the cls_bpf and act_bpf
traffic-control modules may now access packet content directly without
having to call special load functions. The result is a significant
increase in performance at the cost of possibly exposing kernel data
to user space. These programs can only be loaded by a privileged
user, though, so data leaks should not normally be a problem.
- The BPF just-in-time compiler can do "constant blinding": scrambling
constant values in BPF programs so that they cannot be used to load
arbitrary instructions into kernel space. See this
changelog for more information.
- A patch from Airbus adds support for v1 of the high-availability
seamless redundancy protocol to the network stack.
- The TCP code has been reworked to make it much more preemptible; that
should help to reduce latency spikes when large numbers of packets
need to be processed.
- The GPRS
tunneling protocol GTP-U protocol is now supported by the kernel.
- New hardware support includes:
- Systems and processors:
SGI Ultraviolet UV4 systems.
- Cryptographic:
Freescale security controllers and
Hisilicon random-number generators.
- Miscellaneous: Maxim integrated MAX31722/MAX31723 SPI temperature sensors, TI LP873X power regulators, Powerventure Semiconductor PV88080 voltage regulators, devices using the Qualcomm IPC router protocol, I2C-connected NXP PN533 NFC interfaces, Asus X205TA keyboards, and Loongson 1 GPIO controllers.
- Systems and processors:
SGI Ultraviolet UV4 systems.
Changes visible to kernel developers include:
- Reader/writer semaphores can now be locked for writing with
down_write_killable(), which allows the locking process to be
killed by a fatal signal while waiting.
- The first steps in Thomas Gleixner's grand
plan to rationalize the CPU hotplug subsystem have been merged.
The big state machine envisioned by Thomas isn't there yet, but the
process of getting the hotplug notifiers ready for that step is moving
forward.
- The "floating proportions" code, described in this 2007 article, has been removed. Few
developers will notice, though: it was determined that these functions
were not being used anywhere in the kernel.
- In a change that Linus called
"
a big deal
", the virtual filesystem layer can now do multiple lookups within a directory in parallel, eliminating a significant source of contention. As part of this work, the file_operations structure has gained a new method:
int (*iterate_shared) (struct file *file, struct dir_context *context);
It works like the existing iterate(), except that multiple calls can be made simultaneously within the same directory. The plan is to remove iterate() once all filesystems have switched over; in many cases, the existing iterate() implementation works just fine as iterate_shared().
A two-week merge window would be expected to end on May 29. Linus has
occasionally been known to close the merge window early, though. Given
that the 29th lands in the middle of a holiday weekend in the US, one might
conclude that the temptation to wrap up the merge window a little early
might be stronger than usual this time around.
Index entries for this article | |
---|---|
Kernel | Releases/4.7 |
Posted May 19, 2016 14:13 UTC (Thu)
by fratti (guest, #105722)
[Link]
If it's as good as the x86 hibernation functionality, I wouldn't really call it "supports", more like "gives you the option for with no guarantees whatsoever".
4.7 Merge window, part 1