Linus Torvalds has just announced the release of Linux 5.3:
So we’ve had a fairly quiet last week, but I think it was good that we ended up having that extra week and the final rc8.
Even if the reason for that extra week was my travel schedule rather than any pending issues, we ended up having a few good fixes come in, including some for some bad btrfs behavior. Yeah, there’s some unnecessary noise in there too (like the speling fixes), but we also had several last-minute reverts for things that caused issues.
One _particularly_ last-minute revert is the top-most commit (ignoring the version change itself) done just before the release, and while it’s very annoying, it’s perhaps also instructive.
What’s instructive about it is that I reverted a commit that wasn’t actually buggy. In fact, it was doing exactly what it set out to do, and did it very well. In fact it did it _so_ well that the much improved IO patterns it caused then ended up revealing a user-visible regression due to a real bug in a completely unrelated area.
The actual details of that regression are not the reason I point that revert out as instructive, though. It’s more that it’s an instructive example of what counts as a regression, and what the whole “no regressions” kernel rule means. The reverted commit didn’t change any API’s, and it didn’t introduce any new bugs. But it ended up exposing another problem, and as such caused a kernel upgrade to fail for a user. So it got reverted.
The point here being that we revert based on user-reported _behavior_, not based on some “it changes the ABI” or “it caused a bug” concept. The problem was really pre-existing, and it just didn’t happen to trigger before. The better IO patterns introduced by the change just happened to expose an old bug, and people had grown to depend on the previously benign behavior of that old issue.
And never fear, we’ll re-introduce the fix that improved on the IO patterns once we’ve decided just how to handle the fact that we had a bad interaction with an interface that people had then just happened to rely on incidental behavior for before. It’s just that we’ll have to hash through how to do that (there are no less than three different patches by three different developers being discussed, and there might be more coming…). In the meantime, I reverted the thing that exposed the problem to users for this release, even if I hope it will be re-introduced (perhaps even backported as a stable patch) once we have consensus about the issue it exposed.
Take-away from the whole thing: it’s not about whether you change the kernel-userspace ABI, or fix a bug, or about whether the old code “should never have worked in the first place”. It’s about whether something breaks existing users’ workflow.
Anyway, that was my little aside on the whole regression thing. Since it’s that “first rule of kernel programming”, I felt it is perhaps worth just bringing it up every once in a while.
Other than that aside, I don’t find a lot to really talk about last week. Drivers, networking (and network drivers), arch updates, selftests. And a few random fixes in various other corners. The appended shortlog is not overly long, and gives a flavor for the changes.
And this obviously means that the merge window for 5.4 is open, and I’ll start doing pull requests for that tomorrow. I already have a number of them in my inbox, and I appreciate all the people who got that over and done with early,
Linus
Linux 5.2 added sound open firmware for audio DSPs, a new mount API for more complex scenarios, performance improvement for BFQ I/O scheduler, Lima and Panfrost open-source drivers for some Arm GPUs, and more.
Some notable changes in Linux 5.3 include:
- Support for AMD Navi GPUs – AMD RX5700 GPUs added in amdgpu drivers with support for the core driver, displays (DCN2), GFX and compute (GFX10), System DMA (SDMA 5), Multimedia decode and encode (VCN2) and Power management.
- Support for Zhaoxin x86 CPUs – The architecture of the ZX family of processors is a continuation of VIA’s Centaur Technology x86-64 Isaiah design.
- Intel Speed Select support – Power management technology that lets users configure their servers for throughput and per-core performance settings, allowing the prioritization of performance for certain workloads running on specific cores by sacrificing the performance of other cores. Works on some Xeon processors only
- 16 million new IPv4 addresses – The 0.0.0.0/8 IPv4 range will be accepted by Linux (despite not being declared as such in standards) as a valid address range, allowing for 16 million new IPv4 addresses. See IPv4 cleanup project for more details.
- IoT ACRN supervisor added – The ACRN hypervisor is a flexible, lightweight reference hypervisor, built with real-time and safety-criticality in mind, optimized for resource-constrained embedded systems.
Changes specific to Arm architecture:
- Allwinner
- A64 – LRADC and RGB LCD
- A83T – CSI camera interface
- H6 DMA & watchdog
- multiple SoCs – Cedrus h264
- Rockchip
- mfd – Add support for RK809 and RK817 to Rockchip RK808
- Clock driver – Various cleanups and improvements
- Added RK3399Pro dtsi file
- New boards and devices – Hugsun X99 TV Box (Rockchip RK3399), Khadas Edge/Edge-V/Captain (Rockchip RK3399)
- Amlogic
- Added Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53)
- Clock driver – Added meson8 audio clocks, g12a temp. sensor clocks and g12a & g12b CPU clocks
- Linux-media – Staging driver for Meson video decoder (MPEG1 and MPEG2 for now)
- Armv8 Device tree
- add/use ethernet PHY interrupt/reset lines
- G12A: add/enable audio, PWM, IR, i2c, SD/eMMC, WiFi, Bluetooth, network
- gxbb-vega-s95 board: fix WiFi/BT, enable more peripherals
- 32-bit Arm device tree:
- SPDX updates
- switch to generic Ethernet PHY reset bindings
- add the canvas module
- mxiii-plus board: add regulators
- New boards – Hardkernel ODROID-N2 (Amlogic G12B)
- Samsung
- Clock driver
- Addition of clocks required for new Exynos5422 Dynamic Memory
Controller driver - clock definition for Exynos4412 Mali
- minor clean up of clk-exynos5433.c
- Addition of clocks required for new Exynos5422 Dynamic Memory
- Device tree ARM64
- Add Mali nodes to Exynos5433 and Exynos7
- Device tree
- Enable ADC on Exynos5410 Odroid XU board
- Fix imprecise abort on Exynos4210 caused by newly added Mali nodes,
- Reorganize Mali nodes under /soc,
- Adjust buck regulators voltages on Arndale Octa and Odroid XU3/XU4
family to sane values
- Clock driver
- Qualcomm
- Pinctrl – Subdriver for SDM845 and SM8150
- PHY – Add a new PHY driver for Qualcomm PCIe2 PHY
- ARM64 Updates for v5.3
- Switch to use second-gen PON on PM8998
- Add PSCI cupidle states for MSM8996, MSM8998,and SDM845
- Add MSM8996 UFS phy reset controller
- Add propre cpu capacity scaling on MSM8996
- Fixups for APR domain, legacy clocks, and PSCI entry latency on MSM8996
- Enable SMMUs on MSM8996
- Add Q6V5, GPU, GMU, and AOSS QMP node on SDM845
- Fixup CPU topology on SDM845
- Change USB1 to be peripheral on SDM845 MTP
- Add PCIe Phy, RC nodes, ANOC1 SMMU, and RPMPD node on MSM8998
- Update coresight bindings for MSM8916
- Update idle state names and entry-method on MSM8916
- Add PCIe, RPMPD, LPASS, Q6, TCSR, TuringCC, PSCI cpuidle states,
and CDSP on QCS404 - Add reset-cells property to QCS404 GCC node
- Fixup s3 max voltage, l3 min voltage, drive strength typo, and
s3 supply definition on QCS404-evb - Fixup ADC outputs and VADC calibration on PMS40
- Various driver updates:
- Add ACPI support to Qualcomm GENI SE
- Update Qualcomm Maintainers entry to remove David Brown as maintainer and fixup typos and incorrect DT file entry
- Fixup APR domain id usage and making callbacks in non-atomic context
- Add AOSS QMP driver ( Always-on Subsystem messaging driver) and bindings
- Add power domains for MSM8998 and QCS404 in QCOM RPMPD
- Add corner macros, max state support, and fixups for setting performance state for Qcom RPMPD
- Device tree changes
- Add display support to MSM8974
- Add display, backlight, and touchscreen support to MSM8974 Hammerhead
- Update coresight bindings for MSM8974 and APQ8064Add vibrator motor for MSM8974 based Fairphone 2
- Defconfig – Add support for USB networking & display related options
- New boards and devices – Google Cheza Chromebook (Qualcomm SDM845), Qualcomm Dragonboard 845c (Qualcomm SDM845)
- MediaTek
- Added Mediatek MT8183 (4x Cortex-A73 + 4x Cortex-A53)
- Fix memory leak in DRM driver
- Other new Arm hardware platforms and SoCs:
- Aspeed – BMC support for a number of new server platforms
- NXP – Kontron SMARC SoM (several i.MX6 versions), Novtech’s Meerkat96 (i.MX7), Purism Librem5 devkit (i.MX8MQ)
- STMicro – Avenger96 board (STM32MP1 Cortex-A7/M4)
- Texas Instruments – TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA)
Summary of MIPS changes for Linux 5.3:
- Removal of readq & writeq for MIPS32 kernels where they would
simply BUG() anyway, allowing drivers or other code that #ifdefs on
their presence to work properly. - Improvements for Ingenic JZ4740 systems, including support for the
external memory controller & pinmuxing fixes for qi_lb60/NanoNote
systems. - Improvements for Lantiq systems, in particular around SMP & IPIs.
- DT updates for Ralink/MediaTek MT7628a systems to probe & configure
a bunch more devices. - Miscellaneous cleanups & build fixes
Finally, let’s have a look at some of Linux 5.3’s RISC-V updates:
- Hugepage support
- “Image” header support for RISC-V kernel binaries, compatible with
the current ARM64 “Image” header - Initial page table setup now split into two stages
- CONFIG_SOC support (starting with SiFive SoCs)
- Avoid reserving memory between RAM start and the kernel in
setup_bootmem() - Enable high-res timers and dynamic tick in the RV64 defconfig
- Remove long-deprecated gate area stubs
- MAINTAINERS updates to switch to the newly-created shared RISC-V git
tree, and to fix a get_maintainers.pl issue for patches involving
SiFive E-mail addresses - Add support for the new clone3 syscall for RV64, relying on the
generic support - Add DT data for the gigabit Ethernet controller on the SiFive FU540 and the HiFive Unleashed board
- Update MAINTAINERS to add Paul Walmsley to the arch/riscv maintainers’ list
- Add support for PCIe message-signaled interrupts by reusing the generic header file
For a full list of changes, you could check out the complete Linux 5.3 changelog with comments generated using git log v5.2..v5.3-rc8 --stat
command. You may also want to visit Kernelnewbies website for another take on the changelog.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Great report. I worked on the Qualcomm MSM8974 a bit ago. Cool seeing changes for it mainlined.
TL;DR;
– ARM churning hard to support another hundred versions of the same thing slightly different built
– MIPS trying hard to appear more active than M68K/SH/H8 and friends
– RISCV playing catch up hard.
ACRN Hypervisor sounds interesting. Does this mean that the hypervisor became a part of kernel, or something like drivers for the hypervisor are added?
If you also have some baytrail hardware lying around collecting dust, there’s also another patch series to fix the infamous bug* in 5.3: https://cgit.freedesktop.org/drm-intel/commit/?id=a75d035fedbdecf83f86767aa2e4d05c8c4ffd95
Also be sure to consider the TXT update* and Intel’s microcode package ( non-free contrib in debian last I checked). While I haven’t checked the errata, Intel doesn’t release those unless there’s a major security or stability issues that need addressing. Especially for old embedded hardware.
*Risky and should probably be applied to the firmware from windows: https://www.win-raid.com/t624f39-Intel-Trusted-Execution-Engine-Drivers-Firmware-amp-System-Tools.html
@RK, do you know if that patch for drm-intel could be related to the same hangs that affect cherrytrail Atoms (that needs the workaround of “intel_idle.max_cstate=1” at GRUB )?