|
|
Subscribe / Log in / New account

4.7 Merge window, part 1

By Jonathan Corbet
May 18, 2016
The 4.7 merge window opened on May 15, after the release of the 4.6 kernel. Since then, Linus has pulled 3,345 non-merge changesets into the mainline repository. A significant chunk of that total came via the networking tree, but some other big trees (including the virtual filesystem tree with a number of fundamental, mostly under-the-hood changes) have been pulled as well. Linus would appear to have decided to start with mostly core-kernel changes this time around; few device-driver trees have been pulled as of this writing.

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.

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
KernelReleases/4.7


to post comments

4.7 Merge window, part 1

Posted May 19, 2016 14:13 UTC (Thu) by fratti (guest, #105722) [Link]

>Arm64 also now supports hibernation (suspend-to-disk).

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".


Copyright © 2016, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds