Linux 4.9 Release – Main Changes, ARM and MIPS Architectures

December 12th, 2016 Leave a comment Go to comments

inus Torvalds released Linux 4.9 on Sunday:

So Linux 4.9 is out, and the merge window for 4.10 is thus open.

With the extra week for 4.9, the timing for the merge window is obviously a bit awkward, and it technically closes in two weeks on Christmas Day. But that is a pure technicality, because I will certainly stop pulling on the 23rd at the latest, and if I get roped into Xmas food prep, even that date might be questionable.

I could extend the merge window rather than cut it short, but I’m not going to. I suspect we all want a nice calm winter break, so if your stuff isn’t ready to be merged early, the solution is to just not merge it yet at all, and wait for 4.11. Just so you all know (I already bcc’d the main merge window suspects in a separate mailing last week, I’m just repeating myself here to avoid anybody being confused about timing).

Anyway, back to 4.9 itself.

I’m pretty sure this is the biggest release we’ve ever had, at least in number of commits. If you look at the number of lines changed, we’ve had bigger releases in the past, but they have tended to be due to specific issues (v4.2 got a lot of lines from the AMD GPU register definition files, for example, and we’ve had big re-organizations that caused a lot of lines in the past: v3.2 was big due to staging, v3.7 had the automated uapi header file disintegration, etc). In contrast, 4.9 is just big.

Admittedly a chunk of that is the new greybus staging support, but that really isn’t the bulk of it – it’s just another small detail in the overall “yes, v4.9 is big” picture.

Other than just the size, 4.9 looks fairly normal. A bit over two thirds drivers (staging, GPU and networking are the bulk of it, but it’s all over), with the rest looking fairly normal too: arch updates, documentation, generic networking, filesystems..

The shortlog (16k+ commits, with another 1100 merge commits to round things out) is obviously much too big to put here, and wouldn’t be legible anyway. So as is my wont, I’m appending just the log of my merges.

Linux 4.8 brought us an HDMI-CEC framework, a new kernel documentation system is now based on Sphinx, a user-space GPIO subsystem and tools, file systems improvements and more.

 

linux-4-9-changelogSome of the notable changes for Linux 4.9 include:

  • Greybus staging support. While Project Ara has been canceled, the code is still used in one Motorola phone, a Toshiba chip requires it, as well as other undisclosed users.
  • File systems improvements for CIFS (bug fixes, idsfromsid mount option, better reconnection handling), BTRFS (bug fixes), NFS (bug fixes and new features such as server-side copy), F2FS (bug fixed and performance improvements), EXT-4 (“Lots of bug fixes and cleanups”) , and XFS (iomap-based DAX infrastructure and XFS delalloc rework + bug fixes)
  • Improved security with virtually mapped kernel stacks, and memory protection keys
  • AMDGPU now supports older Radeon graphics cards, virtual display support, and improved reset.

Some interesting ARM architecture fixes and new features:

  • Allwinner:
    • Allwinner GR8 – Preliminary SoC support
    • Allwinner AXP209 PMIC – GPIO support
    • Allwinner A31 – SPDIF support
    • Allwinner A23/A33 and A31/A31s – sunxi-ng CCU driver
    • Allwinner A33 – Display Driver
    • Allwinner A64 – USB PHY support
    • Allwinner H3 – PWM support, I2C support
    • AXP806 PMIC – regulator support
    • AC100 RTC / codec IC – mfd driver, RTC driver
    • New boards and devices – Orange Pi PC Plus, Olimex A33-OLinuXino, Orange Pi Lite, Inet q972, Empire Electronix M712, Orange Pi Plus 2, Orange Pi Plus 2E, NanoPi NEO.
  • Rockchip:
    • PCI – Update Rockchip rk3399 host bridge driver DTS and resets
    • Rockchip RK808 PMIC driver
    • Rockchip DDR clks and rk3399 driver tweaks
    • phy driver for Rockchip usb2phy, internal PCIe PHY, and USB Type-C PHY on rk3399
    • update compatible strings for Rockchip efuse (RK3399)
    • Support for Tronsmart Orion R86 set-top-box (RK3368), Rockchip RK3288 Fennec reference board, Firefly RK3288 Reload platform
  • Amlogic
    • Network, clocks, and usb driver changes for meson-gxbb (S905)
    • Secure monitor firmware for Amlogic SoCs, and an NVMEM driver for the EFUSE based on that firmware interface
    • Amlogic 64-bit DT changes: added  USB host, I2C, SPI flash controller, PWM, mailbox, MHU, pinctrl: add pins for SPI, I2C, SDIO
    • Updates IR support for newer SoCs
    • net: new stmmac glue driver
  • Samsung
    • Added Samsung Exynos Low Power Audio driver (LPASS = Low Power Audio SubSystem)
    • samsung clk driver update: sound subsystem related clocks, addition of DRAM controller related clocks for exynos5420
    • Device Tree Update:
      • Enable HDMI on Arndale Octa board.
      • Update list of clocks for FIMC-IS block on Exynos4x12.
      • Remove skeleton.dtsi to fix DT compiler warning.
      • Cleanup of DT files
      • Allow compile testing of exynos-mct clocksource driver on ARM64.
      • Document Exynos5433 PMU compatible
      • Set chosen serial bitrate which allows proper serial output when bootloader does pass all the data in command line
  • Qualcomm
    • ASoC bug fix for simultaneous playback and capture
    • Added Qualcomm external bus interface 2 (EBI2), used in some mobile phone chips for connecting flash memory, LCD displays or other peripherals
    • Add a skeletal TSENS drivers for  MSM8916/MSM8996. TSENS is Qualcomms’ thermal temperature sensor device
    • Add MSM8916/APQ8016 display support
    • Updates for MSM8916 including TSCR, SMSM/SMP2P, and MBA reserve
    • Enable defconfig options for QDF2432
    • Added Qualcomm DragonBoard 820c single-board computer in 96boards form factor, LG Nexus 5 Phone
    • Device Tree Changes:
      • Rework dr_mode on APQ8064 and Nexus7
      • Add MSM8974 BLSP1 UART1 port
      • Add AP148 SATA mapping
      • Fixup MSM8660/MSM8064 SPMI/MPP IRQs
      • Add Nexus7 IMEM/reboot reason
      • Add Honami touchscreen support
      • Add TSENS support on MSM8974, APQ8064, and APQ8084
      • Add APQ8060 Dragonboard PM8058 LEDs
      • Rework VPH PWR REG for MSM8974
  • Mediatek
    • Add Mediatek thermal driver for mt2701
    • Driver for mt6577 auxdac found in mt2701, mt6577 and mt8173
    • Some DRM driver fixes
  • Other new ARM hardware or SoCs:
    • Marvell Armada 8040 development board, Netgear WNR854T router, Armada 395 SoC platform, GP board Armada 390 DB development board
    • ZTE ZX296718 STB SoC
    • SocioNext UniPhier LD11 TV SoC
    • Broadcom BCM958525er, BCM958522er, BCM988312hr, BCM958623hr and BCM958622hr reference boards for Northstar platform, Raspberry Pi Zero board
    • NXP i.MX 7 Warp7 reference board, Gateworks Ventana GW553x SBC, Technologic Systems TS-4900, and Engicam IMX6UL GEA M6UL computer-on-module, Inverse Path USB armory board
    • Renesas r8a7792/wheat and r7s72100/rskrza1 development boards
    • ST Microelectronics STi B2260 (96boards) single-board computer
    • TI Davinci OMAP-L138 LCDK Development kit, beagleboard-x15 rev B1 single-board computer

There has been a fair amount of MIPS changes in Linux 4.9 too, some of them are:

  • Various updated to MIPS core arch code –  generic DT-based board & Flattened Image Trees (.itb) support, per-device DMA coherence support, bug fixes for KVM, uprobes, c-r4k, ptrace and more
  • Octeon – Delete dead code and files, change to use all memory into use by default, add DTS for D-Link DSR-500N, etc…
  • Pistachio – Remove ANDROID_TIMED_OUTPUT from defconfig
  • TX39xx & TX49xx – Move GPIO setup from .mem_setup() to .arch_init(), convert to Common Clock Framework
  • txx9wdt – Add missing clock (un)prepare calls for CCF
  • BMIPS – Add PW, GPIO SDHCI and NAND device node names, add DT examples for BCM63268, BCM3368 and BCM6362, add support for BCM3368 and BCM6362, etc…
  • Code changes for PCI, CPC, GIC, SMP, USB host, cpuidle, fbdev, auxdisplay…
  • mt7620 -Delete unnecessary assignment for the field “owner” from PCI
  • BCM63xx -Let clk_disable() return immediately if clk is NULL
  • pm-cps – Change FSB workaround to CPU blacklist, Use MIPS standard lightweight ordering barrier and completion barrier, etc…
  • SEAD3 – Rewrite to use DT and generic kernel feature
  • Malta – Rewrite to use DT
  • Loongson1C – Add CPU support for Loongson1C, add board support, add defconfig, and add RTC support for Loongson1C board

The full list of changes can be found in Linux 4.9 changelog with comments only, generated using git log v4.8..v4.9 --stat. You’ll also find a more readable list of changes for Linux 4.9 once kernelnewbies.org is updated.

  1. December 12th, 2016 at 21:49 | #1

    I think the new GPIO tools would need an article on their own.

  2. PoV
    December 13th, 2016 at 10:42 | #2

    I was about to ask what that meant for Armbian, but I just found out there’s a new section on the site for nightly releases, and some of the boards (Orange Pi PC) have 4.9 builds of Ubuntu.

  1. No trackbacks yet.