With Linus Torvalds taking a leave from the Linux kernel project, Greg Kroah-Hartman was the one to release Linux 4.19 last Sunday:
It’s been a long strange journey for this kernel release…
While it was not the largest kernel release every by number of commits, it was larger than the last 3 releases, which is a non-trivial thing to do. After the original -rc1 bumps, things settled down on the code side and it looks like stuff came nicely together to make a solid kernel for everyone to use for a while. And given that this is going to be one of the “Long Term” kernels I end up maintaining for a few years, that’s good news for everyone.
A small trickle of good bugfixes came in this week, showing that waiting an extra week was a wise choice. However odds are that linux-next is just bursting so the next -rc1 merge window is going to be bigger than “normal”, if there is such a thing as “normal” for our rate of development.
And speaking of development, there’s that other thing that happened this release cycle, that ended up making it such that I’m the one writing this instead of Linus. Allow me the guilty pleasure of taking a few minutes to talk about that….
I’ve been giving my “How the kernel is developed” talk all around the world for over a decade now. After the first year or so, I was amazed that it kept needing to be given as surely everyone knew how we did this type of thing, right? But my wife, someone much smarter than I, then told me, “Every year there is a new kindergarten class.”
And we all need to remember that, every year new people enter our community with the goal, or requirement, to get stuff done for their job, their hobby, or just because they want to help contribute to the tool that has taken over the world and enabled everyone to have a solid operating system base on which to build their dreams.
And when they come into our community, they don’t have the built-in knowledge of years of experience that thousands of us already do. Without that experience they make mistakes and fumble and have to learn how this all works. Part of learning how things work is dealing with the interaction between people, and trying to understand the basic social norms and goals that we all share. By providing a document in the kernel source tree that shows that all people, developers and maintainers alike, will be treated with respect and dignity while working together, we help to create a more welcome community to those newcomers, which our very future depends on if we all wish to see this project succeed at its goals.
And that goal we all share is the key here. We _ALL_ want to create the best kernel that we possibly can. We can disagree on lots of different things in other parts of our lives, but we do share this one thing. And we should focus on that shared goal as it has pulled us all together in a way that has enabled us to create something that no other company or group of people has ever been able to accomplish.
We used to joke that our goal was “Total World Domination”, but it really wasn’t a joke. We achieved that goal, Linux really does rule the world. All companies use it, contribute to it, and it has ended up making the world a much better place because of all of us working on it.
In these talks I give, I also say that “the only thing that can stop us is ourselves, it is up to us to mess this up.” And that’s truer now than when I first started saying that a decade ago. There is no other operating system out there that competes against us at this time. It would be nice to have something to compete against, as competition is good, and that drives us to do better, but we can live with this situation for the moment 🙂
These past few months has been a tough one for our community, as it is our community that is fighting from within itself, with prodding from others outside of it. Don’t fall into the cycle of arguing about those “others” in the “Judean People’s Front” when we are the “We’re the People’s Front of Judea!” That is the trap that countless communities have fallen into over the centuries. We all share the same goal, let us never loose sight of that.
So here is my plea to everyone out there. Let’s take a day or two off, rest, relax with friends by sharing a meal, recharge, and then get back to work, to help continue to create a system that the world has never seen the likes of, together.
Personally, I’m going to take my own advice. I’ll be enjoying this week in Edinburgh with many other kernel developers, drinking some good whiskey, and taking some time off of reading email, by spending it with the great friends I have made in this community.
And with that, Linus, I’m handing the kernel tree back to you. You can have the joy of dealing with the merge window 🙂
Linux 4.18 released a little over two months ago brought us Snapdragon 845 SoC support, unprivileged file system mounts with FUSE file systems now becoming mountable by unprivileged users, a new kernel polling interface for asynchronous I/O, and many more changes.
Linux 4.19 notable changes include:
- Preliminary Wi-Fi 6 (802.11ax) support
- New experimental EROFS (Enhanced Read-Only File System) lightweight file system with VLE compression support. The new file systems is to be used in applications requiring high read-only performance such as firmware in phones or Live CDs. See source code.
- More fixes for L1TF “Foreshadow” flaw, and other CPU security bugs like Spectre v2
- The new Block I/O latency controller attempts to guarantee minimum I/O latency targets for cgroups. See documentation and LWN article for more details
Some of Arm architecture changes include:
- Allwinner A10 / A13 / A20 / A23 / A33 / A64 / H3 – SRAM controller / system control
- Allwinner A64 – Display clocks and bus, RTC clock output, PWM, R_I2C
- Allwinner H6 -MMC, PMIC
- Allwinner R40 – HDMI support
- Board Changes
- SPI flash node for Orange Pi PC 2 and Pine64 SoPINE
- Use lid switch as wake-up source for A64 based laptops
- LEDs added for PineH64
- New Devices – Pine Pinebook, Amarula A64-Relic
- Clock driver for Rockchip PX30 SoC
- Add support for Rockchip RK3328 in the syscon GPIO driver.
- Power management fixes for IOMMU on Rockchip platforms, getting closer to kexec working on them, including Chromebooks
- New device – 96Boards RK3399 Ficus board
- Clock driver – Amlogic Meson axg PCIe and audio clocks, Amlogic Meson GEN CLK on gxbb, gxl and axg
- New driver for the Amlogic Meson Audio Memory Arbiter resets
- 64-bit DT updates
- AXG: add ADC support w/buttons, add pins for PDM, SPDIF
- AXG: s400 board: preliminary support for audio
- GX: nanopi-k2: add HDMI, CEC, CVBS support
- New SoCs: S805x S905W
- New boards
- S905W based: Amlogic P281, Oranth Tanix TX3 Mini
- S805X based: P241 board from Amlogic
- Removal of drivers for Exynos5440, a Samsung SoC that never saw widespread use
- Pinctrl driver
- Add handling of external wakeup interrupts mask inside the pin controller driver.
- Bring necessary suspend/resume callbacks for Exynos542x and
- Document hidden requirement about one external wakeup interrupts
- Minor documentation cleanups
- Arm DTS changes:
- Add two new S5Pv210 boards: Samsung Galaxy S and Samsung Galaxy S 4G mobile phones. Both are from family codenamed Aries.
- Add missing secondary CPU properties.
- Cleanup from old files and properties.
- Add missing interrupts to PWM nodes on Exynos5.
- Add missing interrupt pin pull up/down configuration on Exynos4412 Midas boards. The interrupts were mostly working thanks to initial configuration by bootloader.
- Arm64 DTS changes – Cleanup from old properties and code-style warnings.
- Deconfig changes – Enable options needed for booting full system on S5Pv210-based Samsung Galaxy S mobile phones.
- Qualcomm AOSS (Always-on subsystem) reset controller drivers
- Clock drivers – Qualcomm SDM845 display clock controller, Qualcomm RPMh clk driver
- Add Qualcomm PM8xxx reboot driver
- Audio – Support for Qualcomm QDSP6 and WCD9335 ASoCs
- Pinctrl driver – Qualcomm PM8998 and PM8005 are supported in the SPMI pin control and GPIO driver
- Bluetooth – Added support for Qualcomm wcn3990 controller
- ARM64 Updates
- Add support for PM8005/PM8998 and related nodes
- Add/fix nodes on SDM845 for I2c, SPI, UART, and RPMH
- Fix BT LED trigger on DB410c
- Drop legacy clock names on MSM8916
- Add gpio line names on DB820c
- Add thermal nodes for MSM8996 and SDM845
- Arm and ARM64 defconfig update – Enable Qualcomm NAND config
- Device tree changes
- Add missing OPPs on IPQ4019
- Fix sdhci l20 load on Hammerhead
- Use proper IRQ macros for IPQ8064 interrupts
- ARM64 Device tree changes
- Mediatek MT7622 – add EINT support, add gpio-ranges property to pinctrl, add earlycon to rfb1 to find boot errros more easily, fix uart clock, add iommu and smi bindings
- Mediatek MT6797 – Add support for the 96 board x20 development board
- Fix cooling-cells of mt7622 and mt8173
- Mediatek MT7621 support for Linux-GPIO
- DRM – Fixes to RDMA and Overlay engines
- Mediatek pwrap (pmic) support for MT6797 SoC
- New timer driver for Mediatek SoCs
- mt76x0 driver adds support for Mediatek MT7610U based
USB Wi-Fi dongles.
- USB – Enable battery charging in Mediatek T-PHY
- ARM64 Device tree changes
- Other new ARM hardware platforms and SoCs:
- Atmel – Several Atmel at91-based boards from Laird
- Broadcom – Raspberry Pi Compute Module (CM1) and IO board
- Marvell – Marvell Armada388-based Helios4 board from SolidRun
- NXP – i.MX6SSL SoC
- Renesas – RZ/N1D SoC (R9A06G032) dual Cortex-A7 with Ethernet, CAN
and PLC interfaces
- Texas Instruments – TI AM654 SoC quad Cortex-A53, safety subsystem with Cortex-R5 controllers, communication and PRU subsystem and lots of other interfaces (PCIe, USB3, etc).
Here’s an overview of the main MIPS changes for Linux 4.19:
- Massive DMA ops refactoring from Christoph Hellwig (huzzah for
deleting crufty code!).
- NT_MIPS_DSP & NT_MIPS_FP_MODE ELF notes & corresponding regsets to expose DSP ASE & floating point mode state respectively, both for live debugging & core dumps.
- Optimize code by hard-coding cpu_has_* macros at compile time where their values are known due to the ISA revision that the kernel build is targeting.
- The EJTAG exception handler now better handles SMP systems, where it was previously possible for CPUs to clobber a register value saved by another CPU.
- Implementation of memset() gained a couple of fixes for MIPSr6 systems to return correct values in some cases where stores fault.
- ioremap_wc() is now implemented using the uncached-accelerated cache coherency attribute where supported, which is detected during boot, and fall back to plain uncached access where necessary. The MIPS-specific (and unused in tree) ioremap_uncached_accelerated() & ioremap_cacheable_cow() are removed.
- The prctl(PR_SET_FP_MODE, …) syscall is better supported for SMP systems by reworking the way we ensure remote CPUs that may be running threads within the affected process switch mode.
- Systems using the MIPS Coherence Manager will now set the MIPS_IC_SNOOPS_REMOTE flag to avoid some unnecessary cache maintenance overhead when flushing the icache.