ARM processors and Linux have been married for years. You name an ARM-based device—smartphones, Raspberry Pi, tablets—and you’ll find Linux running beside it. It’s not been a happy marriage though. For every ARM system on a chip (SoC) there had to be a different Linux spin. With the forthcoming Linux 3.7 kernel we’re on our way to seeing all ARM processors working with a single Linux kernel.
The problem has always been that while the ARM processor family itself has stayed unified, every vendor’s SoC supports its peripherals in different ways. On x86 PCs we’ve always had the BIOS, and more recently the Unified Extensible Firmware Interface (UEFI) to provide a common application programming interface (API) for the Linux kernel to hook into. With ARM SoCs, you couldn’t even count on something as generic as General Purpose Input/Output (GPIO) using the same APIs and working the same.
Over the years, as new ARM SoCs and end-user devices have flooded the market, this has really ticked off low-level ARM developers. They ended up having to reinvent the wheel with almost every new chip and device to come down the highway. The higher-level Linux developers were even less happy.
On March 18, 2011, Linus Torvalds had had enough. He wrote, “Gaah. Guys, this whole ARM thing is a f**king pain in the ass.”