Note I only have a small part of ACPI 1.0 implemented, mainly analysis and helper functions, currently only the FACP, so please comment and contribute any knowledge about ACPI in case I'm wrong about something
My opinion on ACPI Personally, I don't like ACPI, but after some work it becomes relatively simple to implement if you're willing to read hundreds of pages of documentation. What bothers me most is the amount of memory management and paging it requires. For anything, you have to look up its header in the RSDT, then unmap the header you just looked up, map the full structure using its physical address, usually with identity mapping, set up several additional things, and finally parse the table. If it's encoded in AML, you need to run it through an AML interpreter, and that explains why it's such a mess
Why we're stuck with ACPI Because it's a standard, and it's also promoted by Intel. We'll keep using it until a better, cleaner standard emerges. Some issues were mitigated with ACPI 2.0 and later, but that introduces other problems
Why ACPI 2.0 and later are still complicated ACPI 2.0 and later aim for cleanliness and more features, but they use 64-bit pointers. That implies coexistence of versions, for example RSDP and XSDP, RSDT and XSDT, and a multitude of structures that can exist in two formats depending on the version. As a result, you have to detect which version of ACPI is running on the machine and support both sets of structures and features, which adds complexity to the same old problem
Positive aspects of ACPI Despite its initial complexity, once you build an API layer that abstracts the differences and handles mapping and architecture-specific quirks, ACPI is very useful. It allows you to identify hardware, control fans, read temperatures, and access a lot of useful system information. With a dedicated AML interpreter like LAI, uACPI, or ACPICA, you can work more comfortably, although ACPICA requires you to provide many dependencies and callbacks, it remains a robust and widely used option
Practical implementation and recommendations To implement ACPI, it's advisable to design an interface that handles physical mappings and safe unmappings, RSDP versus XSDP detection, and AML support through a maintainable interpreter. Testing on real machines and emulators helps catch edge cases, and clearly documenting memory paths and permissions facilitates future maintenance
About Q2BSTUDIO Q2BSTUDIO is a software development company specialized in custom applications and custom software. We are specialists in artificial intelligence, AI for businesses, AI agents, cybersecurity, AWS and Azure cloud services, business intelligence services, and Power BI solutions. We offer consulting to integrate firmware layers and hardware management like ACPI into embedded projects and custom operating systems, as well as development of monitoring and automation tools based on artificial intelligence
Services we offer Custom application development, custom software, integration of artificial intelligence to optimize processes, cybersecurity audits and solutions, migrations and deployments on AWS and Azure cloud, implementation of business intelligence and Power BI solutions, and creation of AI agents to automate critical tasks. If you need support to integrate ACPI, interpret AML, or design a robust API for hardware management, Q2BSTUDIO can help you
Conclusion ACPI is a necessary standard with clear utilities, but its complexity in terms of memory management, versions, and AML makes it cumbersome to implement. With the right strategy and the support of mature tools and interpreters, its complexity can be tamed. At Q2BSTUDIO, we combine experience in systems, artificial intelligence, and cybersecurity to offer custom solutions that simplify the integration of complex technologies like ACPI




