Linux 5.0 Release – Main Changes, Arm, MIPS & RISC-V Architectures

Orange Pi Development Boards

Linus Torvalds has just released Linux 5.0:

Ok, so the last week of the 5.0 release wasn’t entirely quiet, but it’s a lot smaller than rc8 was, and on the whole I’m happy that I delayed a week and did an rc8.

It turns out that the actual patch that I talked about in the rc8 release wasn’t the worrisome bug I had thought: yes, we had an uninitialized variable, but the reason we hadn’t immediately noticed it due to a warning was that the way gcc works, the compiler had basically initialized it for us to the right value. So the same thing that caused not the lack of warning, also effectively meant that the fix was a no-op in practice.

But hey, we had other bug fixes come in that actually did matter, and the uninitialized variable _could_ have been a problem with another compiler.

Regardless – all is well that ends well. We have more than a handful of real fixes in the last week, but not enough to make me go “Hmm, things are really unstable”. In fact, at least two thirds of the patches are marked as being fixes for previous releases, so it’s not like 5.0 itself looks bad.

Knock wood.

Anyway, with this, the merge window for 5.1 is obviously open, and I’m happy to see that I already have several early pull requests. Which I’ll start processing tomorrow.

And appended is – as usual – the shortlog just for the last week. Th
overall changes for all of the 5.0 release are much bigger. But I’d like to point out (yet again) that we don’t do feature-based releases, and that “5.0” doesn’t mean anything more than that the 4.x numbers started getting big enough that I ran out of fingers and toes.

Linus

Linux 4.20 release added some Chinese based CPUs such as C-SKY architecture and Hygon Dhyana x86 CPUs, pressure stall information (in  /proc/pressure/), support for AMD Raven2 APU and Picasso APUs, Lazy TLB flushed optimization and more.

Linux 5.0 ChangelogSome notable changes in Linux 5.0 include:

  • Adiantum file system encryption for low power devices added to fscrypt. More details in “Adiantum Enables Faster File Encryption in Devices without AES Crypto Accelerator
  • Support for AMDGPU FreeSync – Linux 5.0 adds support for FreeSync adaptive synchronization technology that works with LCDs supporting dynamic refresh rate. The technology enables low monitor latency, a mostly stutter-free viewing experience, and improves battery life by reducing the refresh rate of the panel when not receiving new images.
  • Btrfs swap file support. The swap file must be fully allocated as “nocow” with no compression on the device.
  • binderfs, a binder filesystem to run multiple instances of Android

Changes specific to Arm architecture include:

  • Energy-aware Scheduling for Arm big.LITTLE –  EAS enables lower power usage on asymmetric SMP platforms by waking up tasks to the more energy-efficient CPUs first. EAS in the Linux kernel is a  simplified version of the energy-aware scheduling that is currently part of the AOSP Common Kernel. Read this LWN article for more details.
  • Allwinner
    • A64 – Cedrus open source video driver, DTS changes for audio codec
    • H6 – Ethernet, DE3/HDMI support, USB 2.0
    • H3 / H5 – CSI Support
    • H5 – Cedrus
    • V3s – CSI Support
    • SRAM support for F1C100, H5 and A64 C1.
    • Clock driver for F1C100s and H6 (display engine)
    • Bluetooth support for Broadcom-based (Ampak modules) on Banana Pi M2 Magic, Banana Pi M3, Banana Pi M64, Cubietruck, and Cubietruck Plus
    • Added Allwinner T3 (rebranded R40) and F1C100s Armv5 processor
    • New hardware – Allwinner t3-cqa3t-bv3 (T3/R40), Lichee Pi Nano (F1C100s), Emlid Neutis N5, Mapleboard MP130
  • Rockchip
    • SPI driver clean-up
    • Rockchip VPU staging driver (JPEG encoding only)
    • Clocks – Register fixes for Rockchip rk3188 and rk3328; One new critical clock for Rockchip rk3188 and a fixed clock id(double used number); New clock id for Rockchip rk3328
    • Power domain support for RK3066 and RK3188
    • Add dual MIPI support
    • New hardware – Gru Scarlet RK3188 RK3399 tablet
  • Amlogic
    • Clock driver – Amlogic GX video clocks, meson8b CPU frequency scaling & post-divider clocks; updated Meson8/Meson8b video clock support
    • Add Amlogic Meson PCIe controller driver and DT bindings
    • DRM – Add primary plane scaling, support Overlay plane for video rendering
    • Power measurement driver
    • DTS updates
      • support more timers on meson8
      • add the stdout-path property on several boards
      • AXG: enable GPIO IRQs, PHY IRQ, watchdog
    • ARM64 DTS updates
      • AXG: enable GPIO IRQs, PHY IRQ, watchdog, SCPI, add secure monitor
      • fixes for pinmux pad bias, GPIO line names
    • New hardware – Phicomm N1 (S905) and Libretech S805-AC
  • Samsung
    • Clean-ups for cleans up old wakeup, PM debug and secondary core boot code
    • Arm DTS changes
      • Add missing properties and nodes for PMIC clocks in multiple DTS
        files.
      • Add UHS-I bus speed support to Odroid XU3/XU4/HC SD card and bump the maximum clock frequency to 200 MHz for SD and eMMC.
      • Update cooling maps to include all CPU devices in multiple DTS files.
      • Enable quirks for Exynos3250 DWC.
      • Add JPEG CODEC node to S5Pv210.
      • Add opp-suspend to devfreq OPPs on Exynos4 boards to fix resuming
        from suspend to RAM.
      • Remove eDP from Arndale board as it does not work and breaks also
        DSI.
      • Add missing CPUs in cooling maps for Odroid X2
      • Fix clock configuration in audio subsystem on Odroid XU3/XU4
    • ARM64 DTS changes
      • Update DWC3 hardware modules to Exynos5433 specific variant.
      • Update cooling maps to include all CPU devices in multiple DTS files.
      • Add IMEM clock controller (for Security SubSystem) and Bluetooth chip to Exynos5433 TM2(e) boards
    • Deconfig updates
      • Enable drivers in exynos and multi_v7 defconfigs for MAX8952, MAX8998 (Samsung UniversalC210 board) and TC358764 (Arndale board).
  • Qualcomm
    • Pin control – New Qualcomm PMS405 PMIC driver; improvement: GPIO hogs now work on the Qualcomm SPMI/SSBI pin controller GPIO
      chips, and Xway
    • New Clock drivers for Qualcomm SDM845 audio subsystem clks and GPU clck controllers, QCS404 RPM clk support
    • Add Qualcomm PM8916 watchdog
    • ARM64 updates
      • Add QCS404 4x A53 base platform and nodes
      • Add QCS404 EVB boards
      • Add external SD and dependencies for MSM8998-mtp
      • Add default scm compatible for MSM8998
      • Fix XO clk name on MSM8998
      • Add prng-ee nodes for SDM845 and MSM8996
      • Add ADC die temp node for pm8998
      • Fix documentation on QCOM ADC sample
      • Switch to use dwc3-qcom glue driver on MSM8996
      • Add cooling maps on MSM8916
      • Add UART nodes on SDM845
      • Add camera subsystem support on MSM8996 and MSM8916
    • Device tree changes for Linux 5.0:
      • Add entry for Qualcomm TSENS thermal drivers
      • Update msm8974 thermal entries
      • Fix msm8974 Hammerhead magnetometer gpios
      • Add SoC specific compatibles for SDHC nodes
      • Remove Arrow SD600 eval board
    • ARM64 Deconfig updates
      • Enable Qualcomm QCS404 platform options
      • Enable Qualcomm MSM8998 clock and pinctrl
      • Enable Qualcomm SDM845 options
      • Add remoteproc related configs
  • Mediatek
    • Pinctrl – Meditak MT6797 and MT7629 SoC driver
    • SPI – Support for Mediatek MT7629 and MT8183
    • Mediatek MT7629 SoC clk controllers
  • Other new ARM hardware platforms and SoCs:
    •  Aspeed – Facebook Backpack-CMM BMC
    • Marvell – Macchiatobin Single Shot (Armada 8040, no 10GbE)
    • NXP – Added NXP i.MX7ULP, LS1028A, and LX2160A SoCs; emtrion emCON-MX6, imx6ul-pico-pi, imx7d-sdb-reva; VF610 hw: Liebherr’s BK4 device, ZII SCU4 AIB board; i.MX7D PICO Hobbit baseboard; i.MX7ULP EVK board; NXP LX2160AQDS and LX2160ARDB boards
    • PXA – First PXA3xxx DT board (Raumfeld)
    • Renesas – iWave G20D-Q7 (RZ/G1N)

Main changes for MIPS architecture updates & new features for Linux 5.0:

  • Syscall tables & definitions for unistd.h are now generated by
    scripts, providing greater consistency with other architectures &
    making it easier to add new syscalls.
  • Support for building kernels with no floating point support, upon which any userland attempting to use floating point instructions will receive a SIGILL. Mostly useful to shrink the kernel & as preparation for nanoMIPS support which does not yet include FP.
  • MIPS SIMD Architecture (MSA) vector register context is now exposed by ptrace via a new NT_MIPS_MSA regset.
  • ASIDs are now stored as 64b values even for MIPS32 kernels, expanding the ASID version field sufficiently that we don’t need to worry about overflow & avoiding rare issues with reused ASIDs that have been observed in the wild.
  • The branch delay slot “emulation” page is now mapped without write permission for the user, preventing its use as a nice location for attacks to execute malicious code from.
  • Support for ioremap_prot(), primarily to allow gdb or other ptrace users the ability to view their tracee’s memory using the same cache coherency attribute.
  • Optimizations to more cpu_has_* macros, allowing more to be compile-time constant where possible.
  • Enable building the whole kernel with UBSAN instrumentation.
  • Enable building the kernel with link-time dead code & data elimination.
  • Some platform specific changes:
    • The Boston board gains a workaround for DMA prefetching issues with
      the EG20T Platform Controller Hub that it uses.
    • Cleanups to Cavium Octeon code removing about 20k lines of
      redundant code
    • defconfig updates for the DECstation machines, including new defconfigs for r4k & 64b machines.
    • Further work on Loongson 3 support.
    • DMA fixes for SiByte machines

For the first time, I’ve also decided to add some of the changes for RISC-V architecture:

  • Core RISC-V updates:
    • The BSS has been moved, which shrinks flat images.
    • A fix to test-bpf so it compiles on RV64I-based systems.
    • A fix to respect the kernel commandline when there is no device tree.
    • A fix to prevent CPUs from trying to put themselves to sleep when bringing down the system.
    • Support for MODULE_SECTIONS on RV32I-based systems.
    • [new in v2] The addition of an SBI earlycon driver instead of an arch-specific early printk support
  • RISC-V audit updates:
    • The addition of NR_syscalls into unistd.h, which is necessary for
      CONFIG_FTRACE_SYSCALLS.
    • The definition of CREATE_TRACE_POINTS so __tracepoint_sys_{enter,exit} get defined.
    • A fix for trace_sys_exit() so we can enable HAVE_SYSCALL_TRACEPOINTS

A complete Linux 5.0 changelog with comments only (e.g. no code) can be found here. It has been generated with git log v4.20..v5.0-rc8 --stat. For more details, you could also read the kernel changes on KernelNewbies.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

2
Leave a Reply

avatar
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
bluMMind Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
MMind
Guest
MMind

Gru Scarlet is of course rk3399-based … there was a small typo in the pull request to Linus it seems.

blu
Guest
blu

Gru was the codename of the rk3399 chromeos platform. It seems Rockchip are upstreaming chromeos code, which is good.