ACPI for ARM?
Arguments for and against ACPI
There have been rumblings for a few years that ACPI would start to appear in ARM-based systems, and in server systems in particular. Recently, some code to support such systems has started to make the rounds; Olof Johansson, a co-maintainer of the arm-soc tree, looked at this code and didn't like what he saw:
In this message and several followups Olof clarified what he was trying to get across. The ARM world already has a mechanism to describe the hardware — device trees — that is only now coming into focus. Adding device tree support has required making changes to a large amount of platform and driver code; supporting ACPI threatens to bring just as much work and add a second code path for system configuration that will need to be maintained forever. Even worse is the fact that there are no established standards for ACPI in the ARM setting; nobody really knows how things are supposed to work, and what is coming out in the early stages is not encouraging. Bringing in ARM ACPI support now would be committing the kernel community to supporting a moving target indefinitely.
Olof went on to suggest that it might be best to wait for others to figure out how ACPI on ARM is supposed to work:
He added that, until there are ACPI systems shipping with Windows and working well, the Linux community should stay far away from ACPI on ARM. If ACPI-based systems actually hit the market, he said, they can be supported with a pre-boot layer that translates the system's ACPI tables into the device tree format.
Disagreement with this position came in a couple of forms. Several people point out that standards developed by Microsoft may not suit the Linux community as well as we might like. As Mark Rutland (a device tree bindings maintainer) put it:
Russell King added another point echoed by many: refusing to support ACPI could cost the community its chance to influence (or even control) how the standard evolves. In his words:
Shutting the door on ACPI, Russell asserted, would be a move that the community would regret in the long term.
Jon Masters joined the conversation to make
the claim that
ARM-based servers were committed to the ACPI path, saying "all of the
big boys are going to be using ACPI whether it's liked much or
not
". He said that the server space requires a mechanism that has
been standardized and set in stone, and that, in his opinion, the device
tree abstraction is far too unstable to be usable (a claim that Grant Likely strongly disagreed with). Red Hat, Jon said, is fully behind ACPI on ARM servers for
all of the products that it has absolutely not said it will ever offer.
Jon's wording, along with his suggestion that everything has already been
decided in NDA-protected conference rooms, won him few friends in this
discussion, but his point
remains: there will be systems using ACPI on the market, and Linux has to
deal with them somehow.
What to do
But that still doesn't answer the question of how to deal with them. Arnd Bergmann suggested that ACPI might not be a long-term issue for the ARM community:
Most people, though, seemed to think that ACPI could be here to stay, so the community will have to figure out some way of dealing with it.
One possibility might be Olof's idea of translating the ACPI tables into a device tree, but that approach was somewhat unpopular. It looks to many like a partial answer to the problem that would run into no end of problems; there is also the matter of running the ACPI Machine Language (AML) code found in the ACPI firmware. AML can be necessary for hardware initialization and power management tasks, but it has no analog in the device tree world. Generally, there was a sentiment that, if ACPI is to be supported on ARM systems, it should be supported properly and not behind some sort of translation layer.
In the short term, some sort of translation to device trees — either at
boot-time or done by hand — seems likely to
be the outcome, though. Putting code into the kernel to support any
ACPI-based systems that might appear in the near future just seems to many
like a way to take on a long-term support burden for short-lived systems.
What might start to tip the balance could be systems which, as Arnd described them, are "
Longer-term, the community is likely to watch and wait. Efforts will be
made to direct the evolution of ACPI for ARM systems; Linaro, in
particular, has developers engaged with that process now. And even Olof is
open to bringing in ACPI support at some
point in the future, once its supporters "
Microsoft, through its dominance of the market for software on PC-class
systems, was able to push hardware standards in directions it liked. In
the ARM world, Linux dominates just as strongly, so it seems a bit
surprising to be playing catch-up with shifts in the ARM platform in this
way. Part of the problem, of course, is that there is no single Linux
voice at the standards table; companies like Linaro and Red Hat are working
on the problem, but they do not represent, or seemingly even talk to, the
rest of the community on this topic. The fact that much of this work is
done under
non-disclosure agreements does not help; NDAs do not fit well with how
community development is done.
In the end, it will certainly work out; it is hard to imagine any
significant class of ARM-based hardware being successful without solid
Linux support. It's mostly a matter of how much short- and long-term pain
will have to be endured to make that support happen. For all the early
complaining, ACPI has mostly worked out in the x86 world; it may well find
a useful role in the ARM market as well.PCs with their x86 CPU
removed and an ARM chip put in there
"; adding ACPI support for those
would be "harmless enough
", he said. But Arnd seems to be
strongly against adding ACPI support for complicated ARM-style systems.
seem to have their act
together, have worked out their kinks and reached a usable stable
platform
". But that, he says, could be a couple of years from now.
Index entries for this article Kernel ACPI Kernel Architectures/Arm
Posted Nov 22, 2013 0:56 UTC (Fri)
by ncm (guest, #165)
[Link] (16 responses)
Posted Nov 22, 2013 1:46 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link] (15 responses)
The problems facing ACPI on ARM are a pretty separate issue. ACPI assumes a well-defined underlying platform, and there simply isn't one for ARM. That's not a problem that's being imposed externally, it's a problem that the Linux community needs to figure out.
Posted Nov 22, 2013 3:09 UTC (Fri)
by iabervon (subscriber, #722)
[Link] (4 responses)
Posted Nov 25, 2013 0:25 UTC (Mon)
by plugwash (subscriber, #29694)
[Link] (3 responses)
However even if storage and networking are on enumeratable busses (which they often isn't in the arm world) a platform still has to define stuff like where to find the enumeration registers to enumerate the enumeratable buses, where to find the timers needed to schedule non-hardware triggered events and so-on.
Posted Dec 2, 2013 11:32 UTC (Mon)
by cesarb (subscriber, #6266)
[Link] (2 responses)
Posted Dec 2, 2013 13:21 UTC (Mon)
by broonie (subscriber, #7078)
[Link]
Posted Dec 2, 2013 23:26 UTC (Mon)
by plugwash (subscriber, #29694)
[Link]
PCs create "fake" PCI busses for storage and network controllers that are really integrated into the chipset. I guess in theory there is no reason an arm based platform couldn't do the same but i'm not aware of any that do.
Posted Nov 22, 2013 4:36 UTC (Fri)
by ncm (guest, #165)
[Link] (7 responses)
Posted Nov 22, 2013 4:42 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link] (6 responses)
The ARM case is somewhat different. Some vendors apparently want to use ACPI, but they won't tell us why (I heard nothing even when I was maintaining most of the RHEL ACPI code at Red Hat). There's an apparent disconnect between what vendors expect Linux to offer and what people are actually working on implementing. You're right that the end result might well be painful, but it's going to be painful for entirely different reasons.
Posted Nov 22, 2013 9:13 UTC (Fri)
by cesarb (subscriber, #6266)
[Link]
I'd thus also guess that the vendors pushing ACPI would be the same ones which already have x86 servers. The vendors with only ARM products would instead prefer DT.
Posted Nov 22, 2013 14:04 UTC (Fri)
by jdulaney (subscriber, #83672)
[Link] (4 responses)
Posted Nov 22, 2013 15:57 UTC (Fri)
by olof (subscriber, #11729)
[Link] (2 responses)
We can't drop everything and spend significant efforts trying to figure out ACPI instead of making the first rounds of systems work well with the means we have at hand -- that's not going to help anybody besides the people betting against Linux on ARM servers.
If some people want to keep ACPI a possible alternative while we continue working on the platforms, that's perfectly fine, but we shouldn't let it become a distraction for everybody.
Posted Nov 22, 2013 16:07 UTC (Fri)
by olof (subscriber, #11729)
[Link]
Posted Nov 25, 2013 2:00 UTC (Mon)
by marcH (subscriber, #57642)
[Link]
Unfortunately life is too short, which is why there is LWN.
Posted Nov 22, 2013 17:21 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link]
Posted Nov 29, 2013 9:44 UTC (Fri)
by mirabilos (subscriber, #84359)
[Link] (1 responses)
I like the DT idea and preboot layer. This, if the Linaro guys could be convinced to agree (as opposed to hacking ACPI into their own trees locally), could be enough force to stop this nonsense before it starts. (Not to even start about EFI. It’s an Itanic thing best be kept dead. OpenBOOT (from sparc) is much nicer, anyway.)
Posted Nov 29, 2013 16:21 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link]
Yes. Have you?
"Do you really believe everyone will implement it correctly?"
No, of course not. Nor do I believe everyone will implement DT correctly. The ARM world has hardly been a shining sea of well-implemented firmware in the past, and I don't think ACPI is going to miraculously fix that.
Posted Nov 22, 2013 16:17 UTC (Fri)
by pwsan (subscriber, #56604)
[Link] (5 responses)
> In the end, it will certainly work out; it is hard to imagine any significant class of ARM-based hardware being successful without solid Linux support.
This is just wrong.
From a open-source software hobbyist or hardware hobbyist point-of-view, there are strong and vibrant free-software development communities around the various ARM development boards in existence (e.g. BeagleBoards, etc.) The ARM folks are lucky to have a few commercial distributions that are pushing hard for more openness, rather than less. And from a commercial point of view, ARM-based, Linux-based hardware has clearly been quite successful given the number of Android devices in use.
The notion that "now the professionals from some industry associations from the PC world are coming in to make it all work" is patronizing, ignorant, and counter to the spirit of open source and free software. What it will mean, if such an endeavor is successful, is that large amounts of the platform code used to run these devices will become hidden, closed-source blobs, managed through magic firmware interfaces.
Readers may not realize it, but this is the current state of the x86 world today. Most x86 Linux users probably don't realize how little control they have over their hardware.
Posted Nov 22, 2013 16:27 UTC (Fri)
by corbet (editor, #1)
[Link] (4 responses)
Posted Nov 22, 2013 17:31 UTC (Fri)
by pwsan (subscriber, #56604)
[Link] (2 responses)
So it's difficult to conclude that the desire for solid Linux support is what's motivating the effort to mandate ACPI/UEFI. This isn't just a matter of concern for hobbyists; it's also problematic for vendors or distributions that aren't part of the club, who have no influence over the "big boys" and must play by their rules.
Posted Nov 22, 2013 18:09 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link] (1 responses)
Posted Nov 22, 2013 18:21 UTC (Fri)
by olof (subscriber, #11729)
[Link]
What I'm less sure about is the use of UEFI on embedded platforms, but that's a tangent to all this discussion.
So, there's mostly terminology misuse from the ARM side, mentally it's easy for us to group the two together when they're really completely different things.
Posted Nov 22, 2013 19:10 UTC (Fri)
by pwsan (subscriber, #56604)
[Link]
That misperception is being used to justify a completely unrelated agenda that has nothing to do with Linux - it relates to platform control.
Posted Nov 25, 2013 5:18 UTC (Mon)
by jcm (subscriber, #18262)
[Link] (5 responses)
I have been calling for platform standardization in this space (so that a general purpose OS can be made to run on whatever hardware platforms ship from multiple vendors), and for it to happen in as open a fashion as can possibly happen in the general sense. I would add, however, that no Operating System owns the base hardware platform. The hardware platform is owned by the vendors who ship those systems. They *absolutely* should consult with and involve the Linux community early and often, along with other OS communities as well. Nothing should happen in a vacuum, and if it does happen behind closed doors, there is a point (long since passed) at which there really needs to be more out in the open, at least as far as any specification documents that may or may not exist.
I think I'll leave it there. Please understand I don't actually want to do the smoke and daggers thing, but I will save any more comment for a happy day (soon) when there is more out in the open. Neither I, nor my employer, have any involvement over keeping anything behind closed doors - quite the opposite. But I won't followup on this thread and instead will let things happen how they need to.
Posted Nov 25, 2013 15:54 UTC (Mon)
by mjg59 (subscriber, #23239)
[Link] (4 responses)
If I'm confused about what's going on I have no incentive to do anything to support it. There's a real risk that I'll end up working on something that provides no benefit to any platforms that people are actually working on, duplicating work that's being done elsewhere or making changes that make it harder to merge pending support code.
> Please understand I don't actually want to do the smoke and daggers thing
So don't. Spend your time working on something that allows you to engage with the community instead of treating them as a resource.
Posted Nov 26, 2013 9:22 UTC (Tue)
by kleptog (subscriber, #1183)
[Link] (3 responses)
So I read it more like a call to people: if you care about how ACPI is going to be implemented, now is the time to get involved to steer the specification the way you want it.
If however, you don't care at all and are happy to implement whatever the ARM vendors come up with then the correct action is to do nothing.
Posted Nov 26, 2013 17:09 UTC (Tue)
by mjg59 (subscriber, #23239)
[Link] (2 responses)
Posted Nov 29, 2013 23:16 UTC (Fri)
by marcH (subscriber, #57642)
[Link] (1 responses)
Use your company to join and try to change that from the inside? Even if that does not work you'll at least know what's wrong.
Posted Nov 29, 2013 23:32 UTC (Fri)
by mjg59 (subscriber, #23239)
[Link]
Posted Dec 5, 2013 5:08 UTC (Thu)
by heijo (guest, #88363)
[Link] (1 responses)
Assuming of course that ACPI for ARM is made as similar to the x86 version as possible.
Posted Dec 5, 2013 5:16 UTC (Thu)
by mjg59 (subscriber, #23239)
[Link]
Posted Dec 6, 2013 10:08 UTC (Fri)
by glaesera (guest, #91429)
[Link]
Complaints
Complaints
Complaints
Complaints
Complaints
Complaints
Complaints
The arm server stuff I have seen mostly seems to integrate storage and/or network into the SoC itself with no need for PCI. The arm server market is very much focussed on "lots of small servers" not "one big server".
Pain
Pain
Pain
Pain
Pain
Pain
Pain
Pain
Complaints
Complaints
ACPI for ARM?
Sorry but I'm wondering...what, exactly, do you think is wrong in the quoted text? I don't see any contradiction between that text and what you wrote...
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
ACPI for ARM?
So Microsoft will probably not invest large sums of money for bringing ACPI-support to the ARM-architecture.