Collaborative effort to upstream ACPI

As part of the 4.1 merge window, Will Deacon asked Linus [0] to pull in the ACPI core patchset — the initial set of patches that enable ACPI for use on ARMv8. About a day later [1] Linus merged those patches and then released them into 4.1-rc1 [2] a couple of days after that.

Of course, the patches still have to go through further testing during the RC cycle, and some of us kind of wonder what Linus meant when he said “…even if initial support for ACPI on arm64 looks funny” :-) so there’s still a lot of work to do.  In fact, now we get into the hard part — making sure everything still works as it should when faced with the incredible variety of use cases that Linux normally handles.  Assuming we get through the RC cycle unscathed — and we’ll be watching closely to make sure that happens — we’ll see ACPI support for ARMv8 show up in the official 4.1 release.

It has taken a long time to get here, and a lot of effort from many, many people.  It has also demonstrated something many of us forget from time to time — open source is not just about the technology, where we tend to focus much of our effort.  What is just as important, if not more so, is the social engineering involved.  Getting these patches this far has been the result of:

  • Collaboration at the ASWG (ACPI Spec Working Group) of the UEFI Forum to get the ACPI specification to handle ARMv8 properly [3]
  • Collaboration amongst engineers working for Linaro, ARM, Red Hat, Huawei, Qualcomm, AMD, and other Linaro LEG members, just to get the kernel code working
  • Collaboration with vendors like AMD, APM, and HP to make sure the hardware did what it needed to do
  • Collaboration via the Tested-By and Reviewed-By acknowledgements from a broad range of organizations that helped build confidence in the patches
  • And of course, collaboration with the Linux kernel maintainers who made sure we did things right.

Even with all of that, it wasn’t quite enough.  Grant Likely and Al Stone organized a firmware summit [4] that was held on 26 March and hosted by ARM. The summit was instrumental in understanding and clarifying the dynamics, responsibilities and relationship between SoC vendors, BIOS vendors, firmware and kernel developers, ODMs and OEMs.  Not a line of code was written as a result of this summit, but there was a start to improving the quality and frequency of the communications between firmware developers and OS providers, essential to our long term health with ACPI on ARMv8.

All told, dozens of people and companies have been involved.  We can’t thank all of them enough for their help and their insights.  They have been invaluable.  It has been an amazing experience having LEG, OCTO, ARM, and all the Linaro member companies work together so closely.  And, essential to it all have been the upstream Linux maintainers, many who are not directly involved in ARM, if not actually working primarily on other architectures, but have nevertheless always provided constructive feedback and encouraged us to take the best long term path for Linux.

To borrow a phrase from Catalin, “Now we get to the hard part.”  We’ve got the core patches in for now; next we need to make sure they stay stable and reliable, and that we build on them to provide full ACPI functionality for specific ARMv8 platforms. That sounds more like “now we get to the _fun_ part…”




[3] A forum that did not exist and had to be created in order for the collaboration to even occur, by the way.


Recommended Posts