Linus Torvald has released Linux 4.15 last Sunday:
After a release cycle that was unusual in so many (bad) ways, this last week was really pleasant. Quiet and small, and no last-minute panics, just small fixes for various issues. I never got a feeling that I’d need to extend things by yet another week, and 4.15 looks fine to me.
Half the changes in the last week were misc driver stuff (gpu, input, networking) with the other half being a mix of networking, core kernel and arch updates (mainly x86). But all of it is tiny.
So at least we had one good week. This obviously was not a pleasant release cycle, with the whole meltdown/spectre thing coming in in the middle of the cycle and not really gelling with our normal release cycle. The extra two weeks were obviously mainly due to that whole timing issue.
Also, it is worth pointing out that it’s not like we’re “done” with spectre/meltdown. There is more work pending (arm, spectre-v1, misc details), and perhaps equally importantly, to actually get the biggest fix for the indirect branch mitigations, you need not just the kernel updates, you need to have a compiler with support for the “retpoline” indirect branch model.
You can do
and if you don’t have a compiler that supports the retpoline mitigations, you’ll get:
Vulnerable: Minimal generic ASM retpoline
because only the assembly code (not the C code) will have the retpoline mitigation. So keep that in mind.
Anyway, while spectre/meltdown has obviously been the big news this release cycle, it’s worth noting that we obviously had all the *normal* updates going on too, and the work everywhere else didn’t just magically stop, even if some developers have been distracted by CPU issues. In the *big* picture, 4.15 looks perfectly normal, with two thirds of the full 4.15 patch being about drivers, and even the arch updates are dominated by the arm DTS diffs, not by CPU bug mitigation.
So the news cycle notwithstanding, the bulk of the 4.15 work is all the regular plodding “boring” stuff. And I mean that in the best possible way. It may not be glamorous and get the headlines, but it’s the bread and butter of kernel development, and is in many ways the really important stuff.
Go forth and play with it, things actually look pretty good despite everything.
And obviously this also means that the merge window for 4.16 is open. I already have a number of pull requests pending that I will start merging tomorrow. Hopefully we’ll have a _normal_ and entirely boring release cycle for 4.16. Because boring really is good.
Linux 4.14 extended memory limits to 128 PiB (Pebibyte = 1.024 Petabyte) of virtual address space and 4 PiB of physical address space, added zstd compression in Btrfs and Squashf file systems, improved kernel traces, and implemented zero-copy from user memory to socket among many other changes.
Linux 4.15 was especially newsworthy due to the Spectre/Meltdown debacle and initial fixes affecting all major silicon vendors, and operating systems, but that are also other notable changes:
- Initial RISC-V Support with device tree bindings for RISC-V CPUs, early boot and initialization code, the Linux atomic and memory model intrinsics, some interrupt and timer infrastructure, paging and MMU related code, and an implementation of the user-facing ABIs for RISC-V Linux systems.
- Improved power management in systems with SATA Link Power Management – Because of the lack of documentation of the ALPM (Aggressive Link Power Management), and because it easily caused data corruption, Linux has been unable to properly implement ALPM support for years. Lack of ALPM support prevents the system from entering in deep power saving states, which means a much worse battery life for Linux users on systems with ALPM. This lack of implementation leads to worse battery life in systems that support ALPM, but now a patch has been merged that implements a better default behavior for ALPM without corrupting data. Linux users with ALPM (e.g. on Intel Haswell, Broadwell, Skylake) should see better battery life with for example Thinkpad T440s laptop saving 0.9-1.2W when idle.
- AMD Secure Encrypted Virtualization – Linux 4.14 added AMD Secure Memory Encryption, and now Linux 4.15 adds initial support for AMD Secure Encrypted Virtualization, which integrates the memory encryption support in the AMD-V virtualization architecture to support encrypted virtual machines
- User-Mode Instruction Prevention Intel Security feature – Spectre/Meltdown was not the only security issue addressed in Linux 4.15, and the release also added support for “User Mode Instruction Prevention” found in Intel processor, that disable some instructions ( SGDT, SLDT, SIDT, SMSW and STR) from being executed in user mode in order to reduce the tools available to craft some type of privilege escalation attacks.
As usual, I’ll also provide a summary of some changes specific to the Arm architecture:
- Allwinner A10/A20/A31 – Drivers for Display, HDMI controller,
- Allwinner A33 – Audio codec fixes
- Allwinner A64 – DMA controller
- sunxi-ng clocks – Audio PLL sigma-delta modulation support for accurate audio playback
- Device tree changes:
- Allwinner A10/A20 – CCU sunxi-ng style clock conversion, Display pipeline, HDMI controller
- Allwinner A31 – HDMI controller, I2S controllers
- Allwinner A64 – DMA controller, EMAC, SPI
- Allwinner H3/H5 – EMAC
- Allwinner R40 – Basic dtsi
- Cleanups – Removal of GPIO pinmux settings for A10 and A80
- New devices & boards – TBS A711 tablet (Allwinner A83T), FriendlyARM NanoPi NEO Plus2, Olimex A20-OLinuXino-Micro eMMC variant, Banana Pi M2 Ultra, Banana Pi M2 Berry
- Clocks – New clock ids for Rockchip rk3188 and rk3368 SoCs
- Thermal – Add Rockchip RV1108 support in rockchip thermal driver
- Pinctrl – Various non-critical fixes
- LVDS support in DRM driver
- New boards – Amarula Vyasa single-board computer (RK3288)
- Device tree changes:
- Support for the RGA (raster graphics accelerator) on rk3399 and efuses on rk3368
- Enablement of display support on the rk3399-firefly, which got its default serial set as well and got cec support as well.
- Gru boards got their touchpad support refined to actually mark the button correctly and also git their rt5514 dsp added.
- RK3328 eval board got its cpu regulator and mmc nodes
- CEC support for the two rk3288-firefly variants and general hdmi support for the firefly-reload.
- Thermal support for the rv1108
- Vyasa from Amarula Solutions using a rk3288 and core LVDS node for the newly added driver+binding.
- bindings + nodes for the Mali-Utgard GPUs found on some Rockchip socs like RK3036 and RK3188. (Lima project can render a red triangle to a png file).
- Clocks – Amlogic Video Processing Unit VPU and VAPB clks
- nvmem – meson-mx-efuse: fix reading from an offset other than 0
- adc – meson-saradc: fix the bit_idx of the adc_en clock
- Various fixes – GPIO interrupt fixes, socinfo fix for GX series, typo
- Power management support for Amlogic GX family
- SMP support for Amlogic Meson8/8b
- MMC – meson-mx-sdio: New driver for the Amlogic Meson8 and Meson8b SoCs
- SoC info driver for 32-bit Amlogic SoCs
- New boards / devices – Amlogic Meson-AXG A113D based development board, Khadas VIM2 board, Tronsmart Vega S96 set-top-box
- Device tree changes:
- Add support for new GPIO IRQ driver
- Support for A113D SoC
- reserved memory fixups
- gpio-names cleanups
- MMC cleanups, enable high-speed modes
- Misc cleanups
- Add efuse node
- Add SDIO MMC controller
- Reserved memory fixes
- SoC info driver nodes
- Enable USB host controller
- Clocks – Updated runtime PM support for Samsung exynos5433/exynos4412 providers, removed clkdev aliases on Samsung SoCs
- Minor drivers cleanups, e.g. remove of Exynos4212 related dead code (no more support for this SoC).
- New boards – ODROID HC1 board for mini NAS / home cloud
- Samsung DTS ARM changes
- Add new board: Hardkernel Odroid HC1.
- Fix incomplete Odroid-XU3/4 thermal-zones definition leading to possible overheat if first pair of A7+A15 cores is idle but rest of CPUs are busy.
- Add capacity-dmips-mhz properties for CPUs of octa-core SoCs.
- Add power button to Odroid XU3/4.
- Improvements in Gscaler, HDMI and Mixer blocks on Exynos5.
- Add suspend quirk to DWC3 USB controller to fix enumeration of SuperSpeed devices on Odroid XU4.
- Add HDMI and MHL to Trats2.
- Cleanups (redundant properties and nodes).
- Samsung defconfig changes
- Enable USB3503 on multi_v7 for Odroid U3.
- Enable USB Attached SCSI for Odroid HC1.
- Clocks – RPM clk support on Qualcomm MSM8996/MSM8660 SoCs
- Regulator – Support for Qualcomm PMI8994
- Added USB modems – Quectel BG96 Qualcomm MDM9206 based IoT modem, Sierra Wireless EM7565 devices based on Qualcomm Snapdragon X16 LTE-A modem
- Drivers updates
- Add Qualcomm Remote Filesystem Memory driver
- Add OF linkage for RMTFS
- Add SCM firmware APIs for download mode and secure IO service
- Add SMEM support for cached entries
- Add SMEM support for global partition, dynamic item limit, and more hosts
- New devices – Fairphone 2, Sony Xperia Z2 tablet
- Device tree changes:
- Add MSM8660 GSBI6/7 nodes
- Disable GSBI6 at APQ8064 platform level
- Fix phy cells on APQ8064
- ARM64 updates:
- Add PCIE support to relevant MSM8996 based boards
- Add RPM clock controller node on MSM8996
- Add dload address on MSM8916 and MSM8996
- Add MBHC button support on APQ8016 SBC
- Add RTMFS specific compatible for rmtfs memory node
- Fixups for MSM8916 GPIO line names and MDP address length
- Defconfig updates:
- Enable Sony Z2 tablet options
- Enable USB on APQ8064/MSM8974
- Fixup/catchup config to support newer options
- 64-bit (ARM64):
- Enable QCOM IOMMU
- Enable Qualcomm USB options (re-enable Qualcomm DB410c USB)
- New clock driver for Mediatek MT2712 and MT7622
- Mediatek MT7622 RTC driver
- Power management – Add missing module information to the Mediatek cpufreq driver module
- Drivers update:
- add 32 bit read/write support to pwrap
- add mt7622 support to pwrap
- test build all mediatek soc drivers
- fix compiler issues
- clean up Kconfig description
- DTS updates:
- mt7623 update nodes to binding description
- mt2701 add display pwn nodes
- mt2701 update audio node description
- 64-bit – mt2712: add cpuidle support
- Other new ARM hardware platforms and SoCs:
- Actions Semi – Cubieboard6 SBC (Actions S500 )
- Broadcom – Broadcom Hurricane 2 based Ubiquiti UniFi Switch 8, Broadcom bcm47xx based Luxul XAP-1440/XAP-810/ABR-4500/XBR-4500 wireless access points and routers
- NXP – i.MX51: Zodiac Inflight Innovations RDU1 board; i.MX53: GE Healthcare PPD biometric monitor; i.MX6: Pistachio single-board computer, Vining-2000 automotive diagnostic interface, Ka-Ro TX6 Computer-on-Module in additional variants
- Realtek – RTD1295 based set-top-boxes MeLE V9 and PROBOX2 AVA
- Renesas – R-Car V3M (R8A77970) SoC and “Eagle” reference board, Renesas H3ULCB and M3ULCB “Kingfisher” extension infotainment boards, Renesas r8a7745 based iWave G22D-SODIMM SoM
Finally, some of the changes made for MIPS architecture:
- ralink: Fix MT7620 PCI build issues (4.5)
- Disable cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN for 32-bit SMP (4.1)
- Fix MIPS64 FP save/restore on 32-bit kernels (4.0)
- ptrace: Pick up ptrace/seccomp changed syscall numbers (3.19)
- ralink: Fix MT7628 pinmux (3.19)
- BCM47XX: Fix LED inversion on WRT54GSv1 (3.17)
- Fix n32 core dumping as o32 since regset support (3.13)
- ralink: Drop obsolete USB_ARCH_HAS_HCD select
- Build system:
- Default to “generic” (multiplatform) system type instead of IP22
- Use generic little endian MIPS32 r2 configuration as default defconfig instead of ip22_defconfig
- FPU emulation – Fix exception generation for certain R6 FPU instructions
- SMP – Allow __cpu_number_map to be larger than NR_CPUS for sparse CPU id spaces
- Add iomem resource for kernel bss section for kexec/kdump
- Atomics: Nudge writes on bit unlock
- DT files: Standardise “ok” -> “okay”
- Minor cleanups – Define virt_to_pfn(), Make thread_saved_pc static, simplify 32-bit sign extension in __read_64bit_c0_split(), etc…
- Platform support:
- BMIPS – Enable HARDIRQS_SW_RESEND
- Broadcom BCM63XX – Add clkdev lookup support, update clk driver, UART driver, DTs to handle named refclk from DTs, split apart various clocks to more closely match hardware, add ethernet clocks
- Cavium Octeon – Remove usage of cvmx_wait() in favour of __delay()
- ImgTec Pistachio – DT: Drop deprecated dwmmc num-slots property
- Ingenic JZ4780 – Add NFS root to Ci20 defconfig, aAdd watchdog to Ci20 DT & defconfig, and allow building of watchdog driver with this SoC
- Generic (multiplatform) – Migrate xilfpga (MIPSfpga) platform to the generic platform
- Lantiq xway – Fix ASC0/ASC1 clocks”