ACPI And Device Trees - Friends Or Foes?

Session information has not yet been published for this event.

50 Minute Talk
Scheduled: Wednesday, October 15, 2014 from 12:15 – 1:05pm in Room 8

One Line Summary

The audience are Linux kernel developers working on device drivers and the driver core as well as anyone interested in the interactions between the kernel and the platform firmware. Attendees can expect an overview of the problems addressed by ACPI and Device Trees, an outline of similarities and differences between the two platform firmware interfaces, a description of kernel modifications that would allow device drivers to use configuration data provided by the platform firmware in a uniform way, regardless of which firmware interface (ACPI or DT) is used by the given platform, and more.


ACPI was introduced when hardware compatibility with the IBM PC became insufficient to maintain the PC ecosystem. It allowed a single binary OS image to run on various platforms using the same CPU architecture, but not exactly hardware-compatible with one another. Today, Device Trees are used to address the same platform fragmentation problem in the ARM ecosystem. Of course, there are differences between ACPI and DT. Unlike DT, ACPI had a difficulty with passing arbitrary data to the OS, but that limitation is now being removed. With ACPI now able to provide the same data as DT, a need has arisen for a shared firmware-interface-agnostic specification of hardware properties. Similarly, the platform firmware interface access for device drivers in the OS should be unified, so the same driver can work equally well on systems with ACPI or DT. I will discuss work toward that goal in Linux.


  • Rjw

    Rafael Wysocki

    Intel OTC


    I am the maintainer of the Linux kernel’s core power management code (PM core), cpuidle, cpufreq, and the ACPI subsystem. I work at Intel Open Source Technology Center as a Software Engineer with focus on the Linux kernel. I have been actively contributing to the Linux kernel since January 2005, working on the suspend and hibernate subsystem, on power management in general (including runtime PM, PM QoS etc.), and on the ACPI and PCI subsystems.